| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente |
| vim [Le 16/01/2026, 02:47] – [Vi IMproved] ça veut dire quoi <control-w>-s !? c'est quoi CScope !? krodelabestiole | 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 ====== |
| **[[wpfr>Vim]]** est un [[:éditeur de texte]] pour le [[:terminal]] sous [[:GNU]]/[[:Linux]]. | **[[wpfr>Vim]]** est un [[:éditeur de texte]] pour le [[:terminal]] sous [[:GNU]]/[[:Linux]]. |
| |
| Il est très apprécié des utilisateur·ice·s avancé·e·s et 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. | 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. |
| |
| <note important> | <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ère l'édition du texte quand ils sont maîtrisés. | **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.)) | 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. | 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> | </note> |
| |
| 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. | **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 pour l’éditions de tout fichier de configuration, il est intéressant d'exécuter : | Pour que **Vim** soit l'éditeur par défaut du [[:shell]], exécuter la commande ''select-editor'' : |
| <code bash> | <code bash> |
| select-editor | select-editor |
| Choose 1-4 [1]: 2 | Choose 1-4 [1]: 2 |
| </code> | </code> |
| et de le faire avec //sudo// pour que ce soit aussi le cas quand on éditer des fichiers système, par exemple quand on fait un //sudo crontab -e// ((cf. [[:cron|CRON]] pour plus d'infos) | 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. | <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]]''. | 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]]**. |
| |
| **[[:neovim]]** est un //fork// **Vim** plus orienté [[:IDE]]. | **[[:neovim]]** est un //fork// de **Vim** plus orienté [[:IDE]]. |
| |
| ===== Utilisation ====== | ===== Utilisation ====== |
| |
| (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 ==== |
| |
| === Commandes de base === | === Commandes de base === |
| | |
| | FIXME il faudrait différentier (ou expliquer) les commandes et les raccourcis clavier svp ! |
| |
| ^ Exemples ^ Action ^ | ^ Exemples ^ Action ^ |
| | ''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 ^ |
| | **<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 === |
| 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> |
| * [[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. |
| |
| ---- | ---- |
| |
| //Contributeurs : [[:utilisateurs:YoBoY|YoBoY]], [[:utilisateurs:Mr_Djez|Mr_Djez]], [[:utilisateurs:bcag2|bcag2]]// | //Contributeurs : [[:utilisateurs:YoBoY|YoBoY]], [[:utilisateurs:Mr_Djez|Mr_Djez]], [[:utilisateurs:bcag2|bcag2]]// |