linux: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
linux:vim [2021/12/11 17:28] – [Plugins] add how to uninstall plugin phswlinux:vim [2025/03/07 22:40] (Version actuelle) – [Raccourcis] add how to save a file not opened with sudo phsw
Ligne 5: Ligne 5:
   * https://www.youtube.com/watch?v=fnocbpK_vnw   * https://www.youtube.com/watch?v=fnocbpK_vnw
   * [[http://sed.bordeaux.inria.fr/org/vim_prog.html]]   * [[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 ==== ==== Ouvrir un fichier ====
Ligne 49: Ligne 51:
   * ''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).   * ''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]])+  * 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.   * ''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.
  
  
Ligne 139: Ligne 144:
 [[https://www.techrepublic.com/blog/linux-and-open-source/use-tabs-to-open-multiple-files-in-vim/|Source]] [[https://www.techrepublic.com/blog/linux-and-open-source/use-tabs-to-open-multiple-files-in-vim/|Source]]
  
-Ouvrir plusieurs fichiers, chacun dans un onglet:+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> <code bash>
-vim -p file1 file2 ...+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> </code>
  
Ligne 212: Ligne 219:
  
   * ''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''   * ''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>
  
  
Ligne 275: Ligne 287:
  
  
-=== Formater un fichier JSON === +=== Formatages ===
- +
-[[https://coderwall.com/p/faceag/format-json-in-vim|source]]+
  
 +Un fichier JSON ([[https://coderwall.com/p/faceag/format-json-in-vim|source]]) :
 <code vim> <code vim>
 :%!python -m json.tool :%!python -m json.tool
 </code> </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 === === Changer le format d'un fichier ===
Ligne 297: Ligne 312:
 :set ff=unix :set ff=unix
 :set ff=dos :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> </code>
  
Ligne 318: Ligne 341:
 <code vim> <code vim>
 :w !diff % - :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> </code>
  
Ligne 329: Ligne 361:
  
  
 +
 +=== 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 ==== ==== ctags ====
  
Ligne 341: Ligne 390:
 </code> </code>
  
-Possibilité d'exclure des dossiers avec ''--exclude=folder'' (rajouter autant que besoin).+Possibilité d'exclure des dossiers avec ''%%--%%exclude=folder'' (rajouter autant que besoin).
  
 Placer le fichier dans un dossier particulier: Placer le fichier dans un dossier particulier:
Ligne 347: Ligne 396:
 ctags --tag-relative=yes -R -f ./.git/ctags . ctags --tag-relative=yes -R -f ./.git/ctags .
 </code> </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.+''%%--%%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 Ajouter dans la configuration de Vim
Ligne 733: Ligne 782:
 === Plugins sans configuration === === Plugins sans configuration ===
  
-  * ''tpope/vim-sleuth'': détecte automatiquement l'indentation du fichier et configure les tabs/... +  * ''tpope/vim-sleuth'' : détecte automatiquement l'indentation du fichier et configure les tabs/... 
-  * ''nelsyeung/twig.vim'': coloration syntaxique pour les fichiers Twig+  * ''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''
  
  
Ligne 740: Ligne 791:
  
   * [[https://github.com/junegunn/gv.vim]]   * [[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.1639240132.txt.gz
  • Dernière modification : 2021/12/11 17:28
  • de phsw