Vim - le minimum vital et plus

Le minimum pour survivre à Vim.

La chose la plus importante à comprendre pour utiliser Vim est qu’il comporte des modes de fonctionnement.

  • Le mode "normal" (qui est tout sauf habituel)

  • Le mode "insertion" (qui ressemble plus à ce à quoi on s’attend)

  • Le mode "visuel", utilisé pour la sélection

Vim démarre en mode "normal" dans lequel on ne peut pas écrire de texte, d’où la confusion la plus générale au premier lancement par un débutant…​

Vim revient au mode "normal" lors d’un appui sur la touche Esc, en haut à gauche des claviers en général.

Entrer du texte

Pour écrire du texte au clavier, il faut être dans le mode "insertion".

Pour entrer dans le mode insertion, la façon la plus simple est de taper le caractère 'i' comme "insertion".

Une fois en mode insertion, Vim se comporte de manière à peu près civilisée:

  • vous pouvez utiliser les flèches pour la navigation.

  • Ce que vous tapez est écrit dans le fichier.

  • Vous pouvez effacer du texte avec backspace

Sauver les modifications

Il n’y a pas de raccourci clavier pour sauver le fichier lorsqu’on est en mode "insertion".

Pour sauver, il faudra repasser en mode "normal" avec Esc

Une fois dans ce mode, il faudra entrer la commande :

:w

(write)

Quitter

Pour quitter, il faudra, en mode "normal", entrer la commande :q

On peut combiner les deux commandes précédentes : :wq

Un peu plus loin

Les autres manipulations de texte ont la forme :

action mouvement

ou

action objet

Les "mouvements" sont des déplacements du curseur en mode "normal".

Par exemple, lorsqu’on appuis sur w en mode normal, le curseur va aller au mot (word) suivant.

  • La lettre e déplacera le curseur à la fin (end) du mot suivant.

  • La lettre b déplacera le curseur au début (begin) du mot précédent.

  • La lettre j déplacera le curseur à la ligne suivante.

  • La lettre k déplacera le curseur à la ligne précédente.

  • Le symbole $ déplacera le curseur à la fin de la ligne.

  • Le chiffre 0 déplacera le curseur au début de la ligne.

  • Le symbole ^ déplacera le curseur au début du texte de la ligne.

Les objets désignent des éléments de texte:

  • aw désigne un mot (a word)

  • ap désigne un paragraphe (a paragraph)

  • a) désigne le texte entre parenthèses, fonctionne aussi avec [], {}, "", '', <>.

Les actions décrites ci-dessous s’appliquent donc soit à des mouvements soit à des objets.


Copier-coller

Couper : d (delete)

Pour couper un mot on pourra faire dw si on est au début du mot. Le d pour commencer l’action de couper et w pour se déplacer d’un mot.

On pourra aussi, en étant n’importe où dans le mot, faire daw. Le d pour commencer l’action de couper et aw pour désigner un mot.

Pour couper un paragraphe: dap.

Pour couper une ligne: dd

D’une manière générale, un caractère d’action répété (dd par exemple) agît sur la ligne courante.

Tout ce qui est effacé dans Vim est mémorisé pour pouvoir être collé ensuite.

Copier : y (yank veut dire copier en anglais)

Les mêmes mouvements s’appliquent à l’action de copier:

  • yaw copiera le mot courant.

  • yy copiera la ligne courante.

Coller : p (paste en anglais)

Une fois quelque chose copié ou coupé, presser la touche 'p' le collera après le curseur et 'P' le collera avant le curseur.

Dupliquer la ligne courante se fait donc avec : ddp
Intervertir deux caractères : xp


Entrer en mode insertion à des endroits plus intéressants

  • La lettre I en mode "normal" commencera le mode "insertion" au début de la ligne courante.

  • La lettre A, à la fin.

  • La lettre o en mode "normal" ouvre une nouvelle ligne, c’est-à-dire qu’elle ajoutera une ligne en dessous de la ligne courante et commencera le mode "insertion" sur cette nouvelle ligne.

  • La lettre O fera de même mais au dessus.

Couper puis entrer en mode insertion en une seule commande

Il est possible de supprimer du texte puis de passer en mode insertion à l’endroit où le texte a été supprimé.

  • Substitute

    • s supprimer le caractère courant et entre en insertion à sa place.

    • S supprime la ligne courante et entre en mode insertion au début de la ligne.

  • Change

    • c est une action (change) qui va supprimer le mouvement ou l’objet suivant puis entre en mode insertion à sa place.

      • caw supprimera donc le mot courant puis entrera en insertion à sa place.

      • cc supprimer la ligne courante et entre en mode insertion au début de la ligne (équivalent à S).

    • C supprime du curseur jusqu’à la fin de la ligne et entre en mode insertion à l’endroit du curseur.


Le mode visuel

En mode "normal" vous pouvez entrer dans le mode "visuel" avec v, V ou Ctrl-V.

  • v entre en mode "visuel" standard, caractère par caractère.

  • V entre en mode "visuel ligne", ligne par ligne.

  • Ctrl-V entre en mode "visuel bloc", qui permet de sélectionner un bloc rectangulaire de texte.

Une fois une zone de texte sélectionnée avec le mode "visuel", on peut lui appliquer les différentes actions : y pour la copier, d pour la couper, et toutes les autres actions.


Répéter la dernière modification

Le caractère . (point) répète la dernière opération de modification effectuée.

Recherche

En mode "normal" le caractère / (slash) démarrera une invite de recherche, vous pouvez donc entrer tout de suite le terme recherché.

Le caractère # recherche l’occurrence du mot sous le curseur avant dans le fichier. Le caractère \* recherche l’occurrence du mot sous le curseur dans la suite du fichier.

Pour naviguer entre les occurrences de recherche, les caractères n et N vous seront utiles.

Remplacement

Pour remplacer un seul caractère, entrez le caractère r puis celui que vous souhaitez substituer.

  • rg remplace le caractère sous le curseur par un 'g'.

Sur un nombre, Ctrl-A augmente ce nombre de 1, Ctrl-X le diminue de 1.

Pour remplacer du texte recherché, la forme générale est : :s/achercher/alaplace/g. voir :h :s pour les nombreux détails.

Indentation

La touche = correspond à l’action d’indentation. Elle peut être combinée avec les mouvements:

  • == indentera donc la ligne courante.

  • =j indentera la ligne courante et la suivante.

  • =ap indentera le paragraphe courant, vous commencez à comprendre la logique.

Répétition

Il est possible d’ajouter un numéro avant chaque action pour que celle-ci soit répétée autant de fois que souhaité.

  • 3dd coupera 3 lignes.

  • 3dw coupera 3 mots.

  • 3== indentera 3 lignes.

Retourner à l’endroit de la dernière modification

En mode "normal", la commande g; place le curseur à l’endroit de la dernière modification.


Mouvements avancés

Mouvements sur une ligne

En mode "normal", le caractère f suivi d’un autre caractère déplace le curseur jusqu’à ce dernier. Par exemple

  • f) déplace le curseur jusqu’à la prochaine parenthèse sur la ligne.

  • fe déplace le curseur jusqu’au prochain 'e' sur la ligne.

Le caractère F (majuscule) fais la même chose en sens inverse, vers le début de ligne.

Le caractère t suivi d’un autre caractère déplace le curseur juste avant ce caractère. Ainsi :

  • t; déplace le curseur jusqu’au caractère juste avant ';'. D’après-vous que fait la succession de lettres dt; lorsque vous être dans un programme C ?

Caractère correspondant

Le caractère '%' navigue entre caractères correspondants.

  • Sur une accolade ouvrante, % déplacera le curseur sur l’accolade fermante.

  • De même pour les parenthèses et le crochet '['.

Éléments de texte

En mode "normal", le caractère ')' déplacera le curseur au début de la phrase suivante. Essayez également '}'.

Éléments de texte avancés

  • p correspond à un objet paragraphe, dip coupera donc un paragraphe.

  • ( correspond à un objet parenthèse, di( coupera ce qu’il y a entre les parenthèses, da( coupera en plus les parenthèses.

  • t correspond à un "tag" ou balise html. yat dans un fichier html copiera la balise courante et son contenu.

  • s correspond à une phrase (sentence en anglais). cis coupera la phrase courante et entrera en insertion à l’endroit du début de la phrase.

  • b correspond à un bloc.

  • etc. (:h text-objects).

Il est possible de préciser un élément de texte lorsque l’on est en mode "visuel". Ainsi vib sélectionnera le bloc de texte autour du curseur.

Par exemple, essayez de faire vib une fois votre curseur au milieu du texte "(un mot puis un autre (et une autre parenthèse))"

Correction orthographique

En entrant la commande set spell spelllang=fr vous aurez la correction orthographique pour le français. Normalement Vim est en mesure de télécharger et installer les dictionnaires par lui-même.

Obtenir de l’aide

En mode normal, la commande :h ouvre l’aide générale. Pour obtenir de l’aide sur un sujet, ajouter ce sujet à la suite. Par exemple :h text-objects vous donnera la description des différents éléments de texte manipulable en mode "normal".