Vous êtes sur la page 1sur 10

AIDE MEMOIRE VI

Vi est un diteur de textes plein cran prsent sur la grande majorit des systmes UNIX. Voici un aidemmoire pour son jeu de commandes de base. Des commandes supplmentaires peuvent toutefois exister sur votre propre diteur vi vi ou compatible. Reportez-vous la documentation de votre systme.

Table des matires


[Notations] - [Appel de lditeur] - [Modes ddition] - [Manipuler des fichiers] - [Dplacer le curseur] [Ajuster l'cran] - [Modifier le texte] - [Annuler et Rpter] - [Marquer le texte] - [Rechercher et remplacer] - [Macros et abrviations] - [Etat du texte] - [Commandes "shell"] - [Configurer l'diteur] [Index]

Notations [Table des matires]


x ou X : caractre tap (minuscule ou majuscule) C-x : caractre tap en maintenant Ctrl appuye. Les caractres spciaux seront nots par leur nom abrg : Ech pour chappement">

AIDE MEMOIRE VI
Vi est un diteur de textes plein cran prsent sur la grande majorit des systmes UNIX. Voici un aidemmoire pour son jeu de commandes de base. Des commandes supplmentaires peuvent toutefois exister sur votre propre diteur vi vi ou compatible. Reportez-vous la documentation de votre systme.

Table des matires


[Notations] - [Appel de lditeur] - [Modes ddition] - [Manipuler des fichiers] - [Dplacer le curseur] [Ajuster l'cran] - [Modifier le texte] - [Annuler et Rpter] - [Marquer le texte] - [Rechercher et remplacer] - [Macros et abrviations] - [Etat du texte] - [Commandes "shell"] - [Configurer l'diteur] [Index]

Notations [Table des matires]


x ou X : caractre tap (minuscule ou majuscule) C-x : caractre tap en maintenant Ctrl appuye. Les caractres spciaux seront nots par leur nom abrg : Ech pour chappement, Ent pour entre, Ret pour retour arrire... Les commandes commenant par :, /, ou ? saffichent automa-tiquement au bas du terminal (ligne dtat) et doivent tre termines par Ent. [] car chn fich cmd n nn facultatif; ne pas taper les crochets remplacer par un seul caractre remplacer par une chane de caractres remplacer par un nom de fichier remplacer par une commande remplacer par un nombre (suite de chiffres) remplacer par une rfrence un numro de ligne : - un nombre (1, 25, ...) - un marqueur ou un dplacement ( . . , $, ...) - une expression rechercher ( / chn / )

Appel de lditeur [Table des matires]


vi [fich] vi -r fich vi + [nn] fich vi fich1 fich2.. Edite le fichier fich, sil existe. Sinon, dite un nouveau fichier vide. Edite la dernire version du fichier fich en cas darrt inopin du systme ou de lditeur. Edite le fichier fich avec le curseur la ligne nn [ par dfaut : la dernire ligne ] Edite chacun des fichiers. Aprs avoir sauv les changements dans lun des fichiers, taper :n :n Ent Ent pour passer au suivant.

Modes ddition [Table des matires]


Mode insertion Les caractres taps sinsrent dans le texte du fichier dit. Un jeu rduit de commandes est disponible par lintermdiaire de caractres de contrle. Ce mode se termine en tapant Ech. Mode commande Les caractres taps sont considrs comme des commandes ddition de texte. Les commandes en majuscules et minuscules diffrent. Il faut vrifier que les majuscules ne sont pas verrouilles si lditeur prsente un comportement inhabituel.

Manipuler des fichiers [Table des matires]

:q :q ! ZZ, :wq! ou :x :[nn,nn] w[!]Esp[[>>]fich] :w :w ! :w >>fich :nn,nn w fich :args :n[!] :n! :rew[!] :f fich :e[!][+n] [fich] :e!+3 fich :e# :[nn]r fich :[nn]r ! sh-cmd :cd [rpertoire]

quitte vi quitte vi sans sauver les changements sauve si possible et quitte vi sauve le texte dans fich sauve sous le nom de fichier courant sauve sans vrifier les droits dcriture ajoute le texte la fin de fich sauve les lignes de lintervalle nn, nn affiche la liste des fichiers diter dite le fichier suivant ignore les changements dite le premier fichier dans la liste change le nom de fichier courant dite le fichier fich - voir :w :w dite fich en ligne 3, ignore changements dite le dernier fichier insre fich dans le texte dit excute une cmd shell et insre sa sortie dans le texte ( Si nn, aprs la ligne nn, sinon aprs le curseur ) change de rpertoire de travail

Dplacer le curseur [Table des matires]


Chacune de ces commandes peut tre prcde dun nombre dexcutions : 12w avancera de 12 mots. h ou ou C-h ou Ret l ou ou Esp j ou ou C-n k ou ou C-p Ent ou +, w, b, e W, B, E ), ( }, { ]], [[ _ ou ^ fcar Fcar tcar Tcar car `car un caractre gauche un caractre droite un caractre vers le bas un caractre vers le haut dbut de ligne suivante, prcdente mot suivant, mot prcdent, fin du mot pareil sans tenir compte de la ponctuation phrase suivante, prcdente paragraphe suivant, prcdent section suivante, prcdente (v. Marquer le texte) avance jusquau prochain non-blanc avance jusquau prochain caractre car revient au dernier caractre car avance jusquau caractre prcdant car revient au caractre suivant car premier non-blanc de la ligne marque car va au caractre marqu car (v. Marquer le texte)

Les commandes suivantes peuvent aussi tre prcdes par n, mais le rsultat dpend de la commande. G, nG ou :n H, nH L, nL O, $ n$ |, n| fin du texte, ligne n du texte dbut de lcran, ligne n de lcran fin de lcran, n lignes avant la fin de lcran dbut de la ligne, fin de la ligne fin de la (n -1)me ligne aprs la ligne courante premire colonne, n-ime colonne

/str[/]Ret ?str [?]Ret

Recherche vers lavant de lexpression str Recherche vers larrire de lexpression str

Ajuster lcran [Table des matires]


C-l C-e, C-y C-u, C-d C-b, C-f effacer et redessiner lcran dplacer lcran dune ligne vers le haut, vers le bas dplacer lcran dune demi-page vers le haut, le bas dplacer lcran dune page vers le haut, vers le bas

Ces commandes prcdes par n sexcutent n fois ex : 3C-b remonte de trois pages dans le texte z Ent nnz Ent nnz. nnzmettre la ligne courante en haut de lcran mettre la ligne nn en haut de lcran mettre la ligne courante [ou nn] au milieu de lcran mettre la ligne courante [ou nn] en bas de lcran

Modifier le texte [Table des matires]


Passage en mode insertion:
Si n est tap avant la commande, le texte insr est rpt n fois. a A i I o, O insre du texte aprs le curseur, fin par Esc insre du texte aprs la fin de la ligne insre du texte avant le curseur insre du texte avant le premier non-blanc de la ligne ouvre une ligne avant, aprs la ligne du curseur

Commandes accessibles en mode insertion:


Esc Ent Ret ou C-h C-vcar C-@ C-w C-t retour en mode commande passe la ligne efface le dernier caractre permet dinsrer un car. de cmd ( Esc , C-h, C-@,...) rpte la dernire insertion si 1 er caractre du mode efface le mot prcdent indente dune position droite (v. option sw sw)

Mode commande:
Oprateurs acceptant une commande de dplacement : [n]oper[n][dpl.] (v. Dplacer le curseur) - oper peut tre : d dd coupe jusquau curseur dplac la ligne

y Y ou yy c cc

copie jusquau curseur dplac la ligne change jusquau curseur dplac la ligne

ex.: d3w d3w coupe les 3 mots suivants, 4d3w coupe les 12 mots suivants (4 fois 3 mots), 4y copie les 4 lignes suivantes Autres oprateurs p, P [n]x, [n]X D, C ~ [n]. [n]rcar [n]Rstr Esc [n]sstr Esc [n]Sstr Esc [n]J [n]<<, >> :[nn,nn]m n :[nn,nn]t n colle aprs, avant le curseur coupe n caractres aprs, avant le curseur coupe ou change jusqu'en fin de ligne (v. d$ d$ ou c$) c$) change le caractre sous le curseur maj. <-> min. rpte le dernier changement [ n fois ] remplace le caractre sous le curseur par car [ n fois ] remplace le texte partir du curseur par str [ n f. ] substitue str au caractre sous le curseur [ n car. ] substitue str la ligne [ n lignes partir du curseur ] concatne deux lignes [ n lignes ] indente de n car. gauche, droite (v.opt. sw sw) dplace lintervalle ou la ligne aprs la n-ime ligne copie lintervalle ou la ligne aprs la n-ime ligne

Annuler et Rpter [Table des matires]


u U . Annule la dernire modification Annule les dernires modifications de la ligne courante Rpte le dernier changement

Lutilisateur dispose de - 26 tampons de texte nomms de a z - 9 tampons des suppressions successives nomms de 1 9 p, P, y, Y et d peuvent tre prcdes par "car (minuscule) pour utiliser ou remplacer le tampon nomm car y, Y et d peuvent tre prcdes par "car (majuscule) pour rajouter le texte copi/coll dans le tampon car "car p "1pu.u.u Rappelle le contenu du tampon nomm car Recherche parmi les dernires suppressions

Marquer le texte [Table des matires]


mcar `car Marque la position du curseur avec car Retourne au caractre marqu car

`` car

Retourne la ligne dorigine du dernier dplacement Retourne au 1er non-blanc de la ligne marque car Retourne au 1er non-blanc de dernire ligne change

Une phrase se termine par ., ! ou ? suivi de Ent ou deux Esp. Un paragraphe est dlimite par une ligne vide. Une section est dlimite par { en premire colonne. Les commandes (,) ,{, }, [[, ]] permettent de dplacer le curseur par phrases, paragraphes ou sections. (v. Dplacer le curseur)

Rechercher et remplacer [Table des matires]


Recherche de dlimiteur associ Recherche de dlimiteur associ:
% Avec curseur sur (, ), [, ], { ou }, va au second dlimiteur

Recherche dune lettre: (voir f, F, t, T, Dplacer le curseur)


; , Rpte la dernire recherche par f, F, t, T Comme ; mais en sens inverse

Recherche et remplacement de chanes:


On peut utiliser des expressions rgulires qui acceptent les caractres spciaux suivants : ^ $ Dbut de ligne (si 1er caractre de lexpression) Fin de ligne (si dernier caractre de lexpression)

et si loption magic a t choisie, . [str] [^str] [c1-c2] \<, \> * \(, \) & \n \car Joker, reprsente un caractre quelconque Reprsente un caractre contenu dans str Reprsente un caractre non contenu dans str Reprsente un caractre entre c1 et c2 inclus Reprsente le dbut, la fin dun mot Cherche 0, 1 ou plusieurs occurrences du dernier car. Dlimitent une sous-expression pour les remplacements Remplac par la chane trouve Remplac par la n-ime sous-expression \( ... \) Remplac par car ( permet dobtenir /$^.*[&|~ et \)

Recherche de chane :
/str, ?str / Ent, ? Ent // ~ /str /; //; // Recherche lexpression str en avant, en arrire Rpte la dernire recherche avant, arrire Dernire expression rgulire entre Derniere expression de remplacement entre Recherche la troisime occurrence de str

/str /; //; // /str /n n N

Recherche la troisime occurrence de str Va la n-ime ligne aprs (+) ou avant (-) str Rpte la dernire recherche dans le mme sens Rpte la dernire recherche en sens inverse

Remplacement de chane:
:s/str1 /str2 /str3 Substitue str2 str1 dans la ligne str3 est form partir de: c g p Confirmation des substitutions Substitue toutes les occurrences de str1 dans la ligne Affiche les changements Va la dernire ligne contenant str [dans nn,nn] Excute cmd sur les lignes contenant str Excute cmd sur les lignes ne contenant pas str

:[nn, nn]g/str :[nn, nn]g/str /cmd :[...]g!/str/cmd

application typique de g : :g/str1/s//str2 /g change str1 en str2 partout dans le texte Le sparateur aprs :g ou :s nest pas obligatoirement / :s&/&\\&g change tous les / de la ligne en \

Macros et abrviations [Table des matires]


Macros:
:map str cmd :unmap str :map Excute cmd lorsque str est press Supprime la dfinition de la macro str Affiche toutes les macros dfinies

Ces directives sappliquent en mode commande seulement. Pour crer, supprimer ou afficher des macros valides aussi en mode insertion, il faut utiliser :map! ou :unmap!.

Abrviations:
:ab str texte :una str :ab Ds que str est insr, remplace par texte Supprime la dfinition de labrviation str Affiche toutes les abrviations dfinies

La liste des macros et abrviations dun utilisateur est souvent regroupe dans le fichier .exrc .exrc (voir Configuration). Cela permet par exemple de grer les touches de fonction, les flches et autres touches spciales sur des terminaux non standard. Les touches inutilises dans vi sont les touches de fonction et K V g q v * =.

Etat du texte [Table des matires]

Le rsultat saffiche sur la ligne dtat, en bas de lcran :f ou C-g :.= := :l Affiche le nom de fichier courant et la position Affiche le numro de ligne courant (ligne du curseur) Affiche le nombre de lignes du fichier Affiche les caractres spciaux de la ligne courante

Commandes "shell" [Table des matires]


Lancer un interprteur de commandes:
:stop ou C-z :sh Suspend vi, retour par fg sur BSD Lance un shell depuis vi, retour par C-d

Excution dun script shell:


:so fich Excute le script shell fich

Excution dune commande:


:! cmd Excute la commande cmd, qui peut utiliser % Remplac par le nom du fichier courant # Remplac par le nom du dernier fichier dit ! Remplac par la dernire commande lance par :! : :[nn] r! cmd Insre la sortie de cmd : :[nn,nn]w! cmd Excute cmd avec le texte dit en entre Voir aussi :w :w et :r :r dans Manipuler des fichiers pour utiliser nn.

Filtrage du texte:
[n] ! dpl cmd Envoie la rgion de texte dfinie par n et dpl (dplacement depuis le curseur courant, voir Dplacer le curseur) sur lentre de la commande cmd, puis remplace cette rgion par la sortie de cmd. Exemple : 4!+sort -n Trie numriquement cinq lignes partir du curseur !Gexpand Rcrit les tabulations avec des espaces depuis la position du curseur jusqu' la fin du texte.

Configurer l'diteur [Table des matires]


Modifier les options de vi:
:set modifie l'option opt. Pour une option de nom xxx opt :set Positionne l'option xxx vrai xxx :set Positionne l'option xxx faux

Positionne l'option xxx faux noxxx :set xxx=val Donne une valeur l'option xxx :set Affiche la valeur de l'option xxx xxx? :set Affiche toutes les options all :set Affiche les options au dmarrage et les changements Voici une liste non exhaustive des options de vi. Une implmentation particulire peut toujours comporter des variantes sur les valeurs par dfaut, ou des options non listes ici. Nom autoindent autoprint autowrite directory errorbells hardtabs ignorecase lisp list magic mesg number open optimize prompt readonly remap report scroll shell shiftwidth showmatch slowopen tabstop taglength tags term terse timeout warn abrv. dfaut ai ap aw dir eb ht ic nu opt ro sh sw sm tl to tl=0 noai ap noaw dir=/tmp noeb ht=8 noic nolisp nolist magic mesg nonu open opt prompt noro remap report=10 scroll=11 sh=$SHELL sw=8 nosm description indentation automatique affiche la ligne aprs c, d, j, m, :s, t, u sauve automatiquement le texte emplacement du tampon disque sonne lors des messages d'erreur position des tabulateurs du terminal maj/min indiffrencies p. recherche modifie ( )[ ]{ } pour codage en lisp affiche tabulations et fins de lignes tend car. spciaux en recherche laisse passer les messages write write numrote les lignes autorise open avec vi supprime retour chariot automatique invite : en mode ligne de cmd interdit la modification du fichier autorise macros dans des macros taille maxi. modifications notifies nombre de lignes pour C-d et z nom du shell pour ! et :sh nombre d'espaces pour indenter indique le sparateur associ ( )[ ]{ } retarde l'affichage lors des insertions ts ts=8 taille des tabulations C-i C-i taille minimum pour gnration de tags (0 = pas de limite, v. ctags ctags ) nom du terminal utilis messages d'erreurs raccourcis 1s maxi. pour taper une macro "changements non enregistrs"

slow slow

"tags /usr/lib/tags" emplacement du fichier de tags term=$TERM noterse noto - warn

warn window wrapmargin wrapscan writeany

- warn window=n

"changements non enregistrs" nombre de lignes de la fentre texte retour automatique a n caractres de la marge droite les recherches la fin du texte recommencent au dbut pas de vrification de droits d'accs

wm wm=0 ws ws wa nowa

Configuration au dmarrage:
Les directives :set et :map dun utilisateur peuvent tre runies dans le fichier $HOME/.exrc. Il ne faut pas de ":" dans ce cas. On peut aussi les mettre dans la variable denvironnement EXINIT. Par exemple: export EXINIT="set noautoindent aw showmatch" avec bash bash

Index [Table des matires]


Abrviations (Macros et abrviations) Ajuster l'cran Annuler et rpter Appel de l'diteur Commandes "shell" Configurer l'diteur Dmarrage (Appel de l'diteur) Dmarrage (Configurer l'diteur) Dplacer le curseur Etat du texte Excution d'une commande "shell" Filtrage par commande "shell" Insrer du texte (Modifier le texte) Macros et abrviations Manipuler des fichiers Marquer le texte Modes d'dition Modifier le texte Notations Options (Configurer l'diteur) Rechercher et remplacer Redessiner, recentrer l'cran (Ajuster l'cran)

[top]