"""""""""""""""""""""""""" " Plugins """""""""""""""""""""""""" " Install vim-plug if not found if empty(glob('~/.vim/autoload/plug.vim')) silent !curl -fLo ~/.vim/autoload/plug.vim --create-dirs \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim endif " Run PlugInstall if there are missing plugins autocmd VimEnter * if len(filter(values(g:plugs), '!isdirectory(v:val.dir)')) \| PlugInstall --sync | source $MYVIMRC \| endif call plug#begin('~/.vim/plugged') " UI & Themes Plug 'joshdick/onedark.vim' " Onedark themes for vim Plug 'vim-airline/vim-airline' " Vim statusline Plug 'preservim/nerdtree' " Filetree in vim Plug 'ryanoasis/vim-devicons' " Icons for vim Plug 'tiagofumo/vim-nerdtree-syntax-highlight' " Syntax in nerdtree for files extension " Git integration Plug 'airblade/vim-gitgutter' " Git diff " Autocompletion, linter, syntax Plug 'prabirshrestha/vim-lsp' " Linter & formatter Plug 'mattn/vim-lsp-settings' " Automatic vim-lsp installation Plug 'prabirshrestha/asyncomplete.vim' " Autocompletion Plug 'prabirshrestha/asyncomplete-lsp.vim' " Autocompletion & connection with vim-lsp call plug#end() filetype plugin indent on " Allow filetype detection, plugins, indentation """"""""""""""""""""""""" " Configuration """"""""""""""""""""""""" " VIM airline let g:airline_theme='onedark' " Status line color & configuration if !exists('g:airline_symbols') let g:airline_symbols = {} endif let g:airline_symbols.colnr = ' ㏇:' let g:airline_symbols.colnr = ' β„…:' let g:airline_symbols.crypt = 'πŸ”’' let g:airline_symbols.linenr = ' ☰' let g:airline_symbols.linenr = ' ␊:' let g:airline_symbols.linenr = ' ␀:' let g:airline_symbols.linenr = ' ΒΆ' let g:airline_symbols.maxlinenr = '' let g:airline_symbols.maxlinenr = ' ㏑' let g:airline_symbols.branch = 'βŽ‡' let g:airline_symbols.paste = 'ρ' let g:airline_symbols.paste = 'Þ' let g:airline_symbols.paste = 'βˆ₯' let g:airline_symbols.spell = 'Ꞩ' let g:airline_symbols.notexists = 'Ι†' let g:airline_symbols.notexists = 'βˆ„' let g:airline_symbols.whitespace = ' Ξ' " VIM lsp let g:lsp_diagnostics_echo_cursor = 1 let g:lsp_diagnostics_virtual_text_enabled = 0 " NerdTree let NERDTreeShowHidden=1 " Show hidden files let NERDTreeQuitOnOpen = 1 " Close a nerdtree after opening the file " Close the tab if NERDTree is the only window remaining in it. autocmd BufEnter * if winnr('$') == 1 && exists('b:NERDTree') && b:NERDTree.isTabTree() | quit | endif " If another buffer tries to replace NERDTree, put it in the other window, and bring back NERDTree. autocmd BufEnter * if bufname('#') =~ 'NERD_tree_\d\+' && bufname('%') !~ 'NERD_tree_\d\+' && winnr('$') > 1 | \ let buf=bufnr() | buffer# | execute "normal! \w" | execute 'buffer'.buf | endif " If more than one window and previous buffer was NERDTree, go back to it. autocmd BufEnter * if bufname('#') =~# "^NERD_tree_" && winnr('$') > 1 | b# | endif