Vi / Vim
Introduction
Création d'un fichier texte
vi ou vim (alias sous CentOS) est un éditeur en mode console peu convivial certes, mais ultra puissant et qui s'utilise de la manière suivante:
vi <nom_fichier>
Après l’appui sur la touche entrer, le prompt disparaît pour laisser place à une série de tilde (~) qui indiquent que les lignes sont vides.
Les modes
Permutation
Il y a deux modes dans vi:
- le mode saisie;
- le mode commande.
Par défaut il est en mode commande et :
- la touche insert ou i permet de passer en mode insertion ;
- la touche Echap permet de revenir au mode commande.
Lorsque l'on est en mode insertion un nouvel appui sur la touche insert permet de passer en mode replace (remplacement).
Répétitions
n<commande>
Par exemple dd efface une ligne et 5dd efface 5 lignes
Quitter...
...en sauvant
Lorsque l'on a fini d'éditer son fichier texte, on peut le sauver en repassant en mode commande (touche Echap) et en tapant:
:wq
ou bien
:x
ou encore en appuyant deux fois sur la touche Z (deux Z majuscules)
...en abandonnant les modifications
Si l'on a fait une erreur et que l'on veut quitter sans sauver, on peut le faire en repassant en mode commande (touche Echap) et en tapant:
:q!
Éditer
Undo
u permet de défaire une modification
Repeat
. permet de répéter la dernière commande d’édition
Effacer
- x permet d’effacer le caractère courant
- c permet d’effacer le texte et de passer en mode insertion:
- cw → change du curseur jusqu’à la fin du mot
- c$ → change jusqu’à la fin de la ligne
- cc → change la ligne courante
Couper
- d permet de couper grâce à l’appui de:
- dw → coupe du curseur jusqu’à la fin du mot
- dd → coupe la ligne complète
- d$ → coupe du curseur à la fin de la ligne
- d^ → coupe du curseur au premier caractère non vide (pas une tabulation ou un espace)
- d0 → coupe du curseur jusqu’au début de la ligne
Copier
y permet de copier grâce à l’appui de:
- yw → copie du curseur à la fin du mot (nyw copie les n mots)
- yy → (yank) copie la ligne courante dans le buffer (nyy copie les n lignes)
- y0 → copie du curseur jusqu’au début de la ligne
Coller
- p → colle les lignes copiées en dessous du curseur
- P → colle les lignes copiées au-dessus du curseur
Suppressions
Dans tout le fichier
- g/^#/d → permet de supprimer les lignes commençant par #
- g/^$/d → permet de supprimer les lignes vides (sans espace ni tabulation)
Sur la ligne
- dfX → permet de supprimer du curseur jusqu'au caractère X
- dtX → permet de supprimer du curseur jusqu'au caractère X non inclue
Insertion
- o → permet d'insérer une ligne en-dessous du curseur
- O → permet d'insérer une ligne au-dessus du curseur
Remplacements
Au niveau fichier
- :s/toto/titi/g → permet de remplacer toutes les occurrences (grâce au /g) de toto par titi sur la ligne du curseur
- :%s/toto/titi/g → permet de remplacer toutes les occurrences (grâce au /g) de toto par titi dans tout le document (grâce au %)
- :[1,5]/toto/titi/g → permet de remplacer toutes les occurrences (grâce au /g) de toto par titi de la ligne 1 à la ligne 5 (grâce au [1,5])
Au niveau curseur
- x → permet de supprimer le caractère sur le curseur
- rX → permet de remplacer le caractère sur le curseur par X
- R → permet de passer en mode remplacement
Astuces
Placements
Dans la globalité du fichier
- A → permet de placer le curseur en mode insert à la fin de la ligne courante
- :X → permet de se déplacer à la ligne X du fichier
- XG → idem, permet de se déplacer à la ligne X du fichier
- G → permet de se déplacer à la fin du fichier
- `` → permet de revenir à la position précédente
Sur la partie présente à l'écran
- H → déplace le curseur à la première ligne visible à l'écran (HOME)
- M → déplace le curseur au milieu de l'écran (MIDDLE)
- L → déplace le curseur à la dernière ligne visible à l'écran (LAST)
Sur la ligne
- W → déplace le curseur sur le mot suivant sans tenir compte de la ponctuation
- w → déplace le curseur sur le mot suivant
- B → déplace le curseur sur le mot précédent sans tenir compte de la ponctuation
- b → déplace le curseur sur le mot précédent
- ^ → déplace le curseur sur le premier caractère non vide (pas une tabulation ou un espace)
- 0 → déplace le curseur au début de la ligne
- $ → déplace le curseur à la fin de la ligne
Recherche
- /coucou → permet de placer le curseur sur la prochaine occurrence de coucou
- n → permet de passer à l'occurence suivante (next)
- fX permet de recherche le caractère X en avant en appuyant sur ;
- FX permet de recherche le caractère X en arrière en appuyant sur ;
Exécution
- ! → permet d’exécuter une commande depuis vi, cela démarrera un Shell interactif.
- :sh → permet de passer l’éditeur de texte en arrière plan pour avoir un shell et ctrl+d permet de le reprendre