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.

Inhoudsopgave 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.

Inhoudsopgave 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.

Inhoudsopgave 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

Inhoudsopgave Haut

Passage du mode saisie en mode COMMANDE

<ESC>
Passer en mode COMMANDE

Inhoudsopgave 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

Inhoudsopgave 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

Inhoudsopgave 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

Inhoudsopgave 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"

Inhoudsopgave 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

Inhoudsopgave 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

Inhoudsopgave 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

Inhoudsopgave 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.

Inhoudsopgave 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

Inhoudsopgave 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

Nederlandse vertaling

U hebt gevraagd om deze site in het Nederlands te bezoeken. Voor nu wordt alleen de interface vertaald, maar nog niet alle inhoud.

Als je me wilt helpen met vertalingen, is je bijdrage welkom. Het enige dat u hoeft te doen, is u op de site registreren en mij een bericht sturen waarin u wordt gevraagd om u toe te voegen aan de groep vertalers, zodat u de gewenste pagina's kunt vertalen. Een link onderaan elke vertaalde pagina geeft aan dat u de vertaler bent en heeft een link naar uw profiel.

Bij voorbaat dank.

Document heeft de 19/03/2002 gemaakt, de laatste keer de 26/10/2018 gewijzigd
Bron van het afgedrukte document:https://www.gaudry.be/nl/unix-editeur-vi.html

De infobrol is een persoonlijke site waarvan de inhoud uitsluitend mijn verantwoordelijkheid is. De tekst is beschikbaar onder CreativeCommons-licentie (BY-NC-SA). Meer info op de gebruiksvoorwaarden en de auteur.