Lundi 11 Décembre 2017, Saint Daniel 

MEZOTICAM::Développement et Évolution informatique



Infos préalables.

Le nom vi correspondant à la fois à des initiales et au nom de son fichier d'installation, il est usuellement prononcé en énonçant les deux lettres en anglais, c'est-à-dire « vi-aille », [vi: aɪ], plutôt que comme un mot à part entière [vi].
L'analogie de ce nom avec le chiffre romain VI (six) est fortuite.

vi est un éditeur modal, c'est-à-dire que la signification des boutons et des touches change selon le mode dans lequel il se trouve.
vi est devenu de facto l'éditeur standard d'unix et il a été l'éditeur favori de nombreux hackers jusqu'à l'arrivée d'Emacs en 1984. Il est à noter qu'Emacs est bien plus qu'un simple éditeur de texte et est pourtant souvent mis en concurrence avec vi. À ce jour (2011), vi ou l'un de ses clones peut être trouvé dans presque toutes les installations de Unix. La Single UNIX Specification (plus particulièrement l'« IEEE standard 1003.2, Part 2: Shell and utilities ») inclut vi. Ainsi, tout système se conformant à cette spécification intègre vi.


Exemples de commandes simples

Commande Effet
h et l déplace le curseur d'un caractère à gauche et à droite
j et k déplace le curseur sur la ligne suivante et précédente
G déplace le curseur à la fin du fichier
H et L déplace le curseur en haut [H] et en bas [L] de l'écran
a insère du texte après le curseur
A insère du texte à la fin de la ligne courante
c efface un certain nombre de caractères, en fonction de la sous-commande (par exemple cl permet de changer le caractère courant, cw la fin du mot courant) puis passe en mode insertion
dd supprime la ligne courante (et la copie dans le buffer)
dw supprime le mot après le curseur (et le copie dans le buffer)
dW supprime la chaîne de caractères après le curseur (s'arrête au prochain caractère blanc)
D supprime la fin de la ligne à partir du curseur
i insère du texte avant le curseur
o ouvre une nouvelle ligne en dessous de la ligne courante
O ouvre une nouvelle ligne au-dessus de la ligne courante
p (minuscule) insère le contenu du buffer après le curseur (ou après la ligne courante si le buffer contient des lignes)
P (majuscule) insère le contenu du buffer avant le curseur (ou avant la ligne courante si le buffer contient des lignes)
:q quitte vi
:q! quitte vi même si les modifications n'ont pas été enregistrées
:s remplace une chaîne de caractère par une autre. Par exemple, :s/avant/après/ remplace le mot « avant » par le mot « après » sur la ligne courante
u undo, annule les effets de la commande précédente
w place le curseur sur le premier caractère du mot suivant
:w enregistre le fichier courant
:wq ou :x ou ZZ enregistre le fichier courant et quitte
x supprime le caractère sous le curseur
yy copie la ligne courante dans le buffer (p insère la ligne copiée après la ligne courante)
y3y copie 3 lignes dont la ligne courante dans le buffer (p insère les 3 lignes copiées après la ligne courante)
yw copie le mot après le curseur dans le buffer (p insère le mot copié après le curseur)
y3w copie les 3 mots après le curseur dans le buffer (p insère les 3 mots copiés après le curseur)
/ recherche une chaîne de caractères après le curseur. Une pression sur la touche "n" permet d'aller directement à l'occurence suivante.
? recherche une chaîne de caractères avant le curseur
#commande exécute # fois la commande, par exemple 5dd efface 5 lignes
!commande exécute une commande shell, par exemple :!gcc -o hello hello.c
Echap quitte le mode insertion (retourne au mode commande)

Exemples de commandes avancées.

Commande Effet
>> ajoute une tabulation en début de ligne
<< retire une tabulation en début de ligne
"myy mémorise la ligne courante dans le registre "m
"mp insère le contenu du registre "m après la ligne courante ou après le curseur
:$ place le curseur à la dernière ligne du tampon
:1 (ou tout autre numéro) place le curseur sur la ligne correspondante
:.= renvoie le numéro de la ligne courante
:10,20t 100 copie les lignes 10 à 20 à la ligne 100
:100$m 50 déplace de la ligne 100 à la dernière ligne à la 50ème ligne
:10,20 s/TRUC/bidule/g remplace tous les TRUC par des bidule dans les lignes 10 à 20
:g!/machin/d efface les lignes ne contenant pas le texte machin
:g/machin/d efface les lignes contenant le texte machin
:r fichier.txt insère le contenu du fichier fichier.txt
:10,20w fichier.txt enregistre les lignes 10 à 20 dans le fichier fichier.txt
:e! ouvre à nouveau le fichier courant (sert par exemple si le fichier a été modifié entre temps)
:r!ls -l insère le résultat de la commande ls -l dans le fichier
:10,20g/condition/remplacer/resultat/gc remplace tous les remplacer par des resultat dans les lignes contenant condition, en demandant confirmation à chaque fois, entre les lignes 10 et 20
:40,50 g/condition/d efface les lignes contenant condition, entre les lignes 40 et 50
:s/.*/\U&/ passe la ligne courante en majuscule
:%s/^mot// efface le mot mot s'il est en début de ligne
:%s/foo/bar/g Remplace toutes les occurrences de foo par bar
:3,7s%foo/bar%bar/foo%c Remplace après confirmation (c) aux lignes 3 à 7 les occurrences de la sous-chaîne foo/bar par bar/foo. Cela montre que l'on peut utiliser un autre caractère séparateur que / (ici %)
:g/^[\.]*$/d supprime les lignes vides

    


 Mise à jour le 18 Août 2015 


depuis le 15/05/2009