technique:vim

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
Dernière révisionLes deux révisions suivantes
technique:vim [2021/12/14 22:49] francoisatechnique:vim [2022/01/06 15:00] francoisa
Ligne 18: Ligne 18:
  
 </code> </code>
 +
 ===== Notions vim ===== ===== Notions vim =====
  
Ligne 83: Ligne 84:
  
 </code> </code>
 +
 +==== Exemple de .vimrc ====
 +
 +<code vim>
 +set history=700
 +
 +filetype plugin on
 +filetype indent on
 +
 +set autoread
 +set ruler
 +set ignorecase
 +set smartcase
 +set hlsearch
 +set showmatch
 +
 +syntax enable
 +autocmd BufRead,BufNewFile *.vue setfiletype html
 +
 +if has("gui_running")
 +    set guioptions-=T
 +    set guioptions+=e
 +    set t_Co=256
 +    set guitablabel=%M\ %t
 +endif
 +
 +set encoding=utf8
 +set ffs=unix,dos,mac
 +
 +set nobackup
 +set nowb
 +set noswapfile
 +
 +set expandtab
 +set smarttab
 +
 +set shiftwidth=4
 +set tabstop=4
 +
 +set lbr
 +set tw=500
 +
 +set ai "Auto indent
 +set si "Smart indent
 +set wrap "Wrap lines
 +
 +" Treat long lines as break lines (useful when moving around in them)
 +map j gj
 +map k gk
 +
 +" Always show the status line
 +set laststatus=2
 +
 +" Format the status line
 +set statusline=\ %F%m%r%h\ %w\ \ CWD:\ %r%{getcwd()}%h\ \ \ Line:\ %l
 +
 +let data_dir = has('nvim') ? stdpath('data') . '/site' : '~/.vim'
 +if empty(glob(data_dir . '/autoload/plug.vim'))
 +  silent execute '!curl -fLo '.data_dir.'/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 'yuezk/vim-js'
 +Plug 'HerringtonDarkholme/yats.vim'
 +Plug 'maxmellon/vim-jsx-pretty'
 +Plug 'neoclide/coc.nvim', {'branch': 'release'}
 +Plug 'NLKNguyen/papercolor-theme'
 +Plug 'vim-airline/vim-airline'
 +Plug 'vim-airline/vim-airline-themes'
 +call plug#end()
 +
 +colorscheme PaperColor
 +set background=dark
 +set number
 +let g:airline_theme='papercolor'
 +let g:airline_powerline_fonts = 1
 +
 +set hidden
 +set nobackup
 +set nowritebackup
 +
 +set updatetime=300
 +set shortmess+=c
 +
 +" Always show the signcolumn, otherwise it would shift the text each time
 +" diagnostics appear/become resolved.
 +if has("nvim-0.5.0") || has("patch-8.1.1564")
 +  " Recently vim can merge signcolumn and number column into one
 +  set signcolumn=number
 +else
 +  set signcolumn=yes
 +endif
 +
 +" Use tab for trigger completion with characters ahead and navigate.
 +" NOTE: Use command ':verbose imap <tab>' to make sure tab is not mapped by
 +" other plugin before putting this into your config.
 +inoremap <silent><expr> <TAB>
 +      \ pumvisible() ? "\<C-n>" :
 +      \ <SID>check_back_space() ? "\<TAB>" :
 +      \ coc#refresh()
 +inoremap <expr><S-TAB> pumvisible() ? "\<C-p>" : "\<C-h>"
 +
 +function! s:check_back_space() abort
 +  let col = col('.') - 1
 +  return !col || getline('.')[col - 1]  =~# '\s'
 +endfunction
 +
 +" Use <c-space> to trigger completion.
 +if has('nvim')
 +  inoremap <silent><expr> <c-space> coc#refresh()
 +else
 +  inoremap <silent><expr> <c-@> coc#refresh()
 +endif
 +
 +" Make <CR> auto-select the first completion item and notify coc.nvim to
 +" format on enter, <cr> could be remapped by other vim plugin
 +inoremap <silent><expr> <cr> pumvisible() ? coc#_select_confirm()
 +                              \: "\<C-g>u\<CR>\<c-r>=coc#on_enter()\<CR>"
 +
 +" Use `[g` and `]g` to navigate diagnostics
 +" Use `:CocDiagnostics` to get all diagnostics of current buffer in location list.
 +nmap <silent> [g <Plug>(coc-diagnostic-prev)
 +nmap <silent> ]g <Plug>(coc-diagnostic-next)
 +
 +" GoTo code navigation.
 +nmap <silent> gd <Plug>(coc-definition)
 +nmap <silent> gy <Plug>(coc-type-definition)
 +nmap <silent> gi <Plug>(coc-implementation)
 +nmap <silent> gr <Plug>(coc-references)
 +
 +" Use K to show documentation in preview window.
 +nnoremap <silent> K :call <SID>show_documentation()<CR>
 +
 +function! s:show_documentation()
 +  if (index(['vim','help'], &filetype)>= 0)
 +    execute 'h '.expand('<cword>')
 +  elseif (coc#rpc#ready())
 +    call CocActionAsync('doHover')
 +  else
 +    execute '!' . &keywordprg . " " . expand('<cword>')
 +  endif
 +endfunction
 +
 +" Highlight the symbol and its references when holding the cursor.
 +autocmd CursorHold * silent call CocActionAsync('highlight')
 +
 +" Symbol renaming.
 +nmap <leader>rn <Plug>(coc-rename)
 +
 +" Formatting selected code.
 +xmap <leader> <Plug>(coc-format-selected)
 +nmap <leader> <Plug>(coc-format-selected)
 +
 +augroup mygroup
 +  autocmd!
 +  " Setup formatexpr specified filetype(s).
 +  autocmd FileType typescript,json setl formatexpr=CocAction('formatSelected')
 +  " Update signature help on jump placeholder.
 +  autocmd User CocJumpPlaceholder call CocActionAsync('showSignatureHelp')
 +augroup end
 +
 +" Applying codeAction to the selected region.
 +" Example: `<leader>aap` for current paragraph
 +xmap <leader> <Plug>(coc-codeaction-selected)
 +nmap <leader> <Plug>(coc-codeaction-selected)
 +
 +" Remap keys for applying codeAction to the current buffer.
 +nmap <leader>ac  <Plug>(coc-codeaction)
 +" Apply AutoFix to problem on the current line.
 +nmap <leader>qf  <Plug>(coc-fix-current)
 +
 +" Map function and class text objects
 +" NOTE: Requires 'textDocument.documentSymbol' support from the language server.
 +xmap if <Plug>(coc-funcobj-i)
 +omap if <Plug>(coc-funcobj-i)
 +xmap af <Plug>(coc-funcobj-a)
 +omap af <Plug>(coc-funcobj-a)
 +xmap ic <Plug>(coc-classobj-i)
 +omap ic <Plug>(coc-classobj-i)
 +xmap ac <Plug>(coc-classobj-a)
 +omap ac <Plug>(coc-classobj-a)
 +
 +" Remap <C-f> and <C-b> for scroll float windows/popups.
 +if has('nvim-0.4.0') || has('patch-8.2.0750')
 +  nnoremap <silent><nowait><expr> <C-f> coc#float#has_scroll() ? coc#float#scroll(1) : "\<C-f>"
 +  nnoremap <silent><nowait><expr> <C-b> coc#float#has_scroll() ? coc#float#scroll(0) : "\<C-b>"
 +  inoremap <silent><nowait><expr> <C-f> coc#float#has_scroll() ? "\<c-r>=coc#float#scroll(1)\<cr>" : "\<Right>"
 +  inoremap <silent><nowait><expr> <C-b> coc#float#has_scroll() ? "\<c-r>=coc#float#scroll(0)\<cr>" : "\<Left>"
 +  vnoremap <silent><nowait><expr> <C-f> coc#float#has_scroll() ? coc#float#scroll(1) : "\<C-f>"
 +  vnoremap <silent><nowait><expr> <C-b> coc#float#has_scroll() ? coc#float#scroll(0) : "\<C-b>"
 +endif
 +
 +" Use CTRL-S for selections ranges.
 +" Requires 'textDocument/selectionRange' support of language server.
 +nmap <silent> <C-s> <Plug>(coc-range-select)
 +xmap <silent> <C-s> <Plug>(coc-range-select)
 +
 +" Add `:Format` command to format current buffer.
 +command! -nargs=0 Format :call CocAction('format')
 +
 +" Add `:Fold` command to fold current buffer.
 +command! -nargs=? Fold :call     CocAction('fold', <f-args>)
 +
 +" Add `:OR` command for organize imports of the current buffer.
 +command! -nargs=0 OR   :call     CocAction('runCommand', 'editor.action.organizeImport')
 +
 +" Add (Neo)Vim's native statusline support.
 +" NOTE: Please see `:h coc-status` for integrations with external plugins that
 +" provide custom statusline: lightline.vim, vim-airline.
 +set statusline^=%{coc#status()}%{get(b:,'coc_current_function','')}
 +
 +" Mappings for CoCList
 +" Show all diagnostics.
 +nnoremap <silent><nowait> <space> :<C-u>CocList diagnostics<cr>
 +" Manage extensions.
 +nnoremap <silent><nowait> <space> :<C-u>CocList extensions<cr>
 +" Show commands.
 +nnoremap <silent><nowait> <space> :<C-u>CocList commands<cr>
 +" Find symbol of current document.
 +nnoremap <silent><nowait> <space> :<C-u>CocList outline<cr>
 +" Search workspace symbols.
 +nnoremap <silent><nowait> <space> :<C-u>CocList -I symbols<cr>
 +" Do default action for next item.
 +nnoremap <silent><nowait> <space> :<C-u>CocNext<CR>
 +" Do default action for previous item.
 +nnoremap <silent><nowait> <space> :<C-u>CocPrev<CR>
 +" Resume latest coc list.
 +nnoremap <silent><nowait> <space> :<C-u>CocListResume<CR>
 +
 +
 +</code>
 +
 +===== Plugin et Completion =====
 +
 +==== Installation de vim-plug ====
 +
 +source : https://github.com/junegunn/vim-plug
 +<code>
 +curl -fLo
 +~ /.vim/autoload/plug.vim --create-dirs \
 +    https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
 +
 +</code>
 +
 +=> Création d'un dossier .vim/autoload/ et copie de plug.vim dedans.
 +
 +Dans .vimrc, rajouter en fin de fichier (ici un plugin vim-easily-align) :
 +
 +<code>
 +call plug#begin()
 +" The default plugin directory will be as follows:
 +  - Vim (Linux/macOS): '~/.vim/plugged'
 +  - Vim (Windows): '~/vimfiles/plugged'
 +  - Neovim (Linux/macOS/Windows): stdpath('data') . '/plugged'
 +
 +" Shorthand notation; fetches https://github.com/junegunn/vim-easy-align
 +Plug 'junegunn/vim-easy-align'
 +
 +" Initialize plugin system
 +call plug#end()
 +
 +</code>
 +==== Installation de coc.nvim ====
 +
 +Installer nodejs auparavant : https://github.com/nodesource/distributions/blob/master/README.md#debinstall
 +
 +<code>
 +# Using Ubuntu
 +curl -fsSL https://deb.nodesource.com/setup_14.x | sudo -E bash -
 +sudo apt-get install -y nodejs
 +
 +</code>
 +
 +Modifier .vimrc et rajouter :
 +<code>
 +
 +call plug#begin()
 +
 +Plug 'neoclide/coc.nvim', {'branch': 'release'}
 +
 +call plug#end()
 +
 +</code>
 +
 +Puis lancer vim et installer le plugin
 +
 +==== Installation de complétion pour python ====
 +
 +==== Plusieurs plugin pour python : coc-jedi, coc-pyright, coc-python (obsolète) ====
 +
 +Nombreux extensions : https://github.com/neoclide/coc.nvim/wiki/Using-coc-extensions
 +
 +Et relancer vim et lancer :
 +
 +<code>
 +:CocInstall coc-jedi
 +
 +</code>
 +
 +ou :CocInstall coc-pyright
  
  
  • technique/vim.txt
  • Dernière modification : 2024/04/02 15:08
  • de 127.0.0.1