UNIX : L'éditeur vi

Qu'est-ce que le Vi ?

Le Vi est un puissant éditeur de texte ASCII sous UNIX. Il est compatible avec une majorité de terminaux, mais peut sembler d'un premier abord assez rébarbatif par l'utilisation du clavier pour toute intervention.

Contents Haut

Présentation du vi

Vi dispose de 2 modes :

  • un mode commande (mode par défaut)
  • un mode de frappe (ajout de texte dans le fichier)

L'appel de vi se fait de la façon suivante :

  • vi "fichier" ou fichier est le nom du fichier que l'on veut éditer.
  • Si ce fichier existe, alors on peut voir apparaître à l'écran son texte.

Contents Haut

Commandes du vi

Conventions:

  • n, n1, n2 = nombres quelconques.
  • ^X = touche <CTRL> X (X touche quelconque).
  • chaîne, chaîne1, chaîne2 = chaînes de caractères.

Contents Haut

Passage du mode COMMANDE en mode FRAPPE

<i>
Insérer du texte à l'endroit où se trouve le curseur
<a>
Ajouter du texte après le curseur
<I>
Insérer du texte en début de ligne
<A>
Ajouter du texte en fin de ligne
<o>
Ajouter une nouvelle ligne sous la ligne courante
<O>
Ajouter une nouvelle ligne au dessus la ligne courante

Contents Haut

Passage du mode saisie en mode COMMANDE

<ESC>
Passer en mode COMMANDE

Contents Haut

Commandes de sortie / sauvegarde d'édition:(Mode commande)

:w
Sauver le texte
:w!
Forcer la sauvegarde
:q
Quitter sans modifier
:q!
Quitter après une modification que l'on ne désire pas sauvegarder
:wq
Sauver et quitter
:wq!
Forcer la sauvegarde et quitter

Contents Haut

Commandes de Défilement du texte:(Mode commande)

<h> ou <BAKSPACE>
Déplacer le curseur vers la gauche
<j>
Déplacer le curseur d'une ligne vers le bas
<k>
Déplacer le curseur d'une ligne vers le haut
<:>n <RETURN>
Positionner le curseur sur la ligne n dufichier.Si n ='$' alors position en fin de fichier
<CTRL> <F>
Faire défiler le texte d'une page vers le bas
<CTRL> <U>
Faire défiler le texte d'une page vers le haut

Contents Haut

Commandes de suppression de texte: (Mode commande)

<x>
Supprimer le caractère courant
<d>
Supprimer la ligne Courante
<j>
Déplacer la ligne située sous la ligne courante vers le dernier caractère de la ligne courante
n<x>
Supprimer n caractères à partir du caractère courant
n<d>
Supprimer n lignesà partir de la ligne courante

Contents Haut

Autres commandes: (Mode commande)

<u>
Annuler la dernière commande
<CTRL> <G>
Afficher le nombre de ligne et le numéro de la ligne courante
</> "expression"
Rechercher la première occurrence de "expression" vers le bas
</> ou <n>
Rechercher l'occurrence suivante de "expression"

Contents Haut

Commandes de déplacement du curseur (mode commande)

^F (Forward)
Faire défiler d'une page vers le bas
^U (Upward)
Faire défiler d'une page vers le haut
0(zéro)
Positionner le curseur en début de ligne
L
Positionner le curseur sur la dernière ligne de la page courante
M
Positionner le curseur sur la ligne centrale de l'écran courant
nG (Go)
Positionner le curseur sur la ligne n
H
Positionner le curseur sur la première ligne de la page courante
e
Positionner le curseur au début du mot courant
E
Positionner le curseur en fin du mot courant
nl
Avancer le curseur de n caractères
$ (End)
Avancer le curseur en fin de ligne
w(word)
Avancer le curseur d'un mot
nw
Avancer le curseur de n mots
nh
Reculer le curseur de n caractères
nW
Reculer le curseur de n mots
nj
Descendre le curseur de n lignes
nk
Remonter le curseur de n lignes

Contents Haut

Commandes de passage en mode frappe de texte ( à la fin de ces commandes, passage en mode insertion)

O
Inserer une ligne blanche au dessus de la ligne courante
A (Append)
Ajouter des caractères en fin de ligne
I (Insert)
Insérer des caractères en début de ligne
o
Ajouter une ligne blanche au dessous de la ligne courante
a
Ajouter des caractères après le caractère courant
i
Insérer des caractères en avant le caractère courant

Contents Haut

Commandes de modification du texte (mode commande)

J
Concaténer la ligne courante et la ligne en dessous
d$ (Del End)
Supprimer la fin de la ligne courante
u (Undo)
Annuler la dernière commande
nx (ex: 2x)
Supprimer n caractères
ndd (ex: 2dd)
Supprimer n lignes
dw
Supprimer de la position courante à la fin du mot courant
r (suivit du nouveau caractère)
Remplacer un seul caractère
R texte <ESC>
Remplacer plusieurs caractères
cw chaîne <ESC> (Change Word)
Remplacer un mot à partir de la position courante
C chaîne <ESC>
Remplacer jusqu' à la fin de ligne

Contents Haut

Recherche et remplacement de chaîne de caractères (mode commande)

/chaîne
Rechercher une chaîne de caractère vers la fin du fichier
?chaîne
Rechercher une chaîne de caractère vers le début du fichier
n (Next)
Poursuivre la dernière recherche
:n1,n2 s/chaîne1/chaine2"/g
Remplacer lachaîne1 (toutes les occurrences de chaîne1) ,par la chaîne2 depuis la ligne n1 jusqu'à la ligne n2.
Si n2 est égal à $ alors on effectue le remplacement jusqu'à la fin du document.

Contents Haut

Utilisation de la mémoire tampon (mode commande)

Y (Yank)
Pour copier la ligne courante dans le tampon
nY
Pour copier n lignes à partir de la ligne courante dans le tampon
yw
Pour copier le mot courant dans le tampon
y$
Pour copier la fin de la ligne courante dans le tampon
p (put)
Pour ajouter le contenu du buffer au dessous la ligne courante
P
Pour insérer le contenu du buffer au dessus de la ligne courante

Contents Haut

Autres commandes en vrac

<CTRL> G
Pour avoir des informations sur le fichier courant (nom, position courante, fichier modifié ou non, nombre de lignes du fichier)
:e "fichier" (Edit)
Pour éditer un autre fichier, après avoir sauvegardé le fichier, courant sans sortir de vi
 :e! "fichier"
Pour éditer un autre fichier, sans sauvegarder le fichier (abandon des modifications), courant sans sortir de vi
:q! (quit)
Pour sortir de vi sans sauvegarder le fichier courant
vi fic1 fic2 fic3 fic4
Pour éditer plusieurs fichiers (fic1 fic2 fic3 fic4)
:n (Next)
Pour passer au fichier suivant, après avoir sauvegardé le fichier courant
:n!
Pour passer au fichier suivant, sans sauvegarder le fichier courant
:se nu (set numbering)
Pour afficher le numéro des lignes
:se nonu
Pour enlever le numéro des lignes
:ts=n<RETURN> (Tabulation Size)
Pour changer le nombre n d'espace (8 par défaut)imprimés par la touche <TAB>
:se ai
Pour mettre en place le système d'auto indentation
:! "programme"
Pour exécuter depuis vi un programme externe
: set showmode
Pour afficher le mode courant de vi (Insertion , Ajout, etc.)
. (point)
Pour répéter la dernière commande
<CTRL> L
Rafraîchissement de l'écran quand le curseur ne semble pas être placé au bon endroit

English translation

You have asked to visit this site in English. For now, only the interface is translated, but not all the content yet.

If you want to help me in translations, your contribution is welcome. All you need to do is register on the site, and send me a message asking me to add you to the group of translators, which will give you the opportunity to translate the pages you want. A link at the bottom of each translated page indicates that you are the translator, and has a link to your profile.

Thank you in advance.

Document created the 19/03/2002, last modified the 26/10/2018
Source of the printed document:https://www.gaudry.be/en/unix-editeur-vi.html

The infobrol is a personal site whose content is my sole responsibility. The text is available under CreativeCommons license (BY-NC-SA). More info on the terms of use and the author.