Utilisation de vi

De Linux France.

Manuel de survie...

Sommaire

[modifier] Introduction

[modifier] Présentation

vi offre deux modes de fonctionnement: le mode commande et le mode insertion.

Au démarrage il est en mode commande, qui permet de déplacer le curseur, de parcourir le document et de copier-coller. On le quitte, en entrant du même coup en mode insertion, en utilisant une commande d'insertion ou de modification.

En mode insertion il est possible de saisir du texte. Appuyer sur la touche [ESC] pour revenir en mode commande.

De nombreuses commandes peuvent être préfixées du nombre de répétitions souhaitées, par exemple 5w avance le curseur de 5 mots (words).

[modifier] Commandes et combinaisons de touches

Saisir les combinaisons proposées ci-après telles quelles, seuls les éléments en italiques y sont à interpréter. La première combinaison proposée, par exemple, est :w donc implique de taper sur la touche ':' puis sur la touche 'w'. La combinaison « [CTRL]x » implique quant à elle de maintenir la touche Ctrl enfoncée tout en appuyant sur la touche 'x', puis de les relâcher.

Pour lancer vi en lui demandant de charger (ouvrir) un fichier: vi nom_du_fichier

[modifier] Sauvegarder un fichier - quitter vi

:w
sauvegarde le fichier (penser à write)
:wq
sauvegarde le fichier et quitte vi (write and quit)
:q
quitte vi sans sauvegarder les modifications (quit)
:e!
ignore les modifications et recharge le fichier (le point d'exclamation marque l'impératif)
:q!
quitte immédiatement, sans rien faire d'autre
:w nom_de_fichier
sauvegarde le fichier sous le nom nom_de_fichier
:w! nom_de_fichier
remplace le contenu du fichier nom_de_fichier
ZZ
sauvegarde si nécessaire, puis quitte

[modifier] Se déplacer dans le document édité

[CTRL]f
descend d'une page (forward, en avant)
[CTRL]b
remonte d'une page (back, en arrière)
[CTRL]d
descend d'1/2 page
[CTRL]u
remonte d'1/2 page
:X
va à la ligne numérotée X (X est un entier)

[modifier] Déplacer le curseur

H
en haut de l'écran
M
au milieu de l'écran
L
en bas de l'écran (lower, au plus bas)
h
décale d'un caractère à gauche
j
descend d'une ligne
k
monte d'une ligne
l
décale d'un caractère à droite
O
au début de la ligne
$
à la fin de la ligne ('$', dans un motif de regexp, désigne la fin d'une ligne)
w
au début du mot suivant (word, mot)
e
à la fin du mot suivant (end, fin)
b
recule d'un mot (back, retour)
{
avance jusqu'au paragraphe suivant
}
recule jusqu'au paragraphe précédent
(
avance jusqu'à la phrase suivante
)
recule jusqu'à la phrase précédente

[modifier] Insérer du texte

i
active le mode insertion
a
active le mode insertion, un caractère après le curseur (append, ajouter)
I
insère au début de la ligne
A
insère à la fin de la ligne
O
insère une ligne en dessus du curseur et passe en mode insertion (open, ouvrir)
o
insère une ligne en dessous du curseur et passe en mode insertion
[ESC]
Quitte le mode insertion, revient en mode commande

[modifier] Remplacer du texte

rx
remplace le caractère à la position du curseur par x (x remplace ici n'importe quel caractère)
R
remplace, avec ce qui sera saisi ([ESC] pour terminer)
cw
remplace uniquement le mot à la position du curseur (word, mot) ([ESC] pour terminer)
cnw
remplace n mots ([ESC] pour terminer)
C
remplace la ligne ([ESC] pour terminer)

[modifier] Supprimer du texte

x
supprime un caractère (« faire une croix dessus »)
dw
supprime un mot (delete, détruire)
dnw
supprime n mots
dd
supprime une ligne
ndd
supprime n lignes

[modifier] Copier-coller

Y
copie une ligne, donc la place dans un tampon, pour pouvoir ensuite la coller (yank, tirer)
nY
copie n lignes
P
colle les lignes avant le curseur (paste, coller)
p
colle les lignes après le curseur

[modifier] Annuler ou répéter des modifications

u
annule la dernière modification (undo, défaire)
U
annule toutes les modifications effectuées sur la ligne courante
.
(un point) répète les dernières modifications

[modifier] Copier-coller de texte dans un fichier

ma
marque la position "a" dans le fichier
mb
marque la position "b" dans le fichier
:'a,'b nom_de_fichier
copie dans le fichier nommé nom_de_fichier le texte situé entre la position "a" et la position "b"

[modifier] Insertion du contenu d'un autre fichier

:r nom_de_fichier
insère tout le contenu du fichier nommé nom_de_fichier (read, lire)

[modifier] Rechercher et remplacer

/motif
recherche motif en allant vers la fin du document
?motif
recherche motif en allant vers la début du document
n
répète la dernière recherche (next, suivant)
N
retourne au résultat de la précédente recherche effectuée
//[RET]
répète la dernière recherche
:x,y s/motif/motif2/g
recherche le motif, en allant de la ligne numérotée x à la ligne y, et la remplace par motif2
:g/motif/s//motif2/g
recherche dans tous les fichiers le motif et la remplace par motif2 (global)
:g/motif/s//motif2/gc
idem, mais demande une confirmation avant de remplacer

[modifier] Rafraîchir l'affichage

C'était très utile avec les anciens terminaux et les liaisons réseau erratiques provoquant des problèmes d'affichage. Cela ne l'est plus guère.

[CTRL]l
(control-L) rafraîchit l'affichage
%[RET]
rafraîchit l'affichage et place le curseur en haut
%
rafraîchit l'affichage et place le curseur au milieu
%-
rafraîchit l'affichage et place le curseur en bas

Auteur: Jérôme Desmoulins (septembre 1999)
Wikisé par Nat.