00a - vim

Haut de page

Introduction

La très grande majorité des configurations de Linux se réalisent à l’aide de fichiers texte.

Beaucoup de commandes sont faites pour traiter du texte: for, while, sed, grep, cut, les expressions régulières…

Pour éditer les fichiers texte, nous avons commencé à voir vim qui a de nombreux avantages: extrêmement puissant, présent sur tous les systèmes *NIX, très léger, fonctionne aussi en connexion à distance ou sur des systèmes sans interface graphique…

En bref, vim est un outil indispensable à maitriser lorsque l’on travaille sur des systèmes *NIX.

Nous verrons ensuite des exemples de fichiers de configuration, leur rôle et certains de leurs paramètres.

vim

Les modes

vim propose 3 modes de travail: normal, visuel et insertion.

  • Le mode normal est le mode par défaut. Tout ce qui est tapé dans le mode normal est interprété comme étant une commande (copier, supprimer, coller…) et non pas comme du texte à insérer. Ceci inclut les commandes pour passer d’un mode à l’autre. En tous temps on peut revenir au mode normal en tapant ESC.

  • Le mode visuel permet de voir ce qu’on sélectionne pour faire du copier/coller par exemple. On y accède avec la commande (pour sélectionner les caractères un par un en se déplaçant) ou pour sélectionner des lignes entières en montant ou en descendant.

  • Le mode insertion permet d’ajouter du texte, de le modifier… Il existe plusieurs façon d’y accéder dont i à l’emplacement du curseur, a juste après la position du curseur, I au début de la ligne et A à la fin de la ligne.

Mouvements

Voici une liste de mouvements et la façon de les réaliser.

Mouvement Commande
Un caractère à gauche h
Un caractère à droite l
Une ligne en bas j
Une ligne en haut k
Un mot à droite w (word)
Un mot à gauche b (backward)
Début de la ligne 0
Fin de la ligne $
Vers un numéro de ligne :numéro :100 à la 100ème ligne, :$ fin du fichier

Une des grandes puissances de vim est la possibilité de modifier les commandes à l’aide de quantificateurs par exemples.

Ainsi, si je veux me déplacer de 3 mots vers la droite:

  • 3w

Descendre de 50 lignes:

  • 50j

Reculer de 3 caractères:

  • 3h

Opérations de base en mode normal

Copier/coller

La commande pour copier est y (yank en Anglais).

Il faut ensuite spécifier ce que l’on souhaite copier.

À copier Commande
Une ligne yy
Un mot yw
Un caracte à droite yl
Trois lignes y3y
Trois mots y3w
Trois caractères à droite y3l

Pour coller en mode normal, on utilise p ou P (paste).

p permet de coller après le curseur s’il s’agit de caractères ou de mots ou en dessous de la ligne s’il s’agit de ligne(s) à coller.

P permet de coller avant le curseur s’il s’agit de caractères ou de mot ou au dessus de la ligne s’il s’agit de lignes.

Il est aussi possible de coller plusieurs fois ce qui a été copié en utilisant un quantificateur:

3p colle 3 fois ce qui a été copié après ou en-dessous du curseur.

5P coller 5 fois ce qui a été copié avant ou au-dessus du curseur.

Modification, répétitions, recherche

Il existe une modification simple qui se fait en mode normal, il s’agit du remplacement de caractère(s).

Pour remplacer un caractères, on se positionne sur ce caractère puis la commande r et le nouveau caractère.

Pour remplacer plusieurs caractères, on se positionne sur le premier caractère à modifier puis on utilise la commande R. Tous les caractères ensuite tapés remplceront ce qui est présent dans le texte jusqu’à la touche ESC.

Pour répéter une action, se positionner à l’endroit où dit avoir lieu la répétition puis utiliser la commande ..

Pour annuler des actions, utiliser la commande u (undo).

La recherche se fait à l’aide /. Pour l’élément suivant , pour l’élément précédent .

Suppression (couper)

Pour supprimer un caractère à droite du curseur: x.

Pour supprimer un caractère à gauche du curseur: X.

Les autres commandes de suppression commencent par d (delete).

Suppression Commande
Une ligne dd
Un mot dw
Jusqu’à la fin de la ligne d$
Jusqu’au début de la ligne d0
Trois lignes 3dd
Quatre mots 4dw

Entrer en mode insertion

Commande
À l.emplacement du curseur i
Après le curseur a
Au début de la ligne I
À la fin de la ligne A
Insérer une ligne en-dessous o
Insérer une ligne au-dessus O
Modification de texte cw, ci", c$,…(Voir ci-dessous)

Modification en mode insertion

Pour modifier du texte en mode insertion on utilisera la commande c (change).

Changer un mot: cw

Changer jusqu’à la fin de la ligne: c$

Changer jusqu’au début de la ligne: c0

Changer jusqu’au prochain ‘u’: ctu (change to ‘u’)

Si vous êtes dans un mot (pas au début) ou en deux " ou deux (, il est possible de changer le mot, ce qui se trouve entre les " ou les ( à l’aide la commande ci (change in).

Dans le mot: ciw

Entre les “: ci”

Aide mémoire