Vi est un puissant éditeur de textes. On le rencontre souvent sous linux dans une version améliorée appelée vim. L’utilisation de vi est complexe pour le débutant, mais les efforts d’apprentissage sont récompensés par la puissance et la rapidité des tâches que l’on peut exécuter avec un peu de pratique.
Options
Option |
Commentaire |
-b |
Mode binaire. Permet l’édition d’un fichier binaire ou exécutable. |
-g |
Active l’interface graphique si vi a été compilé avec le support d’une interface graphique. Équivalent à la commande gvim pour la version améliorée de vi, vim. |
-r fichier |
Mode récupération. Le fichier d’échange fichier est utilisé pour récupérer une session après un crash. |
-v |
Mode vue. L’option lecture seule est activée. L’édition est cependant possible mais le fichier est protégé contre un effacement accidentel et il faut forcer l’écrasement avec le point d’exclamation. |
— |
Marque la fin des options. Cela permet d’éditer un fichier dont le nom commence par un tiret. |
Les modes vi :
Vi possède deux modes de fonctionnement :
Le mode commande (Mode par défaut au démarrage).
Le mode insertion.
Le mode commande
Le mode commande est actif dès le lancement. On peut alors :
Activer le mode insertion.
Lancer les commandes d’édition du texte.
Déplacer le curseur dans le fichier.
Lancer un shell.
Sauvegarder le fichier ou quitter l’éditeur.
Le mode insertion
La saisie du texte se fait en mode insertion . On quitte le mode insertion avec la touche Echap et l’on se retrouve alors en mode commande . L’activation du mode insertion se fait avec les commandes suivantes :
Touche |
Commentaire |
a |
Insertion après le curseur. |
A |
Insertion en fin de ligne. |
c |
Début d’une opération de remplacement. |
C |
Remplacement jusqu’en fin de ligne. |
i |
Insertion avant le curseur. |
I |
Insertion en début de ligne. |
o |
Insertion à la ligne suivante. |
O |
Insertion à la ligne précédente. |
R |
Active le mode écrasement. |
s |
Remplace un caractère. |
S |
Remplace une ligne entière. |
Déplacement du curseur
Touche |
Commentaire |
h |
Un caractère vers la gauche . |
j |
Un caractère vers le bas. |
k |
Un caractère vers le haut. |
l ou ESPACE |
Un caractère vers la droite. |
Texte
Touche |
Commentaire |
w ou W |
Début du mot suivant. |
b ou B |
Début du mot courant. |
e ou E |
Fin du mot courant. |
) |
Début de la phrase suivante. |
( |
Début de la phrase précédente. |
}
|
Début du paragraphe suivant. |
{
|
Début du paragraphe précédent. |
] |
Début de la section suivante. |
[ |
Début de la section précédente. |
Lignes
Touche |
Commentaire |
^ |
Début de ligne. |
$ |
Fin de ligne. |
- |
Premier caractère de la ligne précédente. |
+ ou Entrée |
Premier caractère de la ligne suivante. |
H |
Première ligne de l’écran. |
L |
Dernière ligne de l’écran. |
] |
Début de la section suivante. |
[ |
Début de la section précédente. |
Écrans
Touche |
Commentaire |
CTRL-f |
Avance d’un écran. |
CTRL-b |
Recule d’un écran. |
z Entrée |
Positionne la ligne active en haut de l’écran. |
z. |
Positionne la ligne active au centre de l’écran. |
z- |
Positionne la ligne active en bas de l’écran. |
Recherche
Touche |
Commentaire |
/ motif |
Recherche motif vers l’avant. |
/ |
Répétition de la recherche vers l’avant. |
? motif |
Recherche motif vers l’arrière. |
? |
Répétition de la recherche vers l’arrière. |
n |
Répète la dernière opération de recherche. |
% |
Déplacement vers le crochet, la parenthèse ou l’accolade correspondant à celui ou se trouve le curseur. |
Commandes d’édition
Saisie de texte
Touche |
Commentaire |
a |
Insertion après le curseur. |
A |
Insertion en fin de ligne. |
i |
Insertion avant le curseur. |
I |
Insertion en début de ligne. |
Esc |
Fin du mode édition. |
Entrée |
Passe à la ligne suivante. |
Modification de texte
Touches |
Commentaire |
cw |
Modifie le mot courant. |
cc |
Modifie la ligne courante. |
C |
Modifie du curseur jusqu’à la fin de la ligne. |
dd |
Supprime la ligne en cours. |
dw |
Supprime le mot courant. |
D |
Efface du curseur à la fin de la ligne. |
d^ |
Efface du début de la ligne jusqu’au curseur. |
d/ motif |
Efface jusqu’à la première occurrence de motif . |
p |
Insère après le curseur la dernière portion de texte supprimée ou copiée. |
P |
Insère avant le curseur la dernière portion de texte supprimée ou copiée. |
rx |
Remplace le caractère courant par x. |
R |
Active le mode remplacement de texte. |
u |
Annule la dernière opération. |
U |
Annule toutes les opérations effectuées sur la ligne courante. |
. |
Répète la dernière opération. |
~ |
Change la casse du caractère sous le curseur. |
J |
Fusionne deux lignes (join). |
Copie et déplacement de texte
Touches |
Commentaire |
Y |
Copie la ligne courante dans un nouveau tampon. |
yy |
Copie la ligne courante. |
"xyy |
Copie la ligne courante dans le tampon x. |
"xd |
Supprime la ligne courante et la place dans le tampon x. |
"Xd |
Supprime la ligne courante et l’ajoute au tampon x. |
"xp |
Insère le contenu du tampon x. |
Sauvegarder et quitter
Touches |
Commentaire |
ZZ |
Quitte l’éditeur et enregistre le fichier s’il a été modifié. |
:x |
Identique à ZZ. |
:w |
Enregistre le fichier. |
:wq |
Enregistre le fichier et quitte l’éditeur. |
:w!
|
Enregistre le fichier en passant outre les protections (fichier ouvert en lecture seule, par exemple). |
:q |
Quitte l’éditeur. |
:q!
|
Quitte l’éditeur sans enregistrer les dernières modifications. |
:e fichier |
Édite le fichier fichier sans quitter vi. |
:n |
Édite le fichier suivant. |
:n fichiers |
Spécifie une nouvelle liste de fichiers . |
:args |
Affiche la liste des fichiers à éditer. |
Commandes "shell"
Touches |
Commentaire |
:r fichiers |
Insère le contenu de « fichier » . |
:r! commande
|
Insère le résultat de « commande » . |
:n1,n2! commande
|
Envoie les lignes n1 à n2 à « commande » et les remplace par la sortie de « commande » . |
!! |
Répète la dernière commande système. |
Historique des modifications
Version |
Date |
Commentaire |
0.1 |
2002 |
Thierry COLAS, auteur original du document « Lignes de commandes - le pense bête de COAGUL » |
0.2 |
2004 |
Marc POIROUD pour la conversion en LATEX , PDF et HTML. Gnunux, pour sa relecture |
0.3 |
11/03/05 |
Tony pour la conversion au format OOo / Spip et le découpage en 7 articles. |
Commentaires
> Les commandes et options de VI / VIM
1/ Je pense que tu as raison
2/ Je n’ai pas compris ce que tu voulais dire. Si tu penses qu’il faut ajouter un espace denvant ":w !", je ne suis pas d’accord.
> Les commandes et options de VI / VIM
Bon je viens de voir un autre article, je retire le point 3/ ;)
> Les commandes et options de VI / VIM
1/ C’est "-" ou "—" ? Généralement on met "—" et je ne trouve pas "-" dans le man (imense de vim) mais "—". Donc j’ai un doute :)
extrait du man :
— Denotes the end of the options. Arguments after this will
be handled as a file name. This can be used to edit a
filename that starts with a ’-’.
2/ ":w !" ":q !" il n’y a pas d’espace. (c’est ":w !" et ":q !")
3/ Concernant l’historique du document, je pense que c’est un copier malencontreux non ? Je ne me souviens pas avoir vu parlé de vim dans le document cité.