"""""""""""""""""""""""""" " Plugins """""""""""""""""""""""""" " Install vim-plug if not found if empty(glob('~/.config/vim/autoload/plug.vim')) silent !curl -fLo ~/.config/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('~/.config/vim/plugged') " UI & Themes Plug 'sainnhe/everforest' " Everforest theme for vim Plug 'liuchengxu/vim-which-key' " Show leader mapping cheatsheet " Git integration Plug 'airblade/vim-gitgutter' " Git diff " Autocompletion, linter, syntax Plug 'neoclide/coc.nvim', {'branch': 'release'} " Tools Plug 'ap/vim-css-color' " rgb, hex color preview call plug#end() filetype plugin indent on " Allow filetype detection, plugins, indentation """"""""""""""""""""""""" " Configuration """"""""""""""""""""""""" " LSP " Navigate with tab and shift tab in the list, and enter to confirm selection inoremap coc#pum#visible() ? coc#pum#next(1) : "\" inoremap coc#pum#visible() ? coc#pum#prev(1) : "\" inoremap coc#pum#visible() ? coc#pum#confirm() : "\" " Use K to show documentation in preview window nnoremap K :call ShowDocumentation() function! ShowDocumentation() if CocAction('hasProvider', 'hover') call CocActionAsync('doHover') else call feedkeys('K', 'in') endif endfunction " Highlight the symbol and its references when holding the cursor autocmd CursorHold * silent call CocActionAsync('highlight') " Netrw (filetree built-in vim) let g:netrw_keepdir = 0 " Reload buffer usefull when moving or removing file let g:netrw_winsize = 10 " Size of filetree buffer let g:netrw_banner = 0 " Removing netrw banner let g:netrw_localcopydircmd = 'cp -r' " Changing copy command to add recursive copy " Statusline let g:currentmode={ \ 'n' : 'NORMAL ', \ 'v' : 'VISUAL ', \ 'V' : 'V·Line ', \ "\" : 'V·Block ', \ 'i' : 'INSERT ', \ 'R' : 'R ', \ 'Rv' : 'V·Replace ', \ 'c' : 'Command ', \} set laststatus=2 set statusline= " VIM Mode set statusline+=\ %{toupper(g:currentmode[mode()])}%{&spell?'[SPELL]':''}\| " File (path, modified, readonly ? ) set statusline+=%h\ %F set statusline+=%{&modified?'\ [+]':''} set statusline+=%{&readonly?'\ ':''} " Filetype set statusline+=%=%y set statusline+=\ \|\ %{&fileencoding?&fileencoding:&encoding} set statusline+=\ \|\ [%{&fileformat}\] set statusline+=\ \|\ %{coc#status()}%{get(b:,'coc_current_function','')} " Line count and percentage set statusline+=\ \|\ %l:%c set statusline+=\ [%p%%]\ let g:gruvbox_termcolors=16 " Which Key call which_key#register('', "g:which_key_map") let g:which_key_map = {} " Buffer key help let g:which_key_map.b = { \ 'name' : '+buffer', \ 'd' : 'current buffer close', \ 'a' : 'close all buffers', \ 'n' : 'go to next buffer', \ 'p' : 'go to previous buffer', \ } " Tab key help let g:which_key_map.t = { \ 'name' : '+tab', \ 't' : 'go to next tab', \ 'n' : 'open new tab', \ 'o' : 'close other tabs', \ 'c' : 'close current tab', \ 'm' : 'move tab after another', \ 'l' : 'switch between this & last tab', \ 'e' : 'open new tab with current buffer', \ } " Spell key help let g:which_key_map.s = { \ 'name' : '+spell', \ 's' : 'toggle spell check', \ 'n' : 'next spell word', \ 'p' : 'previous spell word', \ 'a' : 'add word in dict', \ '?' : 'list word alternatives', \ } " Hunk key help let g:which_key_map.h = { \ 'name' : '+git hunk', \ 'l' : 'remove highlight', \ 'p' : 'go previous hunk', \ 'n' : 'go next hunk', \ 't' : 'enable/disable gitgutter', \ 's' : 'stage hunk', \ 'u' : 'undo hunk', \ 'P' : 'preview hunk', \ } " LSP key help " Activer WhichKey pour ALE let g:which_key_map.g = { \ 'name' : '+LSP', \ 'R' : 'rename object', \ 'f' : 'format selected code', \ 'a' : 'code action selected', \ 'c' : 'code action curseur', \ 's' : 'code action buffer', \ 'qf' : 'quickfix current line', \ 'r' : 'refactor all', \ 'cl' : 'codelens action', \ }