Utilisation de vi
Par pako, mardi 8 novembre 2005 à 21:49 :: General :: #36 :: rss
Aide-mémoire de l'éditeur "vi"
Généralités
Un éditeur de texte est un outil qui permet de créer ou de modifier des fichiers texte. L'éditeur "vi" [visual editor] est l'éditeur plein écran standard du monde Unix. Il provient de l'Unix BSD et supporte un grand nombre de types de terminaux. Peu convivial pour le débutant (assez "cryptique"), la richesse de ses commandes en fait un outil très puissant. vi est dérivé de l'éditeur de ligne ex dont il reprend les commandes, et descend de ed (éditeur assez primitif).Dans la même famille, il existe encore l'éditeur sed (éditeur batch).
vi n'est pas une application X-window et n'est donc pas
orienté souris/menus. Si c'est ce que vous recherchez, voyez plutôt les
éditeurs xedit, emacs, textedit, axe... Il est cependant bon de connaître les rudiments d'utilisation de vi qui est l'éditeur que l'on est certain de trouver sur tous les systèmes Unix.
Nous ne décrivons ci-après que les commandes principales de vi.
Lancement de l'éditeur
- vi {fichier}
- Lancement de vi avec ouverture fichier en mode écriture
+ = positionnement à la fin du fichier
+n = positionnement au No de ligne n spécifié
+/chaîne = positionnement sur chaîne spécifiée
-r = application préalable du journal d'édition de la session vi précédente (à faire après session d'édition avortée par un crash) - vi -R fichier ou
- view fichier
- Lancement de vi sur fichier en mode lecture seulement
Prologue d'édition
Au lancement, vi consulte la variable d'environnement TERM qui défini le type de terminal (p.ex. "vt100", "xterm"...). Le prologue d'édition est constitué par le fichier ~/.exrc , à moins que l'utilisateur n'aie redéfini la variable d'environnement EXINIT. On peut introduire dans ce prologue toute commande ex de type ":commande" en omettant le caractère ":" : principalement configuration l'éditeur avec les commandes "set option" ou "set option=valeur" (voir la liste des options vi et leurs valeurs courantes avec la commande ":set all").Les modes de travail de vi
Mode commande :- c'est le mode principal, dans lequel on se trouve en entrant dans l'éditeur
- on a alors accès aux différentes commandes de déplacement et d'édition/insertion (commandes case sensitive)
- on y entre avec les commandes : i, I, a, A, o, O, c..., C, s, S, R
- on en sort avec <ESC> pour se retrouver dans le mode commande
- c'est le mode dans lequel on passe des commandes de type ex agissant généralement de façon globale sur tout le fichier
- on y entre avec ":", la commande que l'on frappe s'affiche au bas de l'écran, on la lance avec <CR>, et l'on se retrouve alors dans le mode commande
Sortie de l'éditeur
- :wq ou ZZ
- Sortie de vi avec mise-à-jour du fichier (Write Quit)
- :q{!}
- Quitte vi sans mise-à-jour du fichier. Le "!" est nécessaire si l'on veut quitter alors que l'on a touché au fichier
Positionnement/déplacement dans le fichier
Attention : il faut être en mode commande (donc sortir du mode d'insertion) pour pouvoir se déplacer dans le fichier !En avant En arrière ******** **********
A) Déplacement du point d'insertion
-> (ou l," ") <- (ou h) Déplac.d'un car. (à droite ou à gauche) v (ou j) ^ (ou k) Déplac.d'une ligne (en bas ou en haut) w (ou W) b (ou B) Début mot (maj.=ignore ponctuation) (Word, Back) e (ou E) Fin mot (maj.=ignore ponctuation) $ 0 Fin ou début ligne courante + (ou <CR>) - Début ligne suivante ou précédente } { Début paragraphe suivant ou précédent n| Colonne n de la ligne courante H Haut de l'écran (High) M Milieu de l'écran (Middle) L Bas de l'écran (Low) mx Marque position courante par car. x (Mark) `x Se positionne sur marque x 'x Se positionne au début ligne marquée xB) Déplacement du document
{n}G Déplac. en fin de fichier {ou à ligne No n} <ctrl-f> <ctrl-b> Déplac. d'une page-écran (Forward, Backward) <ctrl-d> <ctrl-u> D'une 1/2 page-écran (Down, Up) z<cr> Ligne courante au haut écran z. Ligne courante au milieu écran z- Ligne courante au bas écranInsertion
Commandes mettant l'utilisateur en mode d'insertion (en sortir avec <ESC>) :- i
- Insertion de texte sous le curseur
- ni
- Insère n fois la portion de texte
- a
- Insertion de texte après le curseur (Add)
- I
- Insertion de texte au début de la ligne courante
- A
- Insertion de texte à la fin de la ligne courante (Append)
- o
- Insertion d'une ligne après la ligne courante (Open)
- O
- Insertion d'une ligne avant la ligne courante
Destruction
- {n}x
- Détruit le caractère sous le curseur {les n car. depuis curseur}
- {n}X
- Détruit le caractère placé juste avant le curseur {les n car. placés avant le curseur}
- ddéplacement
- Détruit depuis la position courante le bloc de texte défini par la commande de déplacement. Exemples :
{n}dw ou d{n}w = détruit le mot courant {les n mots suivants}
{n}db ou d{n}b = détruit le mot précédent {les n mots précédents}
d0 = détruit en arrière jusqu'au début de la ligne
dG = détruit jusqu'à la fin du fichier
d`x = détruit jusqu'à la marque x
d/chaîne = détruit jusqu'à la prochaîne occurence de chaîne
- {n}dd
- Détruit toute la ligne courante {les n lignes à partir de la ligne courante}
- D
- Détruit la fin de la ligne courante (identique à d$)
- J
- Détruit le <CR> à la fin de la ligne courante (Join two lines)
- <DEL> ou <ctrl-h>
- Revient en arrière d'un caractère
- <ctrl-w>
- Revient en arrière d'un mot
Remplacement
Commandes de modification d'un seul caractère, laissant l'utilisateur en mode commande :- rx
- Remplace le caractère sous le curseur par le caractère x
- ~
- Changement majuscule<->minuscule du caractère sous le curseur
- cdéplacement
- Remplace le bloc de texte défini par commande de déplacement
Exemples : cw (remplace mot), cG (remplace jusqu'à la fin du fichier), etc... - {n}cc ou {n}S
- Remplace la ligne courante dans son entier {les n lignes à partir de la ligne courante}
- C
- Remplace la fin de la ligne courante (identique à c$)
- {n}s
- Remplace le caractère sous le curseur {les n caractères qui suivent}
- R
- Remplacement dans une ligne en mode surécriture (overwrite)
Annulation
- u
- Annule la dernière modification (Undo)
- U
- Annule les changements faits dans la ligne courante
Recherche de chaînes de caractères
- /motif
- Recherche en avant la chaîne de caractère correspondant à motif (selon syntaxe expression régulière). Faire donc préfixer par le caractère "\" les caractères suivants qui, sinon, ont une signification particulière : / \ . ^ [ ] *
- ?motif
- Recherche en arrière
- n
- Recherche occurence suivante de la même chaîne (Next)
- N
- Recherche occurence précédente de la même chaîne
- fx
- Positionnement sur prochain caractère x de la ligne courante
- Fx
- Positionnement sur précédent caractère x de la ligne courante
Substitution
- :%s/chaîne1/chaîne2/gc
- Substitue chaîne chaîne1 en chaîne2 dans tout le fichier (%) avec confirmation (c) : frapper "y" pour substitition et <CR> pour non-substitution. A la place de "%" on peut donner i,j pour indiquer de la ligne i à la ligne j (donner "$" pour spécifier la dernière ligne du fichier). En fait chaîne1 est aussi, comme dans la commande de recherche ci-dessus, une expression régulière.
- :%s/Ctrlv Ctrlm/\n/g
- donne :%s/^M/\n/g
- Substitue retour chariot window en retour chariot unix dans tout le fichier % en global avec g. Ctrl v Ctrl m pour ^M et \n pour le retour chariot unix.
Utilisation du buffer
- ydéplacement
- Mémorise dans le "buffer" le bloc de texte défini par commande de déplacement (Yanke)
Exemples : yw (mémorise mot), yG (mémorise jusqu'à la fin du fichier), etc... - {n}Y ou {n}yy
- Mémorise la ligne entière courante dans buffer {les n lignes à partir de la ligne courante}
- p
- Insère le contenu du buffer après le curseur (Put)
- P
- Insère le contenu du buffer avant le curseur
Commandes diverses
- .
- Répète la dernière commande vi passée
- :i,jmk
- Déplace les lignes i à j après la ligne k (Move)
- :!commande
- Exécute commande Unix spécifiée (dans le shell défini par l'option shell) puis retourne dans vi
- <ctrl-g>
- Affiche le No de la ligne courante
- <ctrl-l> ou <ctrl-r>
- Raffraîchit l'écran
Interaction avec fichiers externes
- :r fichier
- Insère le contenu du fichier spécifié à la position courante
- :r !commande
- Insère la sortie standard de la commande Unix (dans le shell défini par l'option shell, par défaut Bourne)
- :w{!} fichier
- Sauve le buffer d'édition sur fichier spécifié {avec ! : overwrite protection}
- :i,j w {>>} fichier
- Sauve lignes i à j sur fichier spécifié {en mode append}
Options
Ne pas mettre le ":" lorsque l'on introduit ces commandes dans le prologue ~/.exrc- :set all
- Affiche liste de toutes les options
- :set option?
- Affiche valeur de l'option spécifiée
- :set option
- Active l'option spécifiée
- :set nooption
- Désactive l'option spécifiée
- :set option=valeur
- Assigne valeur à l'option spécifiée
- {no}ic
- Ignore différences entre majuscules et minuscules [ignorecase] lors d'une recherche (défaut : désactivé)
- {no}nu
- Affichage des Nos de ligne [number] sur la gauche de l'écran (défaut : désactivé)
- {no}showmode
- En mode d'insertion, affiche au bas de l'écran message indiquant le type d'insertion (défaut : désactivé)
- {no}ai
- Indente chaque ligne [autoindent] au même niveau que la précédente ou suivante (défaut : désactivé)
- sw=n
- Défini le nombre d'espaces [shiftwidth] pour auto-indentation (défaut : 8)
- ts=n
- Défini le nombre d'espaces [tabstop] insérés par touche <TAB> (défaut : 8)
Commentaires
Aucun commentaire pour le moment.
Ajouter un commentaire
Les commentaires pour ce billet sont fermés.