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 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
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
Astuces
Suppressions
- g/^#/d → permet de supprimer les lignes commençant par #
- g/^$/d → permet de supprimer les lignes vides (sans espace ni tabulation)
- /coucou → permet de placer le curseur sur la prochaine occurrence de coucou
- ! → 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
Remplacement
- :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])