Afficher la pageAnciennes révisionsLiens de retourHaut de page Cette page est en lecture seule. Vous pouvez afficher le texte source, mais ne pourrez pas le modifier. Contactez votre administrateur si vous pensez qu'il s'agit d'une erreur. ====== Vim ====== * http://vimcasts.org/ * https://tuppervim.org/ * https://www.youtube.com/watch?v=fnocbpK_vnw * [[http://sed.bordeaux.inria.fr/org/vim_prog.html]] * [[https://seniormars.com/posts/neovim-workflow/|An Experienced (Neo)Vimmer's Workflow]] * https://linuxhandbook.com/vim/ * [[https://ankursinha.in/2017/09/19/writing-latex-well-in-vim.html|Writing LaTeX well in Vim]] ==== Ouvrir un fichier ==== === Via SSH === <code bash> vim scp://remoteuser@server.tld//absolute/path/to/document </code> === Préciser la ligne === <code vim> vim file.txt +324 </code> ---- ==== Raccourcis ==== * [[https://vim.rtorr.com/lang/fr_fr/]] * [[http://dept-info.labri.fr/~thibault/vim.html]] * [[http://gnulinux.guru/vim_cheatsheet.pdf]] * [[https://medium.com/@schtoeffel/you-don-t-need-more-than-one-cursor-in-vim-2c44117d51db]] * ''='': réajuste l'indentation * ''Ctrl+A'': incrémente le nombre sous le curseur, ''Ctrl+X'' décrémente * ''L'': place le curseur en haut de l'écran, ''H'' en bas et ''M'' au milieu * ''cf_'': édite jusqu'à l'underscore inclus * ''ct_'': édite jusqu'à l'underscore exclus * ''3s'': édite trois caractères (pareil que ''c3l'') * en mode insertion, ''Ctrl+R %'' insère le nom du fichier courant ([[https://vim.fandom.com/wiki/Get_the_name_of_the_current_file|Source]]) * ''Ctrl+L'' permet de rafraîchir l'affichage, et donc la coloration syntaxique (utile s'il y avait avant une ligne qui la fait planter). * en mode visuel, ''g C-g'' permet d'avoir des statistiques sur ce qui est sélectionné (nombre de lignes, ... [[https://stackoverflow.com/questions/7262536/vim-count-lines-in-selected-range|source]]). Si rien ne s'affiche, tenter la commande '':set cmdheight=2'' ([[https://vi.stackexchange.com/questions/45226/v-g-ctrl-g-in-neovim-does-not-work|source]]) * ''Maj+R'' passe en mode remplacement: équivalent du mode insertion, mais le curseur écrase ce qui est déjà présent. * Pour coller tout en remplaçant : ''Maj+R C-r "'' ([[https://stackoverflow.com/questions/25413220/pasting-with-overwrite-in-vim|source]]) * en mode insertion, ''C-x C-g'' permet de compléter les chemins/noms de fichiers. === Fichiers sous le curseur === [[https://vim.fandom.com/wiki/Open_file_under_cursor|source]] * ''gf'' ouvre le fichier dans un nouveau buffer. ''Ctrl+O'' permet de revenir au fichier précédemment ouvert. * ''Ctrl+w f'': ouvre le fichier dans une nouvelle fenêtre * ''Ctrl+w gf'': ouvre le fichier dans un nouvel onglet === Rechercher / remplacer === Dans tout le document: <code vim> :%s/old/new/g </code> Ajouter ''c'' demande confirmation avant chaque remplacement. ''\C'' juste avant ''old'' permet de rechercher en respectant la casse. ''%'' signifie tout le document (en réalité un raccourci pour ''1,$''). Il est possible d'utiliser ''.,$'' pour chercher uniquement entre le curseur et la fin du document (''.'' indique la ligne courante du curseur). Il est également possible de sélectionner des lignes en mode Visuel et ensuite appuyer sur '':''. [[https://stackoverflow.com/questions/7598133/vim-global-search-replace-starting-from-the-cursor-position|Source]] ''\<mot\>'': recherche exactement ''mot'' (sans caractères alphanumériques avant ou après). Pour remplacer par un retour à la ligne, utiliser ''\r''. * [[https://vim.fandom.com/wiki/Search_and_replace]] === Désactiver le surlignage de la recherche === <code vim> :noh </code> === Rechercher dans plusieurs fichiers === <code vim> :vimgrep /pattern/ file </code> Recherche récursive: utiliser ''%%./**/*.c%%'' Ensuite, pour afficher les résultats, utiliser '':cw'' ou '':copen''. * [[https://vim.fandom.com/wiki/Find_in_files_within_Vim]] * [[https://lostechies.com/derickbailey/2010/05/11/vim-grep-find-all-occurrences-of-text-in-your-project/]] === Utiliser un ancien yank === Tous les yanks sont placés dans des registres. Utiliser '':reg'' pour les visualiser. Pour coller un ancien yank, il faut insérer le contenu du registre: ''"2p'' pour coller le contenu du registre #2. [[https://vim.fandom.com/wiki/Remembering_previous_deletes/yanks|Source]] === Utiliser le mot sous le curseur dans une commande === En saisissant une commande, utiliser le raccourci ''Ctrl+R, Ctrl+W''. [[https://vim.fandom.com/wiki/Word_under_cursor_for_command|Source]] === Recharger un fichier === Recharger dans Vim un fichier ouvert, mais modifié par un autre programme: <code vim> :e # raccourci pour :edit </code> === Déplacements === [[https://vim.fandom.com/wiki/Moving_to_matching_braces|Source]] Aller à l'accolade/parenthèse/crochet correspondant: ''%''. === Manipuler les onglets === [[https://www.techrepublic.com/blog/linux-and-open-source/use-tabs-to-open-multiple-files-in-vim/|Source]] Ouvrir plusieurs fichiers ([[https://superuser.com/questions/486532/how-to-open-files-in-vertically-horizontal-split-windows-in-vim-from-the-command|source]]) : <code bash> vim -p file1 file2 ... # un fichier par onglet vim -o file1 file2 ... # un fichier split horizontal vim -O file1 file2 ... # un fichier split vertical </code> * '':tabnew [fichier]'': ouvre un nouvel onglet * '':tabn'': aller à l'onglet suivant * '':tabp'': aller à l'onglet précédent * '':tabr'': aller au premier onglet * '':tabl'': aller au dernier onglet * '':tabs'': affiche la liste des onglets ouverts * '':wa'': sauvegarde tous les onglets * '':xa'': sauvegarde tous les onglets et quitte * '':q'': ferme un onglet === Multi-fenêtrage === * [[https://www.cs.oberlin.edu/~kuperman/help/vim/windows.html]] * [[https://linuxfr.org/forums/astucesdivers/posts/%C3%A9diteurvim-utiliser-les-splits]] * '':split filename'': ouvre ''filename'' en scindant la fenêtre verticalement * ''Ctrl+w flèche'': change la fenêtre sélectionnée * ''Ctrl+w Ctrl+w'': change la fenêtre sélectionnée en cyclant sur les fenêtres * ''Ctrl+w _'': maximize la fenêtre maintenant * ''Ctrl+w ='': rend chaque fenêtre de taille identique * ''Ctrl+w +/-'': augmente/réduit la taille de la fenêtre de une ligne (préfixer du nombre de lignes souhaités) * ''Ctrl+x >/<'': augmente/réduit la taille de la fenêtre de une colonne (préfixer du nombre de colonnes souhaités) * '':vsplit file'': ouvre ''file'' mais en scindant la fenêtre horizontalement * '':hide'': ferme la fenêtre actuelle * '':only'': garde uniquement la fenêtre actuelle ouverte * '':ls'': liste les buffers * '':b 2'': ouvre le deuxième buffer dans la fenêtre sélectionnée * ''Ctrl+w Maj+H/J/K/L'': déplace la fenêtre vers la direction de la lettre ([[https://stackoverflow.com/questions/1269603/to-switch-from-vertical-split-to-horizontal-split-fast-in-vim|Source]]). Utile pour passer d'un split horizontal vers vertical ou vice-versa. === Statistiques === [[https://vim.fandom.com/wiki/Word_count|Source]] Sélectionner la zone de texte dont on souhaite avoir les statistiques, ''g'' puis ''Ctrl+g''. === Lier les curseurs de plusieurs splits === [[https://stackoverflow.com/questions/18737398/how-to-synchronize-cursor-movement-in-multiple-split-windows|Source]] Avec deux splits déjà ouverts, on peut générer un diff de ces splits, ce qui liera les curseurs des deux splits. Il faut alors faire '':diffthis'' dans chaque split. On annule avec '':diffoff'' pour chaque split ou '':diffoff!'' prendra effet sur tous les splits. Si on ne veut pas de diff, il faut faire '':set scrollbind'' dans chaque split. Ainsi les splits déroulent de façon synchronisée, mais pas la ligne indiquant l'emplacement du curseur. On annule avec '':set noscrollbind''. === Insérer sur plusieurs lignes === [[https://www.ostechnix.com/comment-multiple-lines-vim-editor/|Source]] - ''Ctrl+V'' permet de passer en mode //Visual Block//. - ''DOWN'' pour sélectionner les lignes. - ''Shift+i'' pour passer en mode //Insertion// sur la première ligne. - Faire la modification. - ''Echap'' pour appliquer à toutes les lignes sélectionnées. === Utiliser le terminal depuis Vim === Accès au terminal avec '':term'' ou '':terminal''. * ''Ctrl+w Maj+N'': convertit la fenêtre en mode Normal, utile pour pouvoir copier du texte par exemple. Retour au mode Insertion avec ''i'' Pour que le raccourci '', t'' ouvre le terminal dans un split vertical, ajouter au fichier ''~/.vimrc'': <code vim> nnoremap <silent> ,t :vert term<CR> </code> === Sessions === Sauvegarder sa session de travail: '':mks'' (il est possible de donner un nom de fichier en paramètre dans lequel la session sera sauvegardée) Restaurer sa session: ''vim -S'' ou ''vim -S [fichier de session]'' ou '':source [fichier de session]''. * [[https://bocoup.com/blog/sessions-the-vim-feature-you-probably-arent-using]] * [[https://dockyard.com/blog/2018/06/01/simple-vim-session-management-part-1]] === Limiter la largeur d'un texte === [[https://thoughtbot.com/blog/wrap-existing-text-at-80-characters-in-vim]] <code vim> :set textwidth=80 </code> Sélectionner en mode Visuel le texte à reformater et reformater avec le raccourci ''gq''. === Désactiver le retour à la ligne automatique === [[https://stackoverflow.com/questions/2280030/how-to-stop-line-breaking-in-vim]] <code vim> :set nowrap </code> === Listes Quickfix et Location === [[https://medium.com/@lakshmankumar12/quickfix-and-location-list-in-vim-ca0292ac894d]] La liste //Quickfix// contient les erreurs rapportées par ''make'' et ce genre d'outils. * '':copen'' * '':cnext'' * '':cprev'' * '':cclose'' La liste //Location// contient une liste d'emplacements, que ce soient les résultats de '':vimgrep'' ou Syntastic: * '':lopen'' * '':lnext'' * '':lprev'' === Buffers === * [[https://vim.fandom.com/wiki/Vim_buffer_FAQ]] Sans utiliser le plugin [[#bufexplorer|BufExplorer]]: * '':buffers'', '':ls'', '':files'': liste les buffers ouverts * '':bprevious'', '':bp'': bascule sur le buffer précédent * '':bnext'', '':bn'': bascule sur le buffer suivant * '':bfirst'' et '':blast'' === Formatages === Un fichier JSON ([[https://coderwall.com/p/faceag/format-json-in-vim|source]]) : <code vim> :%!python -m json.tool </code> Pour un fichier XML, sélectionner les lignes en mode visuel, puis ([[https://stackoverflow.com/questions/21408222/vim-indent-xml-file|source]]) : <code vim> !xmllint --format - </code> === Changer le format d'un fichier === Basculer entre les formats DOS/Unix. Connaître le format actuel du fichier: <code vim> :set ff? </code> Changer le format: <code vim> :set ff=unix :set ff=dos </code> === Changer l'encodage === Pour enregistrer un fichier en UTF-8 ([[https://stackoverflow.com/questions/778069/how-can-i-change-a-files-encoding-with-vim|source]]) : <code vim> :write ++enc=utf-8 </code> === Préciser la syntaxe d'un fichier pour la coloration syntaxique === Un fichier ''foo.c.bar'' ne sera pas colorié car il n'a pas la bonne extension finale. On peut alors exécuter ([[https://vim.fandom.com/wiki/Forcing_Syntax_Coloring_for_files_with_odd_extensions|source]]): <code vim> :set syntax=c </code> On peut configurer la coloration syntaxique pour les fichiers avec une extension particulière: <code vim> autocmd BufNewFile,BufRead *.gnuplot set syntax=gnuplot </code> === Voir les modifications qui vont être enregistrées === Faire un diff entre ce qu'il y a dans le buffer, et ce qui est sur le disque ([[https://stackoverflow.com/questions/749297/can-i-see-changes-before-i-save-my-file-in-vim|source]]): <code vim> :w !diff % - </code> === Sauvegarder en sudo === [[https://stackoverflow.com/questions/2600783/how-does-the-vim-write-with-sudo-trick-work|Source]] <code vim> :w !sudo tee % </code> === Lister les derniers fichiers édités avec Vim ==== [[https://stackoverflow.com/questions/309723/view-a-list-of-recent-documents-in-vim|Source]] '':ol'' === Convertir les formats d'indentation === Convertir 4 espaces en tabulations ([[https://stackoverflow.com/questions/9104706/how-can-i-convert-leading-spaces-to-tabs-in-vim-or-linux|source]]) : <code vim> :set tabstop=4 " To match the sample file :set noexpandtab " Use tabs, not spaces :%retab! " Retabulate the whole file </code> === Indiquer des options à Vim par fichier === Pour par exemple préciser le langage utilisé dans un fichier, ajouter un commentaire : <code bash> # vim: ft=ruby </code> ==== ctags ==== * [[https://andrew.stwrt.ca/posts/vim-ctags/]] * [[https://vim.fandom.com/wiki/Browsing_programs_with_tags]] Sous Debian, installer le paquet ''exuberant-ctags''. Ensuite, à la racine du projet, faire: <code bash> ctags -R . </code> Possibilité d'exclure des dossiers avec ''%%--%%exclude=folder'' (rajouter autant que besoin). Placer le fichier dans un dossier particulier: <code bash> ctags --tag-relative=yes -R -f ./.git/ctags . </code> ''%%--%%tag-relative=yes'' permet d'utiliser des chemins relatifs par rapport à où est exécutée la commande. À utiliser si on indique à Vim que le fichier de tags est dans un sous-dossier d'un projet. Ajouter dans la configuration de Vim <code vim> set tags=./tags,tags,.git/ctags; " cherche le fichier tags dans le dossier du fichier en cours d'édition, puis cherche tags dans tous les dossiers parents, finalement cherche .git/ctags dans tous les dossiers parents </code> ==== vimdiff ==== Cf [[#lier_les_curseurs_de_plusieurs_splits|Lier les curseurs des splits]] Raccourcis ([[https://medium.com/@guillaumefenollar/vimdiff-le-diff-id%C3%A9al-pour-les-utilisateurs-de-vim-cb8295cf513e|source]]): * ''do'': utiliser le diff de l'autre split (//obtain//) * ''dp'': utiliser ce diff dans l'autre split (//push//) * les raccourcis pour passer d'un changement Git à l'autre sont utilisables ==== Configuration ==== === Copier vers le presse-papier du système === [[http://vimcasts.org/blog/2013/11/getting-vim-with-clipboard-support/|Source 1]], [[https://unix.stackexchange.com/questions/12535/how-to-copy-text-from-vim-to-an-external-program|Source 2]] Vérifier avec ''vim --version'' que ''xterm_clipboard'' est activé (un ''+'' devant). Si ce n'est pas le cas, installer le paquet ''vim-gtk3''. Ensuite, il suffit d'utiliser les commandes classiques de Vim pour copier. === Créer des commandes === [[https://superuser.com/a/93497|Source]] Ajouter dans le ''vimrc'': <code vim> command DeleteFirst 1delete " la commande :DeleteFirst appellera :1delete, qui supprime la première ligne </code> === Fichier de configuration === <file vim /etc/vim/vimrc> let mapleader = "," let g:mapleader = "," let maplocalleader = "," " for vimtex (see http://learnvimscriptthehardway.stevelosh.com/chapters/06.html) set hidden set number set tabstop=4 set expandtab set shiftwidth=4 set smartindent set autoindent set backspace=indent,eol,start set shiftround set ignorecase set showmode set ruler set cursorline " souligne la ligne actuelle syntax on colorscheme desert "set colorcolumn=80 "display a vertical line set hlsearch "highlight search results set incsearch set showmatch "show matching parenthesis set mouse=a "support mouse set splitbelow " ouvre les splits horizontaux en bas de l'écran set splitright " ouvre les splits verticaux à droite de l'écran set wildmenu set wildmode=longest:full,full map <leader><Left> :tabp<cr> map <leader><Right> :tabn<cr> map <leader>h :tabp<cr> map <leader>l :tabn<cr> " Display hidden chars: set list set listchars=tab:>.,trail:.,extends:#,nbsp:. " Creates a group ExtraWhitespace hi ExtraWhitespace ctermbg=red guibg=red " Highlight trailing whitespaces autocmd Syntax * syn match ExtraWhitespace /\s\%#\@<!$/ </file> On peut faire un retour à la ligne dans le fichier de configuration en plaçant un antislash au début des nouvelles lignes ([[https://stackoverflow.com/a/10831623|source]]). Sources: * [[https://nvie.com/posts/how-i-boosted-my-vim/]] * [[https://doc.ubuntu-fr.org/vim]] * [[https://mediatemple.net/community/products/dv/204644480/enabling-vi-syntax-colors]] * [[http://marcgg.com/blog/2016/03/01/vimrc-example/]] * [[http://stevelosh.com/blog/2010/09/coming-home-to-vim/]] * [[http://www.philippevirouleau.fr/vim-ide]] * [[https://thoughtbot.com/blog/vim-splits-move-faster-and-more-naturally#more-natural-split-opening]] * [[https://coderoncode.com/posts/vim-is-the-perfect-ide]] * [[https://github.com/mhinz/dotfiles/blob/master/.vim/vimrc]] === Désactiver les sons === [[https://stackoverflow.com/questions/18589352/how-to-disable-vim-bells-sounds|Source]] Dans le ''.vimrc'' et ''.gvimrc'' si besoin: <code vim> set belloff=all </code> === Ignorer les fichiers de configuration === [[https://evanhahn.com/ignore-vimrc-with-vim/|Source]] <code bash> vim -u NONE fichier </code> ==== Plugins ==== === Installer Vundle pour gérer les plugins === [[https://blog.pabuisson.com/2014/07/vim-vundle-gestion-plugins/|Source]] <code bash> git clone https://github.com/gmarik/Vundle.vim.git ~/.vim/bundle/Vundle.vim </code> Adapter son ''.vimrc'': <file vim ~/.vimrc> set nocompatible " Nécessaire filetype off " Nécessaire " Ajout de Vundle au runtime path et initialisation set rtp+=~/.vim/bundle/Vundle.vim call vundle#begin() " On indique à Vundle de s'auto-gérer :) Plugin 'gmarik/Vundle.vim' " Nécessaire " " C'est ici que vous allez placer la liste des plugins que Vundle doit gérer " call vundle#end() " Nécessaire filetype plugin indent on " Nécessaire " ... " Le reste de votre .vimrc " ... </file> Sauvegarder le fichier, puis, depuis Vim **(A faire pour installer les plugins)**: <code vim> :source ~/.vimrc :PluginInstall </code> Pour supprimer un plugin : enlever la ligne ''Plugin ...'' dans le fichier ''~/.vimrc'' et lancer '':PluginClean''. === lightline.vim === Une barre en bas plus sympa. [[https://github.com/itchyny/lightline.vim|Source]] Ajouter dans le fichier ''~/.vimrc'': <code vim> Plugin 'itchyny/lightline.vim' </code> Si la barre n'est pas correcte, ajouter dans le ''~/vimrc'': <code vim> set laststatus=2 </code> Afficher la branche Git dans la barre: installer le plugin ''itchyny/vim-gitbranch'' et rajouter à la fin de ''~/.vimrc'': <code vim> let g:lightline = { \ 'active': { \ 'left': [ [ 'mode', 'paste' ], \ [ 'gitbranch', 'readonly', 'filename', 'modified' ] ] \ }, \ 'component_function': { \ 'gitbranch': 'gitbranch#name' \ }, \ } </code> [[https://github.com/itchyny/vim-gitbranch|Source]] === vim-gitgutter === [[https://github.com/airblade/vim-gitgutter]] Ajouter le plugin ''airblade/vim-gitgutter'', l'installer, et réduire le temps d'actualisation dans le ''.vimrc'': <code vim> set updatetime=100 </code> * '']c'': va à la zone modifiée suivante (next hunk) * ''[c'': va à la zone modifiée précédente (previous hunk) * ''<leader>hu'': restaure le hunk tel qu'il était avant la modification Si la colonne est toujours noire (constaté sur MacOS, avec un thème blanc) ([[https://github.com/airblade/vim-gitgutter/issues/164#issuecomment-42631840|source]]): <code vim> highlight clear SignColumn highlight GitGutterAdd ctermfg=green highlight GitGutterChange ctermfg=yellow highlight GitGutterDelete ctermfg=red highlight GitGutterChangeDelete ctermfg=yellow </code> === NERDTree et nerdtree-git-plugin === <code vim> Plugin 'scrooloose/nerdtree' Plugin 'Xuyuanp/nerdtree-git-plugin' autocmd vimenter * NERDTree " automatically open NERDTree " NERDTree starts when vim is called without argument autocmd StdinReadPre * let s:std_in=1 autocmd VimEnter * if argc() == 0 && !exists("s:std_in") | NERDTree | endif 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 | endif " Close vim if NERDTree is the last open autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif let NERDTreeMapActivateNode='<space>' " ouvre un fichier et un noeud avec espace map <leader>nn :NERDTreeToggle<cr> " ouvre et ferme NERDTree avec :nn let NERDTreeIgnore=['\.o$', '^__pycache__$[[dir]]'] " n'affiche pas les fichier .o et les dossiers __pycache__ </code> === BufExplorer === Facilite la gestion des plugins ouverts. Ajouter le plugin ''jlanzarotta/bufexplorer''. [[https://github.com/jlanzarotta/bufexplorer/blob/master/doc/bufexplorer.txt|Documentation]] <code vim> let g:bufExplorerDefaultHelp=0 let g:bufExplorerShowRelativePath=1 let g:bufExplorerFindActive=1 let g:bufExplorerSortBy='name' map <leader>o :BufExplorer<cr> </code> Le plugin s'active avec '':o''. Ensuite: * ''o'' ou ''enter'' ouvre le fichier sous le curseur dans la fenêtre précédente * ''F'' ouvre le fichier sous le curseur dans un split horizontal, au-dessus de la fenêtre actuelle * ''f'' ouvre le fichier sous le curseur dans un split horizontal, en-dessous de la fenêtre actuelle * ''V'' ouvre le fichier sous le curseur dans un split vertical, à gauche de la fenêtre actuelle * ''v'' ouvre le fichier sous le curseur dans un split vertical, à droite de la fenêtre actuelle * ''t'' ouvre le fichier sous le curseur dans un nouvel onglet * ''u'' affiche/cache les fichiers cachés === CtrlP === Permet de trouver facilement des fichiers. Installer le plugin ''kien/ctrlp.vim'' <code vim> let g:ctrlp_working_path_mode = 'ra' let g:ctrlp_max_height = 20 let g:ctrlp_custom_ignore = 'node_modules\|^\.DS_Store\|^\.git\|^\.coffee' map <leader>b :CtrlPBuffer<cr> map <leader>m :CtrlPMRUFiles<cr> map <leader>f :CtrlP<cr> </code> Le plugin s'active avec ''Ctrl+P''. === NERDCommenter === Permet de facilement commenter du code. Installer le plugin ''scrooloose/nerdcommenter''. <code vim> " Use compact syntax for prettified multi-line comments let g:NERDCompactSexyComs = 1 </code> Raccourcis: * ''[count]<leader>c<space>'' toggle les commentaires === YouCompleteMe === Plugin de complétion automatique du code. Installer le plugin ''ycm-core/YouCompleteMe''. <code bash> cd ~/.vim/bundle/YouCompleteMe python3 install.py --clangd-completer </code> (plus de détails sur le [[https://github.com/ycm-core/YouCompleteMe|dépôt GitHub]]) <code vim> let g:ycm_autoclose_preview_window_after_completion = 1 let g:ycm_auto_hover = '' " désactive l'affichage du type de la variable lors du passage du curseur </code> Activation avec ''Tab'' en mode Insertion. === VimTeX === Permet de faire du LaTeX avec Vim. Installer le plugin ''lervag/vimtex'' et le programme ''latexmk''. Compilation automatique lors de la sauvegarde avec le raccourci ''<leader>ll''. Voir [[https://github.com/lervag/vimtex/wiki/usage|ceci]] pour les raccourcis. === VimMarkdown === Le plugin ''plasticboy/vim-markdown'' ajoute le support du Markdown. <code vim> let g:vim_markdown_folding_disabled = 1 " désactive le folding par défaut de tout le document let g:vim_markdown_no_default_key_mappings = 1 " désactive les raccourcis de cette extention, qui est en conflit avec ]c </code> === Syntastic === [[https://github.com/vim-syntastic/syntastic]] Le plugin ''vim-syntastic/syntastic'' permet une analyse syntaxique des fichiers. <code vim> set statusline+=%#warningmsg# set statusline+=%{SyntasticStatuslineFlag()} set statusline+=%* let g:syntastic_always_populate_loc_list = 1 let g:syntastic_auto_loc_list = 1 let g:syntastic_check_on_open = 1 let g:syntastic_check_on_wq = 0 </code> Préciser le chemin des includes: <code vim> let g:syntastic_c_include_dirs = ['/usr/local/opt/gtk+3/include/gtk-3.0/', '/usr/local/opt/pango/include/pango-1.0/'] </code> Ignorer certains messages ([[https://github.com/vim-syntastic/syntastic/blob/63b74a7473ec01548298284c210fee0a78a6156d/doc/syntastic.txt#L575|source]]): <code vim> let g:syntastic_quiet_messages = { "regex": "file not found" } </code> Préciser la version Python à utiliser pour l'analyse syntaxique ([[https://stackoverflow.com/a/51522537|source]]): <code vim> let g:syntastic_python_python_exec = 'python3' let g:syntastic_python_checkers = ['python'] </code> === Plugins sans configuration === * ''tpope/vim-sleuth'' : détecte automatiquement l'indentation du fichier et configure les tabs/... * ''nelsyeung/twig.vim'' : coloration syntaxique pour les fichiers Twig * ''luochen1990/rainbow'' : coloration des parenthèses (presque sans configuration) * ''wsdjeg/vim-fetch'' : permet d'ouvrir le fichier à la ligne ''n'' quand on demande à ouvrir ''foo.txt:n'' === Autres plugins à essayer === * [[https://github.com/junegunn/gv.vim]] === Coloration syntaxique avec LaTeX === Corriger la coloration syntaxique cassée dès qu'un dollar est saisi dans un environnement ''lstlisting'' ou ''\lstinline{}'' : * [[https://tex.stackexchange.com/questions/566068/dollar-sign-breaks-syntax-highlighting-in-vim]] * [[https://stackoverflow.com/questions/6738902/vim-syntax-highlighting-with-and-lstlistings-lstinline/21651323#21651323]] * [[http://www.drchip.org/astronaut/vim/index.html#LATEXPKGS]] <code vim> syn region texZone matchgroup=texBeginEnd start="\\begin{lstlisting}" matchgroup=texBeginEnd end="\\end{lstlisting}\|%stopzone\>" syn match texInputFile "\\lstinline\s*\(\[.*\]\)\={.\{-}}" contains=texStatement,texInputCurlies,texInputFileOpt </code> linux/vim.txt Dernière modification : 2025/03/07 22:40de phsw