Vi - Définition

Source: Wikipédia sous licence CC-BY-SA 3.0.
La liste des auteurs de cet article est disponible ici.

Exemples de commandes

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
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
r remplace le caractère sous le curseur
: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'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
"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
Page générée en 0.110 seconde(s) - site hébergé chez Contabo
Ce site fait l'objet d'une déclaration à la CNIL sous le numéro de dossier 1037632
A propos - Informations légales
Version anglaise | Version allemande | Version espagnole | Version portugaise