====== 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 ===
vim scp://remoteuser@server.tld//absolute/path/to/document
=== Préciser la ligne ===
vim file.txt +324
----
==== 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:
:%s/old/new/g
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]]
''\'': 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 ===
:noh
=== Rechercher dans plusieurs fichiers ===
:vimgrep /pattern/ file
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:
:e # raccourci pour :edit
=== 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]]) :
vim -p file1 file2 ... # un fichier par onglet
vim -o file1 file2 ... # un fichier split horizontal
vim -O file1 file2 ... # un fichier split vertical
* '':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'':
nnoremap ,t :vert term
=== 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]]
:set textwidth=80
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]]
:set nowrap
=== 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]]) :
:%!python -m json.tool
Pour un fichier XML, sélectionner les lignes en mode visuel, puis ([[https://stackoverflow.com/questions/21408222/vim-indent-xml-file|source]]) :
!xmllint --format -
=== Changer le format d'un fichier ===
Basculer entre les formats DOS/Unix.
Connaître le format actuel du fichier:
:set ff?
Changer le format:
:set ff=unix
:set ff=dos
=== 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]]) :
:write ++enc=utf-8
=== 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]]):
:set syntax=c
On peut configurer la coloration syntaxique pour les fichiers avec une extension particulière:
autocmd BufNewFile,BufRead *.gnuplot set syntax=gnuplot
=== 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]]):
:w !diff % -
=== Sauvegarder en sudo ===
[[https://stackoverflow.com/questions/2600783/how-does-the-vim-write-with-sudo-trick-work|Source]]
:w !sudo tee %
=== 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]]) :
:set tabstop=4 " To match the sample file
:set noexpandtab " Use tabs, not spaces
:%retab! " Retabulate the whole file
=== Indiquer des options à Vim par fichier ===
Pour par exemple préciser le langage utilisé dans un fichier, ajouter un commentaire :
# vim: ft=ruby
==== 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:
ctags -R .
Possibilité d'exclure des dossiers avec ''%%--%%exclude=folder'' (rajouter autant que besoin).
Placer le fichier dans un dossier particulier:
ctags --tag-relative=yes -R -f ./.git/ctags .
''%%--%%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
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
==== 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'':
command DeleteFirst 1delete " la commande :DeleteFirst appellera :1delete, qui supprime la première ligne
=== Fichier de configuration ===
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 :tabp
map :tabn
map h :tabp
map l :tabn
" 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\%#\@
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:
set belloff=all
=== Ignorer les fichiers de configuration ===
[[https://evanhahn.com/ignore-vimrc-with-vim/|Source]]
vim -u NONE fichier
==== Plugins ====
=== Installer Vundle pour gérer les plugins ===
[[https://blog.pabuisson.com/2014/07/vim-vundle-gestion-plugins/|Source]]
git clone https://github.com/gmarik/Vundle.vim.git ~/.vim/bundle/Vundle.vim
Adapter son ''.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
" ...
Sauvegarder le fichier, puis, depuis Vim **(A faire pour installer les plugins)**:
:source ~/.vimrc
:PluginInstall
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'':
Plugin 'itchyny/lightline.vim'
Si la barre n'est pas correcte, ajouter dans le ''~/vimrc'':
set laststatus=2
Afficher la branche Git dans la barre: installer le plugin ''itchyny/vim-gitbranch'' et rajouter à la fin de ''~/.vimrc'':
let g:lightline = {
\ 'active': {
\ 'left': [ [ 'mode', 'paste' ],
\ [ 'gitbranch', 'readonly', 'filename', 'modified' ] ]
\ },
\ 'component_function': {
\ 'gitbranch': 'gitbranch#name'
\ },
\ }
[[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'':
set updatetime=100
* '']c'': va à la zone modifiée suivante (next hunk)
* ''[c'': va à la zone modifiée précédente (previous hunk)
* ''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]]):
highlight clear SignColumn
highlight GitGutterAdd ctermfg=green
highlight GitGutterChange ctermfg=yellow
highlight GitGutterDelete ctermfg=red
highlight GitGutterChangeDelete ctermfg=yellow
=== NERDTree et nerdtree-git-plugin ===
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='' " ouvre un fichier et un noeud avec espace
map nn :NERDTreeToggle " ouvre et ferme NERDTree avec :nn
let NERDTreeIgnore=['\.o$', '^__pycache__$[[dir]]'] " n'affiche pas les fichier .o et les dossiers __pycache__
=== BufExplorer ===
Facilite la gestion des plugins ouverts.
Ajouter le plugin ''jlanzarotta/bufexplorer''.
[[https://github.com/jlanzarotta/bufexplorer/blob/master/doc/bufexplorer.txt|Documentation]]
let g:bufExplorerDefaultHelp=0
let g:bufExplorerShowRelativePath=1
let g:bufExplorerFindActive=1
let g:bufExplorerSortBy='name'
map o :BufExplorer
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''
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 b :CtrlPBuffer
map m :CtrlPMRUFiles
map f :CtrlP
Le plugin s'active avec ''Ctrl+P''.
=== NERDCommenter ===
Permet de facilement commenter du code.
Installer le plugin ''scrooloose/nerdcommenter''.
" Use compact syntax for prettified multi-line comments
let g:NERDCompactSexyComs = 1
Raccourcis:
* ''[count]c'' toggle les commentaires
=== YouCompleteMe ===
Plugin de complétion automatique du code.
Installer le plugin ''ycm-core/YouCompleteMe''.
cd ~/.vim/bundle/YouCompleteMe
python3 install.py --clangd-completer
(plus de détails sur le [[https://github.com/ycm-core/YouCompleteMe|dépôt GitHub]])
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
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 ''ll''.
Voir [[https://github.com/lervag/vimtex/wiki/usage|ceci]] pour les raccourcis.
=== VimMarkdown ===
Le plugin ''plasticboy/vim-markdown'' ajoute le support du Markdown.
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
=== Syntastic ===
[[https://github.com/vim-syntastic/syntastic]]
Le plugin ''vim-syntastic/syntastic'' permet une analyse syntaxique des fichiers.
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
Préciser le chemin des includes:
let g:syntastic_c_include_dirs = ['/usr/local/opt/gtk+3/include/gtk-3.0/', '/usr/local/opt/pango/include/pango-1.0/']
Ignorer certains messages ([[https://github.com/vim-syntastic/syntastic/blob/63b74a7473ec01548298284c210fee0a78a6156d/doc/syntastic.txt#L575|source]]):
let g:syntastic_quiet_messages = { "regex": "file not found" }
Préciser la version Python à utiliser pour l'analyse syntaxique ([[https://stackoverflow.com/a/51522537|source]]):
let g:syntastic_python_python_exec = 'python3'
let g:syntastic_python_checkers = ['python']
=== 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]]
syn region texZone matchgroup=texBeginEnd start="\\begin{lstlisting}" matchgroup=texBeginEnd end="\\end{lstlisting}\|%stopzone\>"
syn match texInputFile "\\lstinline\s*\(\[.*\]\)\={.\{-}}" contains=texStatement,texInputCurlies,texInputFileOpt