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 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 jusqu’à la fin du mot
- dd → coupe la ligne complète
- d0 → coupe 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)
Coller
- p → colle les lignes copiées à la ligne en-dessous
- P → colle les lignes copiées au-dessus
Suppressions
- g/^#/d → permet de supprimer les lignes commençant par #
- g/^$/d → permet de supprimer les lignes vides (sans espace ni tabulation)
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
Recherche
- /coucou → permet de placer le curseur sur la prochaine occurrence de coucou
- n → permet de passer à l'occurence suivante (next)
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