vi est un des plus anciens éditeurs de texte sous Unix. Certains utilisateurs de Unix ne peuvent pas s'en passer... D'autres trouvent que vi est beaucoup trop difficile à utiliser... Choisissez votre camp !
vi nom_fichier
i insert insertion avant le curseur I insert insertion au début de la ligne a append insertion après le curseur A append insertion à la fin de la ligne o open ouvre une ligne blanche en dessous de la ligne courante O open ouvre une ligne blanche au dessus de la ligne courante ctrl v insert insertion d'un caractère de contrôle
J concatenate concatène la ligne suivante à la fin de la ligne courante
/\ curseur déplacement d'une ligne vers le haut
\/ curseur déplacement d'une ligne vers le bas
<= curseur déplacement d'un caractère vers la gauche
=> curseur déplacement d'un caractère vers la droite
w word avance au début du mot suivant
b word avance au début du mot précédent
e word avance à la fin du mot courant ou suivant
ctrl f forward page suivante
ctrl b backward page précédente
ctrl d forward descend d'une demi-page
ctrl u backward monte d'une demi-page
ctrl e forward descend d'une ligne
ctrl y backward monte d'une ligne
^ ou 0 début de la ligne courante
$ fin de la ligne courante
G fin du fichier
l déplacement d'un caractère vers la droite
h déplacement d'un caractère vers la gauche
k déplacement d'un caractère vers le haut, même colonne
j déplacement d'un caractère vers le bas, même colonne
SPACE déplacement d'un caractère vers la droite
BACKSPACE déplacement d'un caractère vers la gauche
- déplacement vers le début de la ligne supérieure
+ déplacement vers le début de la ligne inférieure
RETURN déplacement vers le début de la ligne inférieure
) déplacement vers le début de la phrase suivante
( déplacement vers le début de la phrase courante ou précédente
{ déplacement vers le début du paragraphe suivant
} déplacement vers le début du paragraphe courant ou précédent
/toutou recherche la chaîne "toutou" à partir de la position actuelle du curseur
vers le bas du fichier
?toutou recherche la chaîne "toutou" à partir de la position actuelle
du curseur vers le haut du fichier
n new recherche la prochaine occurence de la chaîne "toutou"
recherche vers le bas du fichier
N new recherche l'occurence précédente de la chaîne "toutou"
recherche vers le haut du fichier
x suppression du caractère sous le curseur X suppression du caractère précédent le curseur dd delete suppression de la ligne courante D delete suppression du curseur jusqu'à la fin de la ligne yy yank copie la ligne courante dans le buffer p paste colle la ligne contenu dans le buffer après la ligne courante P paste colle la ligne contenu dans le buffer avant la ligne courante ctrl h suppression du caractère à gauche du curseur ctrl w suppression du mot à gauche du curseur ctrl u suppression de la ligne courante Les commandes x, X, dd, et yy peuvent être précédées d'un facteur multiplicateur de leur action. Par exemple 7dd supprimera la ligne courante et les 6 lignes suivantes.
r replace remplace le caractère sous le curseur par un nouveau caractère
s replace remplace le caractère sous le curseur par de nouveaux caractères
pour terminer appuyer sur la touche <Echap>
R replace remplace tous les caractères par de nouveaux caractères
pour terminer appuyer sur la touche <Echap>
C change remplace depuis le curseur jusqu'à la fin de la ligne par de
nouveaux caractères. Pour terminer appuyer sur la touche <Echap>
cw change remplace le mot courant par de nouveaux caractères
pour terminer appuyer sur la touche <Echap>
cc change remplace la ligne courante par de nouveaux caractères
pour terminer appuyer sur la touche <Echap>
u undo annule la dernière commande et seulement la dernière . répète répète le changement précédent
Les expressions régulières servent à manipuler le fichier texte dans son ensemble.
. représente un caractère quelconque
* multiplicateur du caractère précédent
^ début de ligne
$ fin de ligne ou fin de fichier
% représente de la première à la dernière ligne (abbréviation pour 1,$)
\ permet de représenter les caractères . * ^ $
en le mettant devant. Exemple : \* ou \$
\1 permet la réécriture de l'expression régulière lors d'une substitution
s commande de substitution
d commande de destruction de lignes
: passage en mode commande globale
g parcours global du fichier ou de la ligne
:1,$s/neant/bof/g de la ligne 1 à la dernière ligne, substitution de la chaîne neant
par la chaîne bof
:1,$s/neant/bof/ idem mais seulement pour la première occurence de la chaîne neant par ligne
:1,3s/^.*=/BRAVO/ de la ligne 1 à la ligne 3, substitution du début de la ligne (^) jusqu'au
(.*) caractère = par la chaîne BRAVO
:1,$s/B.*O/\1 Veinard/ rajoute aux mots commençant par B et terminant par O, le mot "Veinard"
:1,$s/.$// suppression du dernier ($) caractère quel qu'il soit (.)
:10,20d suppression des lignes 10 à 20
:g/^#/d suppression des lignes commençant par un #
:g/ctrl v ^M/s//ctrl v return/g suppression des ^M en milieu de ligne et substitution
par un vrai retour à la ligne. Taper sur "Enter" pour obtenir le 'return'.
:set showmode indique le mode (insertion ou commande) en bas de la fenêtre
:set number affiche le numéro de chaque ligne
:155 positionne sur la ligne 155
:set filetype=unix transforme le type DOS d'un fichier en type UNIX
ctrl l rafraîchit l'écran
ctrl g donne des informations (positionnement, nom du fichier, ....)
:n édite le fichier suivant si de multiples fichiers ont été donnés en
argument de la commande vi
:w write sauvegarde le fichier en cours d'édition :q quit abandonne l'édition :q! quit abandonne l'édition sans sauvegarder le fichier :x exit sauvegarde le fichier en cours d'édition et abandonne l'édition (idem :wq ou ZZ)
man vi
Il existe une version "graphique" de vi dont le nom est gvim