" vim: set sw=2 ts=2 et foldlevel=0 foldmethod=marker: " if empty(glob('~/.local/share/nvim/site/autoload/plug.vim')) silent !curl -fLo ~/.local/share/nvim/site/autoload/plug.vim --create-dirs \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim autocmd VimEnter * PlugInstall --sync | source $MYVIMRC endif call plug#begin('~/.vim/plugged') " Plug 'takac/vim-hardtime' Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': './install --no-bash' } Plug 'junegunn/fzf.vim' Plug 'scrooloose/nerdtree' Plug 'jiangmiao/auto-pairs' Plug 'itchyny/lightline.vim' Plug 'nvim-lua/popup.nvim' Plug 'nvim-lua/plenary.nvim' "Plug 'nvim-cmp' Plug 'nvim-telescope/telescope.nvim' Plug 'kyazdani42/nvim-web-devicons' Plug 'hoob3rt/lualine.nvim' " {{{ if 0 " toggle 0/1 for powerline let g:lightline = { \ 'colorscheme': 'seoul256', \ 'separator': { 'left': '', 'right': '' }, \ 'subseparator': { 'left': '', 'right': '' }, \ 'component': { \ 'readonly': '%{&readonly?"":""}', \ } \ } else let g:lightline = { \ 'colorscheme': 'solarized', \ 'subseparator': { 'left': '>', 'right': '' } \ } " \ 'separator': { 'left': '▓▒░', 'right': '░▒▓' }, endif " }}} "Plug 'yuezk/vim-js' "Plug 'maxmellon/vim-jsx-pretty' ""{{{ "let g:polyglot_disabled = ['jsx'] ""}}} Plug 'sheerun/vim-polyglot' Plug 'tpope/vim-commentary' Plug 'tpope/vim-fugitive' " Plug 'joshdick/onedark.vim' " Plug 'Th3Whit3Wolf/one-nvim' Plug 'airblade/vim-rooter' "Plug 'styled-components/vim-styled-components', { 'branch': 'main' } Plug 'djoshea/vim-autoread' Plug 'bkad/camelcasemotion' Plug 'tpope/vim-surround' Plug 'maxbrunsfeld/vim-yankstack' Plug 'simeji/winresizer' Plug 'neovim/nvim-lspconfig' Plug 'hrsh7th/nvim-compe' Plug 'nvim-treesitter/nvim-treesitter', {'do': ':TSUpdate'} " Plug 'christianchiarulli/nvcode-color-schemes.vim' Plug 'smarquez1/nvcode-color-schemes.vim', { 'branch': 'patch-1' } call plug#end() " Split window nativation " CTRL + W → h = horizontal split " CTRL + W → s = vertical split nmap :wincmd k nmap :wincmd j nmap :wincmd h nmap :wincmd l " Split window resize nmap - nmap + nmap < nmap > " Color scheme configuration set termguicolors let &t_8f = "\[38;2;%lu;%lu;%lum" let &t_8b = "\[48;2;%lu;%lu;%lum" colorscheme onedark set mousefocus " Relative line numbers + current line as absolute set number relativenumber set nu rnu " Open NERDTree when directory is opened autocmd StdinReadPre * let s:std_in=1 autocmd VimEnter * if argc() == 1 && isdirectory(argv()[0]) && !exists("s:std_in") | exe 'NERDTree' argv()[0] | wincmd p | ene | exe 'cd '.argv()[0] | endif " Execute NERDTreeFind on ctrl+n function MyNerdToggle() if &filetype == 'nerdtree' || exists("g:NERDTree") && g:NERDTree.IsOpen() :NERDTreeToggle else :NERDTreeFind endif endfunction nnoremap :call MyNerdToggle() let g:NERDTreeMapActivateNode = '' let g:NERDTreeMapOpenInTab = 't' let g:NERDTreeWinPos = "left" nmap ,n :NERDTreeToggle " Space as leader let mapleader = " " " Change leader key timeout set timeoutlen=1500 " Two spaces for fzf nnoremap :Files " Enable syntax highlight syntax on " if hidden is not set, TextEdit might fail. set hidden set lazyredraw set tabstop=2 set shiftwidth=2 set shiftround " Some servers have issues with backup files, see #649 set nobackup set nowritebackup " You will have bad experience for diagnostic messages when it's default 4000. set updatetime=300 " don't give |ins-completion-menu| messages. set shortmess+=c " always show signcolumns set signcolumn=yes " Use system buffer set clipboard+=unnamedplus " Save on focus loose :au FocusLost * :wa " Spaces instead of tabs set softtabstop=2 set expandtab " Enable mouse clicks set mouse=a map map " Open git status after space gst nnoremap gst :GFiles? nnoremap gf GFiles " Telescope nnoremap ff Telescope find_files nnoremap fg Telescope live_grep nnoremap fb Telescope buffers nnoremap fh Telescope help_tags " Start searching before pressing enter set incsearch " Use camel case motion for words map w CamelCaseMotion_w map b CamelCaseMotion_b map e CamelCaseMotion_e map ge CamelCaseMotion_ge sunmap w sunmap b sunmap e sunmap ge " Remap autopair to prevent conflict with yarn-stack let g:AutoPairsShortcutToggle = '' " Import LSP configs lua require('lsp-config') " nvim-compe set completeopt=menuone,noselect let g:compe = {} let g:compe.enabled = v:true let g:compe.autocomplete = v:true let g:compe.debug = v:false let g:compe.min_length = 1 let g:compe.preselect = 'enable' let g:compe.throttle_time = 80 let g:compe.source_timeout = 200 let g:compe.incomplete_delay = 400 let g:compe.max_abbr_width = 100 let g:compe.max_kind_width = 100 let g:compe.max_menu_width = 100 let g:compe.documentation = v:true let g:compe.source = {} let g:compe.source.path = v:true let g:compe.source.buffer = v:true let g:compe.source.calc = v:true let g:compe.source.nvim_lsp = v:true let g:compe.source.nvim_lua = v:true let g:compe.source.vsnip = v:true " Show diagnostics in popup autocmd CursorHold * lua vim.diagnostic.open_float() autocmd CursorHoldI * silent! lua vim.lsp.buf.signature_help() let g:winresizer_start_key = '' " Tabline function MyTabLine() let s = '' for i in range(tabpagenr('$')) " select the highlighting if i + 1 == tabpagenr() let s .= '%#TabLineSel#' else let s .= '%#TabLine#' endif " set the tab page number (for mouse clicks) let s .= '%' . (i + 1) . 'T' " the label is made by MyTabLabel() let s .= ' %{MyTabLabel(' . (i + 1) . ')} ' if i + 1 == tabpagenr() let s .= '%#TabLineSep#ÓÇ∞' elseif i + 2 == tabpagenr() let s .= '%#TabLineSep2#ÓÇ∞' else let s .= 'ÓDZ' endif endfor " after the last tab fill with TabLineFill and reset tab page nr let s .= '%#TabLineFill#%T' " right-align the label to close the current tab page if tabpagenr('$') > 1 let s .= '%=%#TabLine#%999X' endif return s endfunction function MyTabLabel(n) let buflist = tabpagebuflist(a:n) let winnr = tabpagewinnr(a:n) let name = bufname(buflist[winnr - 1]) let label = fnamemodify(name, ':t') return len(label) == 0 ? '[No Name]' : label endfunction set tabline=%!MyTabLine()