Vous êtes sur la page 1sur 3

Les commandes VI (lunix) :

Exemples de commandes simples :

Le tableau qui suit donne quelques commandes basiques de l'éditeur vi, nécessaires aux tâches
d'édition les plus 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
efface un certain nombre de caractères, en fonction de la sous-
c 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
insère le contenu du buffer après le curseur (ou après la ligne courante
p (minuscule)
si le buffer contient des lignes)
insère le contenu du buffer avant le curseur (ou avant la ligne courante
P (majuscule)
si le buffer contient des lignes)
:q quitte vi
:q! quitte vi même si les modifications n'ont pas été enregistrées
r remplace le caractère sous le curseur
remplace une chaîne de caractère par une autre. Par exemple,
:s :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

-1-
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'occurrence 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 :

Les commandes suivantes montrent ce que permet vi quand un utilisateur cherche des
commandes d'édition plus pointues.

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
insère le contenu du registre "m
"mp 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

-2-
ouvre à nouveau le fichier courant
:e! (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
remplace tous les remplacer par des
resultat dans les lignes contenant
:10,20g/condition/remplacer/resultat/gc 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
Remplace après confirmation (c)
aux lignes 3 à 7 les occurrences de
:3,7s%foo/bar%bar/foo%c
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

-3-