fbpx

Démarrez avec l’éditeur Vim, Les bases

Vim est un éditeur de texte en mode console (ou mode texte). Il est le plus présent par défaut sur les distributions Linux, puissant et léger il nécessite cependant un apprentissage pour être maîtrisé. Un éditeur en mode texte veut dire qu’il n’a pas besoin d’interface graphique (GUI) pour fonctionner. Vim signifie « Vi Improved » c’est à dire Vi amélioré, c’est un logiciel libre qui propose une gamme extrêmement large d’options et de possibilités de personnalisation.

Pourquoi apprendre à utiliser vim ?

Et bien, comme je l’ai déjà dis il est puissant et léger, il est souvent installé par défaut avec les distributions Linux. De plus il s’avère pratique lorsque l’on veut se connecter à un serveur Linux distant en ssh et modifier/éditer des fichiers sur ce serveur. Et puis lorsque l’on a passé des jours entiers à l’utiliser et à se perfectionner on ressent l’agréable sensation de maîtriser un avion de chasse.

Installation

Vim est présent par défaut sur la grande majorité des distributions Linux, parfois un alias est fait sur la commande vi, c’est à dire que la commande « vi » va lancer en fait lancer vim. Par contre, par défaut sur Debian c’est une version très minimale (proche du vi original) qui est présente, du coup afin de bénéficier de la souplesse et de toutes les améliorations qu’apporte Vim par rapport à vi il faut l’installer manuellement.
sudo apt install vim

Utilisation

Afin de savoir quelle version est installée, ce qui peut être pratique car des options ne sont pas présentes dans des versions plus ancienne, il faut entrer dans un terminal la commande suivante :
vim --version
Et qui va répondre quelque chose comme
VIM - Vi IMproved 8.1 (2018 May 18, compilé Jan 05 2019 20:53:12)
Rustines incluses : 1-693
...
Les trois petits points symbolisent tout un tas information potentiellement utiles, mais je ne m’y attarderais pas ici. L’important est de voir le numéro de version, ici 8.0 Pour ouvrir ou créer un fichier il faut tout simplement faire
vim test.txt
Ici si le fichier test.txt existe il est ouvert si il n’existe pas il est créé.

Les modes

Vim est un éditeur modal c’est à dire qu’il n’est pas toujours possible d’écrire dans la zone de texte, on est soit dans un mode soit dans un autre, les modes de Vim et la manière d’y entrer et d’en sortir est expliquée sur ce dessin.
Alors comment comprendre ce dessin ? Par défaut quand on entre dans vim on est dans le mode commande, donc si on veut écrire quelque chose, il faut passer en mode insertion, et pour cela il faut appuyer au choix sur « i », « a », « o », « s », … (il y a d’autres moyens) et pour quitter le mode insertion il faut appuyer sur la touche echap. Le principe est le même pour les autres modes. On peut noter que le mode commande est central dans vim.

Le mode insertion

C’est le mode pour enter du texte dans l’éditeur, typiquement celui qui est utilisé le plus souvent. Pourquoi tant de façon de passer en insertion ? Et bien car chacune des touche offre une manière différente pour entrer dans le mode insertion.

Le mode commande

C’est a partir de celui-ci que l’on lance des commandes telles que la recherche avec la touche / ou des commandes de contrôle et de paramétrage de Vim avec la touche :

Le mode visuel

C’est le mode pour sélectionner du texte d’une manière classique, si le support de la sourie est activé on peut le faire par simple clic + déplacement, vim entrera dans ce mode directement.

Le mode visuel bloc

ce mode permet de sélectionner un bloc de texte, une petite image en dira plus long.
sélection en visual bloc

Le mode remplacement

C’est le même comportement que le mode insertion (quand on appuie sur la touche « inser ») dans un éditeur « classique », chaque caractère entré écrase celui devant lui si il y en a un.

Le mode « Insertion normal »

À partir du mode insertion si on veut lancer une commande ou une recherche le reflex logique est de faire echap (Esc) faire la commande, puis retourner en insertion avec (a, i, o, …) et bien il existe un moyen beaucoup plus simple de faire cela. Dans le mode insertion faire <ctrl+o> à ce moment on passe en mode normal juste pour une commande ensuite on retourne automatiquement en insertion (c’est très pratique).

Le mode « Insertion Visuel »

Dans la même logique que le mode insertion normal ci-dessus, le mode insertion Visuel permet grâce à la combinaison <ctrl+v> de sélectionner directement à partir du mode insertion, une zone de texte pour la copier ou la supprimer par exemple, ensuite on retourne automatiquement en insertion.

Le mode collage

Ce mode est un peut spécial, mais il m’est utile quand je fais des copier coller de code à partir d’internet ; Parfois quand je colle dans vim l’auto complétion décale chacune des lignes rendant l’utilisation du code impossible (ou alors passer une heure à ré indenter), dans ce mode.il n’y a pas de problèmes.

Les touches et raccourcis

Comme l’esprit (originel) de vim est d’être entièrement commandé par le clavier, les touches de commande sont très nombreuses. Toutes les commandes (ou presque) sont à effectuer à partir du mode  normal.

Les déplacements dans le texte

  • h ou ⇦   vers la gauche
  • j ou ⇩    vers le bas
  • k ou ⇧   vers le haut
  • l ou ⇨    vers la droite
  • ^             en début de ligne
  •             en fin de ligne
  • (              début de la phrase précédente
  •              début de la phrase suivante
  • {              paragraphe précédent
  • }              paragraphe suivante
  • w            au début du mot suivant
  • <num>w  saute du nombre <num> de mots
  • b             au début du mot précédent
  • e             fin du mot suivant
  • H            à la première ligne à l’écran
  • M           à la ligne au milieu de l’écran
  • L             à la dernière ligne à l’écran
  • gg           tout en haut
  • G             tout en bas
  • <num>G  va à la ligne numéro <num>
  • ctrl+b    à l’écran précédent
  • ctrl+f     à l’écran suivant
  • z <enter> place la ligne courante en haut de l’écran
  • z.             place la ligne courante au milieu de l’écran
  • z-             place la ligne courante en bas de l’écran

Les déplacements entre les zone de texte

  • ctrl+ww   split suivant
  • ctrl+w+⇧ split du dessus
  • ctrl+w+⇩ split du dessous
  • ctrl+w+⇦ split de gauche
  • ctrl+w+⇨ split de droite
  • gt               l’onglet suivant
  • gT              l’onglet précédent
  • :bn            buffer suivant
  • :bp            buffer précédent

Gestion des fichiers

  • :w             enregistre le fichier courant
  • :e <path> ouvre le fichier situé au chemin <path>
  • :e <file>  crée dans le répertoire courant le fichier <file>
  • :e!             recharge le fichier courant (toute modification non enregistrée sera perdu)
  • ZZ             enregistre le fichier courant et quitte vim
  • 😡              enregistre le fichier courant et quitte vim
  • :xa            enregistre tous les fichiers ouverts et quitte
  • :q!             quitte sans prendre en compte les modifications non enregistrées
  • :r <file>    insère le contenu du fichier <file>

Les modes

  • <ESC>   Sort de n’importe quel mode
  • i              mode insertion a l’emplacement du curseur
  • I              mode insertion au début de la ligne courante
  • a             mode insertion à la suite du curseur
  • A            mode insertion à la fin de la ligne courante
  • o             mode insertion en créant une nouvelle ligne en dessous
  • O            mode insertion en créant une nouvelle ligne au dessus
  • s             mode insertion en supprimant le caractère sous le curseur
  • S             mode insertion en supprimant la ligne courante
  • cc           mode insertion en supprimant la ligne courante
  • c<déplacement> mode insertion en supprimant ce qui ce trouve entre le curseur et le déplacement, par exemple :
  • c$           mode insertion en supprimant toute la fin de la ligne
  • c^           mode insertion en supprimant tout le début de la ligne
  • cw          mode insertion en supprimant la fin du mot courant
  • v             mode visuel
  • ctrl+v    mode visuel bloc
  • R             mode remplacement

Les contrôles

  • :q              quitte vim
  • :ls              liste les fichiers ouverts
  • :b <num_buffer> passe sur le tampon <num_buffer> on trouve le numéro avec la commande :ls
  • :pwd        donne le répertoire de travail courant
  • :r               insère un contenu, par défaut duplique le contenu du fichier courant
  • :r <file>   insère le contenu du fichier <file>
  • :!<cmd>  execute la commande shell <cmd>, par exemple :
  • :!ls           liste le contenu du répertoire de travail courant
  • :r!ls         insère la sortie de la commande (shell) ls

Copier coller

  • yy             copier la ligne courante
  • p               colle le contenu du tampon principal un caractère après le curseur
  • P               colle le contenu du tampon principal à l’endroit du curseur
  • yyp           duplique la ligne courante
  • « ayy         copie la ligne courante dans la mémoire (tampon) « a »
  • « xyy         copie la ligne courante dans la mémoire (tampon) « x » (il est possible d’utiliser toutes les lettres comme mémoires)

Recherche

  • /<motif>     Lance une recherche sur le motif <motif>
  • / + ⇧             à l’aide de la flèche haut on peut faire défiler les recherches déjà effectuées
  • ? <motif>    équivalent à /
  • n                    Recherche le motif suivant
  • N                   Recherche le motif précédent
  • %                   trouve la parenthèse, accolade ou crocher correspondante

Modification

  • dd                 supprime la ligne courante
  • dw                supprime le mot courant
  • ~                    change la case de la lettre courante (passe de lowcase en highcas et inversement)
  • r<car>         remplace le caractère sous le curseur la le caractère <car>
  • J                    fusionne la ligne courante avec la suivante
  • .                    répète l’action (ou le groupe d’action) précédente
  •                   annule les dernières opérations (undo)
  • <ctrl>r        remonte l’historique d’annulation (redo) si on est allé trop loin avec u

Conclusion

Voici un aperçu des bases de vim, avec les quelques concepts et touches décrit ci dessus il est possible de s’en sortir. Mais ce n’est qu’un bout de la partie émergée de l’iceberg si on compare à la puissance et aux possibilités que nous offre Vim.

Olivier Munier

Au début des années 2000, j'ai découvert Linux et le monde des logiciels libres et open source. Assez vite j'ai décidé de me spécialiser sur ce vaste monde afin de devenir un expert. Titulaire d'un master en Informatique, et passionné par ce domaine, mes compétences couvrent un très large éventail, notamment l'administration système Linux, la virtualisation et la programmation Python.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *