| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente |
| vim [Le 10/03/2023, 10:02] – ajout § [Macro] bcag2 | vim [Le 27/01/2026, 00:17] (Version actuelle) – [Vi IMproved] clarification krodelabestiole |
|---|
| {{tag>éditeur_de_texte console programmation IDE}} | {{tag>éditeur_de_texte console programmation IDE vétuste}} |
| | |
| ---- | |
| |
| ====== Vi IMproved ====== | ====== Vi IMproved ====== |
| Vim est un [[éditeur de texte]] pour le [[:terminal]] sous [[:gnu|GNU]]/[[:linux|Linux]]. Il a une stabilité exemplaire et ne cesse d'être amélioré. Malgré son austérité, c'est un outil très puissant qui n'a rien à envier aux éditeurs graphiques comme [[:GEdit]], [[:Kate]] ou [[:Mousepad]]. Il est très apprécié des développeurs pour toutes ses fonctions qui en font un très bon IDE (coloration syntaxique de 200 langages, complétion automatique, comparaison de fichiers, recherche évoluée, ...) et est extensible par des scripts. | |
| |
| Contrairement à la plupart des éditeurs, Vim est un éditeur modal((**éditeur modal**: possède différents modes de fonctionnement **commande**, **insertion**)). Selon le mode où vous vous trouvez, les touches auront des actions différentes. | **[[wpfr>Vim]]** est un [[:éditeur de texte]] pour le [[:terminal]] sous [[:GNU]]/[[:Linux]]. |
| |
| <note tip>Vim est un "charity-ware" : vous êtes encouragés à faire une donation aux | Il est très apprécié des utilisateur·ice·s avancé·e·s et des développeur·euse·s pour toutes ses fonctions qui en font un très bon [[:IDE]] (coloration syntaxique de 200 langages, complétion automatique, comparaison de fichiers, recherche évoluée, ...) et peut enrichir ses fonctionnalités par des extensions. |
| orphelins d'Ouganda (voyez : ":help uganda").</note> | |
| |
| | <note important> |
| | **Vi** et **Vim** ne sont pas intuitifs et pas adaptés aux personnes qui ne sont pas intéressées par l'informatique, ou n'en ont pas un usage qui justifie une importante période d'apprentissage. **Vi** a peu d'intérêt en dehors de raccourcis clavier qui accélèrent l'édition du texte quand ils sont maîtrisés. |
| | |
| | Si on peut espérer gagner du temps sur le long terme, cette courbe d'apprentissage est dans tous les cas très raide.((Voir par exemple **(//en//)** [[https://stackoverflow.com/questions/4620672/how-can-i-copy-and-paste-content-from-one-file-to-another|ce sujet]] sur lequel est discutée la technique à employer pour copier du texte d'un fichier à un autre.)) |
| | |
| | Pour éditer rapidement du texte depuis un [[:terminal]], **[[:nano]]** est bien plus accessible et simple d'utilisation (les raccourcis utiles sont indiqués en bas de l'écran). |
| | </note> |
| | |
| | **Vim** a la particularité de proposer plusieurs [[#Principe de base|modes]] de fonctionnement.((On parle parfois d'éditeur //modal//.)) Selon le mode sélectionné, les touches déclenchent différentes actions : |
| | * Le mode **//command//** (mode par défaut) permet d'entrer des commandes pour interagir avec le texte, le fichier ou l'application. |
| | * Le mode **//insert//** permet de saisir du texte. |
| | * Le mode **//replace//** est proche du mode //insert// mais écrase le texte existant. |
| | * Le mode **//visual//** permet la sélection et la modification globale de texte. |
| | |
| | Pour que **Vim** soit l'éditeur par défaut du [[:shell]], exécuter la commande ''select-editor'' : |
| | <code bash> |
| | select-editor |
| | |
| | Select an editor. To change later, run 'select-editor'. |
| | 1. /bin/nano <---- easiest |
| | 2. /usr/bin/vim.basic |
| | 3. /usr/bin/vim.tiny |
| | 4. /bin/ed |
| | |
| | # ON CHOISIT vim.basic, donc le choix 2… |
| | Choose 1-4 [1]: 2 |
| | </code> |
| | Lancer aussi la commande avec ''[[:sudo]]'' pour que **Vim** soit aussi l'éditeur par défaut avec les [[:permissions administrateur]] (par exemple avec la commande ''sudo crontab -e''((cf. [[:CRON]] pour plus d'infos))) : |
| | sudo select-editor |
| |
| ===== Installation ====== | ===== Installation ====== |
| Par défaut, votre système a une version basique de vim, procurée par le paquet **vim-tiny**, mais n'offrant pas toutes les possibilités de cet éditeur. | |
| |
| Commencez par [[:tutoriel:comment_installer_un_paquet|installer le paquet]] **[[apt>vim|vim]]** ou **[[apt>vim-gnome|vim-gnome]]**. Cette version //vim-gnome// a l'avantage de disposer des options pour utiliser le presse-papier (( reportez-vous à l'article [[https://vim-fr.org/index.php/Les_presse-papiers]] pour plus de détails sur les presse-papiers de vim))\\ | <note> |
| | Une version basique de **Vim** est installée par défaut sur Ubuntu, fournie par le [[:paquet]] ''[[apt>vim-tiny]]''. Celle-ci n'implémente pas les fonctionnalités complètes de l'éditeur. |
| | </note> |
| | |
| | Commencez par [[:tutoriel:comment_installer_un_paquet|installer le paquet]] ''[[apt>vim]]''. |
| Si vous souhaitez une interface graphique pour utiliser Vim, reportez-vous à la page **[[:gvim]]**. | Si vous souhaitez une interface graphique pour utiliser Vim, reportez-vous à la page **[[:gvim]]**. |
| ===== Utilisation ====== | |
| |
| | **[[:neovim]]** est un //fork// de **Vim** plus orienté [[:IDE]]. |
| |
| | ===== Utilisation ====== |
| |
| ==== Tutoriel ==== | ==== Tutoriel ==== |
| |
| L'installation de vim fournit un programme spécifique pour l'apprentissage de vim. Il faut compter environ 30 minutes pour faire le tour de ce tutoriel, mais cela est très utile pour vous familiariser avec les commandes les plus courantes de **vim**. | L'installation de **Vim** fournit un programme spécifique pour l'apprentissage de **Vim**. Il faut compter environ 30 minutes pour faire le tour de ce tutoriel, mais cela est très utile pour vous familiariser avec les commandes les plus courantes de **Vim**. |
| |
| Pour le lancer il vous suffit d'aller dans un [[:terminal]] et de taper : | Pour le lancer il vous suffit d'aller dans un [[:terminal]] et de taper : |
| <code>vimtutor</code> | <code>vimtutor</code> |
| |
| (ou pour la version graphique, lancez l'application **gvimtutor** avec la combinaison de touches **ALT + F2** ou dans le terminal) | (ou pour la version graphique, lancez l'application ''gvimtutor'' avec la combinaison de touches ''Alt''+''F2'' ou dans le terminal) |
| |
| ==== Principe de base ==== | ==== Principe de base ==== |
| |
| Pour [[:tutoriel:comment_modifier_un_fichier|créer ou modifier un fichier]] avec vim il suffit de taper : | Pour [[:tutoriel:comment_modifier_un_fichier|créer ou modifier un fichier]] avec **Vim** il suffit de taper : |
| <code>vim /chemin/texte</code> | <code>vim /chemin/texte</code> |
| |
| Si le fichier n'existe pas il sera créé à l'enregistrement. | Si le fichier n'existe pas il sera créé à l'enregistrement. |
| |
| Le fichier s'affiche. Vous êtes dans le **mode commande**((**éditeur modal**: possède différents modes de fonctionnement **commande**, **insertion**)), c'est à dire que vous pouvez déplacer le curseur comme vous le souhaitez avec les touches h,j,k,l ou avec les flèches ←↓↑→ et entrer des commandes pour agir sur le texte. Si vous tapez un nombre avant une commande, elle se répétera d'autant. | Le fichier s'affiche. Vous êtes dans le **mode commande**((**éditeur modal** : possède différents modes de fonctionnement **commande**, **insertion**)), c'est à dire que vous pouvez déplacer le curseur comme vous le souhaitez avec les touches ''h'', ''j'', ''k'', ''l'' ou avec les flèches ''←'', ''↓'', ''↑'', ''→'' et entrer des commandes pour agir sur le texte. Si vous tapez un nombre avant une commande, elle se répétera d'autant. |
| |
| Pour accéder au **mode insertion**((**éditeur modal**: possède différents modes de fonctionnement **commande**, **insertion**)) afin de modifier ou d'insérer du texte, il suffit d'appuyer sur « **i** » dans le mode commande. Appuyer sur la touche « **Échap** » pour en sortir et repasser en mode commande. | Pour accéder au **mode insertion**((**éditeur modal** : possède différents modes de fonctionnement **commande**, **insertion**)) afin de modifier ou d'insérer du texte, il suffit d'appuyer sur ''i'' dans le mode commande. Appuyer sur la touche ''Échap'' pour en sortir et repasser en mode commande. |
| |
| | === Commandes de base === |
| |
| === Commandes de base: === | FIXME il faudrait différentier (ou expliquer) les commandes et les raccourcis clavier svp ! |
| |
| ^ Exemples ^ Action ^ | ^ Exemples ^ Action ^ |
| | **i** | Passer dans le **mode insertion** | | | ''i'' | Passer dans le **mode insertion** | |
| | **A** | Ajouter en fin de ligne | | | ''A'' | Ajouter en fin de ligne | |
| | **:q** | Quitter| | | '':q'' | Quitter | |
| | **:q!** | Quitter sans enregistrer | | | '':q!'' | Quitter sans enregistrer | |
| | **:w** | Enregistrer le fichier | | | '':w'' | Enregistrer le fichier | |
| | **:wq** | Enregistrer et quitter | | | '':wq'' | Enregistrer et quitter | |
| | **:x** | Enregistrer (seulement en cas de modification) et quitter | | | '':x'' | Enregistrer (seulement en cas de modification) et quitter | |
| | **:set paste** | Passer en mode "collage" | | | '':set paste'' | Passer en mode "collage" | |
| |
| === Commandes d'édition: === | === Commandes d'édition: === |
| |
| ^ Exemples ^ Action ^ | ^ Exemples ^ Action ^ |
| | **u** | Annuler la dernière opération | | | ''u'' | Annuler la dernière opération | |
| | **<control>-r** | Rétablir la dernière opération annulée | | | ''Ctrl''+''R'' | Rétablir la dernière opération annulée | |
| | **.** | Répéter la dernière opération d'édition | | | ''.'' | Répéter la dernière opération d'édition | |
| | **yy** | Copier la ligne (4**yy** = 4 lignes) | | | ''yy'' | Copier la ligne (4**yy** = 4 lignes) | |
| | **dd** | Couper la ligne (4**dd** = 4 lignes) | | | ''dd'' | Couper la ligne (4**dd** = 4 lignes) | |
| | **p** | Coller après (**P** = insérer avant) | | | ''p'' | Coller après (**P** = insérer avant) | |
| | **x** | Effacer le caractère | | | ''x'' | Effacer le caractère | |
| | **dw** | Effacer le texte jusqu'à la fin du mot | | | ''dw'' | Effacer le texte jusqu'à la fin du mot | |
| | **diw** | Effacer le mot sous le curseur | | | ''diw'' | Effacer le mot sous le curseur | |
| |
| === Recherche / remplacement: === | === Recherche / remplacement === |
| |
| ^ Exemples ^ Action ^ | ^ Exemples ^ Action ^ |
| | **/** | Rechercher du texte | | | ''/'' | Rechercher du texte | |
| | **n** | Rechercher l'occurence suivante | | | ''n'' | Rechercher l'occurence suivante | |
| | **N** | Rechercher l'occurence précédente | | | ''N'' | Rechercher l'occurence précédente | |
| | **cw** | Remplacer le texte jusqu'à la fin du mot | | | ''cw'' | Remplacer le texte jusqu'à la fin du mot | |
| | **ciw** | Remplacer le mot | | | ''ciw'' | Remplacer le mot | |
| | **C** | Remplacer jusqu'en fin de ligne | | | ''C'' | Remplacer jusqu'en fin de ligne | |
| | **.** | Répéter la dernière opération d'édition | | | ''.'' | Répéter la dernière opération d'édition | |
| | **:%s/A/B/g** | Remplacer tous (g) les A par des B | | | '':%s/A/B/g'' | Remplacer tous (g) les A par des B | |
| |
| === Fenêtrage: === | === Fenêtrage === |
| |
| ^ Exemples ^ Action ^ | ^ Exemples ^ Action ^ |
| | **<control-w>-s** | Diviser horizontalement | | | ''Ctrl''+''w'' puis ''s'' | Diviser horizontalement | |
| | **<control-w>-v** | Diviser verticalement | | | ''Ctrl''+''w'' puis ''v'' | Diviser verticalement | |
| | **<control-w>-w** | Passer à la fenêtre suivante | | | ''Ctrl''+''w'' puis ''w'' | Passer à la fenêtre suivante | |
| | **<control-w>-n** | Ouvrir un fichier vierge dans une nouvelle fenêtre | | | ''Ctrl''+''w'' puis ''n'' | Ouvrir un fichier vierge dans une nouvelle fenêtre | |
| | **: tabnew //nom_fichier// ** | Ouvrir le fichier //nom_fichier// dans un onglet | | | '': tabnew //nom_fichier//'' | Ouvrir le fichier ''//nom_fichier//'' dans un onglet | |
| | **<control-w>-q** | Fermer la fenêtre | | | ''Ctrl''+''w'' puis ''q'' | Fermer la fenêtre | |
| |
| === Programmation en C === | === Programmation en C === |
| |
| Vim est interfaçable avec CScope, ce qui permet à l'aide d'une simple touche | **Vim** est interfaçable avec [[https://cscope.sourceforge.net/cscope_vim_tutorial.html|CScope]], ce qui permet à l'aide d'une simple touche lors de l'édition d'un fichier source écrit en C : |
| lors de l'édition d'un fichier source écrit en C: | |
| * d'afficher la définition d'une fonction, | * d'afficher la définition d'une fonction, |
| * de trouver les fonction appelées par cette fonction, | * de trouver les fonction appelées par cette fonction, |
| Vous pouvez comparer le contenu de deux fichiers en lançant : | Vous pouvez comparer le contenu de deux fichiers en lançant : |
| <code>vimdiff fichier1 fichier2</code> | <code>vimdiff fichier1 fichier2</code> |
| vimdiff peut-être remplacé par vim -d\\ | vimdiff peut être remplacé par ''vim -d''\\ |
| Si vous êtes déjà dans vim en édition sur le fichier1: | Si vous êtes déjà dans vim en édition sur le ''fichier1'' : |
| <code>:vert diffsplit fichier2</code> | <code>:vert diffsplit fichier2</code> |
| si vous ne spécifiez pas //vert//, le "split" sera horizontal (beaucoup moins pratique).\\ | si vous ne spécifiez pas //vert//, le //split// sera horizontal (beaucoup moins pratique).\\ |
| Ajoutez | Ajoutez |
| <code>set diffopt=vertical</code> | <code>set diffopt=vertical</code> |
| dans votre fichier //vimrc// pour que ce soit par défaut. | dans votre fichier ''vimrc'' pour que ce soit par défaut. |
| |
| ==== Édition hexadécimale ==== | ==== Édition hexadécimale ==== |
| |
| vim peut servir d'[[wpfr>éditeur hexadécimal]] (voir aussi hexedit) : après avoir ouvert votre fichier, tapez | **Vim** peut servir d'[[wpfr>éditeur hexadécimal]] (voir aussi hexedit) : après avoir ouvert votre fichier en mode binaire <code bash>vim -b mon-fichier</code> |
| | puis tapez |
| <code>:%!xxd</code> | <code>:%!xxd</code> |
| pour revenir en édition normale <code>:%!xxd -r</code> | pour revenir en édition normale <code>:%!xxd -r</code> |
| comme pour les autres utilisations (recherche, remplace...), vous pouvez remplacer % par un n° de ligne ou un intervalle | comme pour les autres utilisations (recherche, remplace...), vous pouvez remplacer **%** par un n° de ligne ou un intervalle |
| | |
| | <note important>Attention à bien éditer et sauvegarder en mode binaire sinon vous risquez de corrompre le fichier avec des auto tab et des conversions de retour à la ligne. ''vim -b'' pour lancer en mode binaire, ou '':set binary'' pour activer le mode une fois vim lancé.</note> |
| | |
| | ==== Correcteur(s) orthographique(s) ==== |
| | |
| | Si **Vim** est devenu votre éditeur quotidien et que vous y rédigez vos textes en [[wpfr>Markdown]] par exemple ou des pages HTML, il peut être utile de faire appel à un correcteur orthographique.\\ |
| | Pour cela : |
| | <code> |
| | # pour l'activer : |
| | :set spell |
| | # pour le désactiver : |
| | :set nospell |
| | # qui va sans doute surligner beaucoup de mot… car la correction est évidemment par défaut en anglais, |
| | # pour passer en français : |
| | :setlocal spell spelllang=fr |
| | # le dictionnaire français n'étant pas chargé par défaut, vim va vous proposer de le charger, répondre (Y) pour lancer le télé-chargement |
| | </code> |
| | ^ Commande ^ Description ^ |
| | | z= | sur un mot souligné affiche une liste de corrections possibles | |
| | | zg | rajoute un mot dans le dictionnaire | |
| | | zug | pour annuler l’ajout au dictionnaire | |
| | | ]s | pour aller au prochain mot mal orthographié | |
| | | [s | pour le précédent | |
| | source et compléments : [[https://www.saintcarre.fr/saintcarre/2018/08/correcteur-orthographe-vim.html|le blog de St-Carré]] |
| |
| ==== Terminal ==== | ==== Terminal ==== |
| | |
| Avec la version 8.1, il est possible d'ouvrir une fenêtre //terminal// | Avec la version 8.1, il est possible d'ouvrir une fenêtre //terminal// |
| <code> :terminal</code> (le mot abrégé //term// convient), si vous préférez en vertical : <code>:vert term</code> | <code> :terminal</code> (le mot abrégé //term// convient), si vous préférez en vertical : <code>:vert term</code> |
| |
| ==== Macro ==== | ==== Macro ==== |
| | |
| Il est possible d'enregistrer des macros associées à une lettre.\\ | Il est possible d'enregistrer des macros associées à une lettre.\\ |
| Pour démarrer l'enregistrement de la macro, on tape **qx** pour enregistrer la macro dans un registre **x**\\ | Pour démarrer l'enregistrement de la macro, on tape **qx** pour enregistrer la macro dans un registre **x**\\ |
| On saisi ensuite la(les) commande(s) à enregistrer, par exemple un rechercher/remplacer qu'on veut exécuter dans plusieurs fichiers (action qu'on peut aussi faire avec la commande //sed// en [[CLI]])\\ | On saisit ensuite la(les) commande(s) à enregistrer, par exemple un rechercher/remplacer qu'on veut exécuter dans plusieurs fichiers (action qu'on peut aussi faire avec la commande //sed// en [[CLI]])\\ |
| On fini l'enregistrement en tapant **q**\\ | On finit l'enregistrement en tapant **q**\\ |
| | Pour lancer une macro, il suffit de taper le caractère //@// suivi de la lettre correspondant au registre, //x// dans notre exemple : **@x**\\ |
| source ((https://vim.fandom.com/wiki/Recording_keys_for_repeated_jobs)) | source ((https://vim.fandom.com/wiki/Recording_keys_for_repeated_jobs)) |
| |
| Si vous ne l'utilisez pas et que ça vous gène, vous pouvez désactiver le raccourci dans votre vimrc en y ajoutant ((https://stackoverflow.com/a/28501574/6614155)) : | Si vous ne l'utilisez pas et que ça vous gêne, vous pouvez désactiver le raccourci dans votre vimrc en y ajoutant ((https://stackoverflow.com/a/28501574/6614155)) : |
| <code>map q <Nop></code> | <code>map q <Nop></code> |
| |
| ===== Configuration ===== | ===== Configuration ===== |
| |
| Pour modifier le comportement de vim, il faut agir sur son fichier de configuration (chaque utilisateur peut avoir le sien). Pour cela [[:tutoriel:comment_editer_un_fichier|créez ou éditez le fichier]] **~/.vimrc** (le fichier vimrc global peut se trouver dans /usr/share/vim/vimrc ). | Pour modifier le comportement de **Vim**, il faut agir sur son fichier de configuration (chaque utilisateur peut avoir le sien, //root// aussi).\\ |
| | Pour cela [[:tutoriel:comment_editer_un_fichier|créez ou éditez le fichier]] ''~/.vimrc'' (le fichier ''vimrc'' global peut se trouver dans ''/usr/share/vim/vimrc''). |
| |
| <note tip>S'il n'existe pas de fichier .vimrc dans le dossier de l'utilisateur, vim se lance en « compatibilité » avec vi. C'est-à-dire qu'il va charger les options par défaut de vi, et non pas celles de vim. La simple existence de ce fichier suffit normalement à charger les options par défaut de vim, mais, par précaution, forcez la désactivation de cette compatibilité (en tout début de fichier, car ça change les options).</note> | <note tip>S'il n'existe pas de fichier ''.vimrc'' dans le dossier de l'utilisateur, **Vim** se lance en « compatibilité » avec **Vi**. C'est-à-dire qu'il va charger les options par défaut de **Vi**, et non pas celles de **Vim**. La simple existence de ce fichier suffit normalement à charger les options par défaut de **Vim**, mais, par précaution, forcez la désactivation de cette compatibilité (en tout début de fichier, car ça change les options).</note> |
| |
| Voici quelques paramètres utiles à ajouter dans ce fichier : | Voici quelques paramètres utiles à ajouter dans ce fichier : |
| ^ Paramètre ^ Action ^ | ^ Paramètre ^ Action ^ |
| | <code>set nocompatible</code> | Désactive la compatibilité avec vi | | | <code>set nocompatible</code> | Désactive la compatibilité avec vi | |
| | <code>set background=dark </code> | adapte les couleurs pour un fond noir | | | <code>set background=dark </code> | Adapte les couleurs pour un fond noir | |
| | <code>syntax on</code> | Active la coloration syntaxique | | | <code>syntax on</code> | Active la coloration syntaxique | |
| | <code>set number</code> | Affiche les numéros de lignes | | | <code>set number</code> | Affiche les numéros de lignes | |
| | <code>set smartindent</code> | Indentation "intelligents" | | | <code>set smartindent</code> | Indentation "intelligents" | |
| | <code>set autoindent</code> | Conserve l'indentation courante sur les nouvelles lignes | | | <code>set autoindent</code> | Conserve l'indentation courante sur les nouvelles lignes | |
| | <code>set backspace=indent,eol,start</code> | retours arrières intelligents | | | <code>set backspace=indent,eol,start</code> | Retours arrières intelligents | |
| | <code>set shiftround</code> | Indentation à la marque de Tab la plus proche | | | <code>set shiftround</code> | Indentation à la marque de Tab la plus proche | |
| | <code>set ignorecase</code> | Ignore la casse lors de recherche | | | <code>set ignorecase</code> | Ignore la casse lors de recherche | |
| | <code>set showmode</code> | affiche le mode d'édition | | | <code>set showmode</code> | Affiche le mode d'édition | |
| | <code>set ruler</code> | affiche la position du curseur | | | <code>set ruler</code> | Affiche la position du curseur | |
| | <code>set showcmd</code> | affiche les commandes incomplète | | | <code>set showcmd</code> | Affiche les commandes incomplète | |
| |<code>map <C-m> :resize<CR> </code>| Ctrl-m maximize la fenetre courrante (:help map)| | |<code>map <C-m> :resize<CR> </code>| Ctrl-m Agrandit la fenêtre courante (:help map)| |
| |<code>map <C-b> :bNext<CR></code>| Ctrl-b aller au tampon suivant (:help map)| | |<code>map <C-b> :bNext<CR></code>| Ctrl-b Va au tampon suivant (:help map)| |
| |
| Si vim ne se souvient pas de la position précédente du curseur lorsque vous réouvrez un fichier, il faut ajouter la ligne suivante dans le fichier ~/.vimrc: | Si **Vim** ne se souvient pas de la position précédente du curseur lorsque vous ré-ouvrez un fichier, il faut ajouter la ligne suivante dans le fichier ''~/.vimrc'': |
| <code>au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif</code> | <code>au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif</code> |
| confère commande vim **:help last-position-jump** ou bien en tapant: | confère commande vim **:help last-position-jump** ou bien en tapant: |
| Un fichier exemple est disponible également **/usr/share/vim/vimcurrent/vimrc_example.vim** | Un fichier exemple est disponible également **/usr/share/vim/vimcurrent/vimrc_example.vim** |
| |
| <note> Si vous avez l'erreur "Sorry, the command is not available in this version: syntax on", vous utilisez surement vim-tiny et non vim "complet". Pour y remédier, [[:tutoriel:comment_supprimer_un_paquet| supprimez le paquet]] **vim-tiny** et [[:tutoriel:comment_installer_un_paquet|ré-installez le paquet]] **vim** | <note> Si vous avez l'erreur "Sorry, the command is not available in this version: syntax on", vous utilisez sûrement vim-tiny et non vim "complet". Pour y remédier, [[:tutoriel:comment_supprimer_un_paquet| supprimez le paquet]] **vim-tiny** et [[:tutoriel:comment_installer_un_paquet|ré-installez le paquet]] **vim** |
| |
| Vous pouvez aussi utiliser la commande suivante et choisir vim.gnome : <code>sudo update-alternatives --config vim</code> | Vous pouvez aussi utiliser la commande suivante et choisir vim.gnome : <code>sudo update-alternatives --config vim</code> |
| </note> | </note> |
| |
| ==== Vim supporte les souris ==== | ==== Support des souris ==== |
| |
| Le service **gpm**((**gpm** : General Purpose Mouse interface https://www.nico.schottelius.org/software/gpm/)) permet l'utilisation de la souris dans le terminal pour sélectionner, copier et coller. Vérifiez que le paquet [[apt://gpm|gpm]] est [[:tutoriel:comment_installer_un_paquet|installé]] et [[:tutoriel:comment_modifier_un_fichier|modifiez votre fichier]] ~/.vimrc comme expliqué plus haut pour y insérer : | Le service **gpm**((**gpm** : General Purpose Mouse interface https://www.nico.schottelius.org/software/gpm/)) permet l'utilisation de la souris dans le terminal pour sélectionner, copier et coller. Vérifiez que le paquet [[apt://gpm|gpm]] est [[:tutoriel:comment_installer_un_paquet|installé]] et [[:tutoriel:comment_modifier_un_fichier|modifiez votre fichier]] ~/.vimrc comme expliqué plus haut pour y insérer : |
| |
| ====Thème de coloration syntaxique==== | ====Thème de coloration syntaxique==== |
| Placez le thème dans ~/.vim/colors et activez le thème dans le .vimrc avec la ligne : | |
| <code> | Placez le thème dans ''~/.vim/colors'' et activez le thème dans le ''.vimrc'' avec la ligne : |
| | <code bash> |
| colorscheme nom_du_theme | colorscheme nom_du_theme |
| </code> | </code> |
| Si vous utilisez vim dans un terminal, il est possible que votre thème ne soit pas utilisé, et qu'il n'y ait pas de coloration syntaxique. Il faut donc forcer les couleurs en ajoutant dans le .vimrc la ligne suivante : | Si vous utilisez vim dans un terminal, il est possible que votre thème ne soit pas utilisé, et qu'il n'y ait pas de coloration syntaxique. Il faut donc forcer les couleurs en ajoutant dans le .vimrc la ligne suivante : |
| <code> | <code bash> |
| set t_Co=256 | set t_Co=256 |
| </code> | </code> |
| Si votre terminal ne supporte que 88 couleurs : | Si votre terminal ne supporte que 88 couleurs : |
| <code> | <code bash> |
| set t_Co=88 | set t_Co=88 |
| </code> | </code> |
| Il est cependant nécessaire que le thème ait été pensé à la fois pour la GUI et le terminal. Si ce n'est pas le cas du thème que vous avez choisi, le plus simple est d'utiliser le plugin [[https://www.vim.org/scripts/script.php?script_id=1809|guicolorscheme]]. | Il est cependant nécessaire que le thème ait été pensé à la fois pour la GUI et le terminal. Si ce n'est pas le cas du thème que vous avez choisi, le plus simple est d'utiliser le plugin [[https://www.vim.org/scripts/script.php?script_id=1809|guicolorscheme]]. |
| |
| Nota : les thèmes installés par défaut se trouvent dans le répertoire /usr/share/vim/vim**xx**/colors ou xx correspond à la version en cours, 74 ou 80 à ce jour | Nota : les thèmes installés par défaut se trouvent dans le répertoire ''/usr/share/vim/vim**xx**/colors'' où ''xx'' correspond à la version en cours, 74 ou 80 à ce jour |
| | |
| | === Indiquer (forcer) la coloration syntaxique === |
| | |
| | Il peut-être pratique de pouvoir indiquer la coloration syntaxique, en particulier lorsqu'on édite des fichiers sans extension (ou non représentative du type de fichier), pour cela, il faut saisir dans **Vim** : |
| | <code bash># :set syntax=<type de syntaxe> |
| | # par exemple pour avoir la coloration pour le fichier /var/log/syslog.1 (en cours d'édition) : |
| | :set syntax=messages |
| | # pour un fichier .env.local ou similaire : |
| | :set syntax=sh |
| | </code> |
| | ((src : https://stackoverflow.com/a/3853036/6614155))\\ |
| | Pour connaître la liste des types, <code bash>cd /usr/share/nvim/runtime/syntax && grep -rn "Language:"</code> |
| |
| ===== Extensions, plugins et packages ===== | ===== Extensions, plugins et packages ===== |
| Il existe de nombreuses extensions à VIM, notamment pour les développeurs, pour ajouter des fonctionnalités telle que l'arborescence du répertoire de travail, la liste des fonctions/variables, des colorations spécifiques… | |
| |
| Pour lister les plugins installés, dans VIM, tapez la commande: | Il existe de nombreuses extensions à **Vim**, notamment pour les développeurs, pour ajouter des fonctionnalités telle que l'arborescence du répertoire de travail, la liste des fonctions et variables, des colorations spécifiques... |
| | |
| | Pour lister les plugins installés, dans **Vim**, tapez la commande: |
| <code>:scriptnames </code> | <code>:scriptnames </code> |
| |
| ==== Les plugins ==== | ==== Les plugins ==== |
| C'est assez simple, ils se composent généralement de deux fichiers, un //.vim// et un //.txt//. | |
| Le //.vim// peut simplement être déposé dans ///usr/share/vim/vim80/plugin///,\\ | C'est assez simple, ils se composent généralement de deux fichiers, un ''.vim'' et un ''.txt''. |
| le //.txt// dans ///usr/share/vim/vim80/doc/// | * Le ''.vim'' peut simplement être déposé dans ''/usr/share/vim/vim80/plugin/'', |
| | * le ''.txt'' dans ''/usr/share/vim/vim80/doc/''. |
| |
| ==== Les packages ==== | ==== Les packages ==== |
| C'est plus compliqué, mais il existe des outils, tel que [[https://github.com/tpope/vim-pathogen|Pathogen]] ou [[https://github.com/VundleVim/Vundle.vim|Vundle]] pour simplifier leur installation | |
| |
| ===== Pour aller plus loin ===== | C'est plus compliqué, mais il existe des outils, tel que [[https://github.com/tpope/vim-pathogen|Pathogen]] ou [[https://github.com/VundleVim/Vundle.vim|Vundle]] pour simplifier leur installation. |
| * [[https://www.vim.org/]] -- Site officiel (en) | |
| | ===== Voir aussi ===== |
| | |
| | * **(//en//)** [[https://www.vim.org/|site officiel]] |
| * [[ftp://ftp.vim.org/pub/vim/doc/book/vimbook-OPL.pdf|Vim book (fichier PDF, anglais)]] | * [[ftp://ftp.vim.org/pub/vim/doc/book/vimbook-OPL.pdf|Vim book (fichier PDF, anglais)]] |
| * [[https://arolla.developpez.com/tutoriels/programmation/editeurs-code/dompter-vim-en-trois-temps/|Tuto sur developpez.com]] | * [[https://arolla.developpez.com/tutoriels/programmation/editeurs-code/dompter-vim-en-trois-temps/|Tuto sur developpez.com]] |
| * [[https://touticphoto.fr/assistance-informatique/30-editeur-de-texte-vim|Quelques notes de prises en main sur Vim]] | * [[https://touticphoto.fr/assistance-informatique/30-editeur-de-texte-vim|Quelques notes de prises en main sur Vim]] |
| * [[https://github.com/dpelle/vim-Grammalecte|Plugin Grammalecte]] étendre les fonctionnalités de VIM avec un Correcteur grammatical dédié à la langue française. | * [[https://github.com/dpelle/vim-Grammalecte|Plugin Grammalecte]] étendre les fonctionnalités de VIM avec un Correcteur grammatical dédié à la langue française. |
| | * [[:neovim]] fork de vim |
| | * [[:helix]] variante de vim, avec des commandes similaires mais orientées sélection pour mieux appréhender les modifications. |
| |
| ---- | ---- |
| --- //refonte [[:utilisateurs:YoBoY|YoBoY]]// | |
| |
| --- //Ajouts à la section "Configuration" [[:utilisateurs:Mr_Djez|Mr_Djez]]// | //Contributeurs : [[:utilisateurs:YoBoY|YoBoY]], [[:utilisateurs:Mr_Djez|Mr_Djez]], [[:utilisateurs:bcag2|bcag2]]// |