Dans ce tutoriel, nous d�crirons quelques commandes et concepts vi avanc�s, vous pourrez ainsi appr�cier la puissance de vi et d�cider de construire vos connaissances avec les commandes vi. Quasiment toutes les r�f�rences listent les commandes disponibles, mais beaucoup ne montrent pas comment ces commandes interagissent ; ce point pr�cis est le th�me principal de ce tutoriel.
Les commandes du mouvement du curseur de vi vous permettent de positionner le curseur dans le fichier et/ou � l'�cran de mani�re efficace, avec un nombre minimal de frappe de touches. Il y a de nombreuses commandes contr�lant les mouvements du curseur - n'essayez pas de toute les m�moriser en une fois ! Plus tard, nous verrons que la majeure partie de la puissance de vi vient du m�lange entre les commandes de mouvement du curseur et les autres commandes pour effacer, changer, copier, et filtrer le texte.
Veuillez �diter un gros fichier texte (disons, wknight) afin d'exp�rimenter chaque commande d�crite. Gardez en t�te que ces commandes ne marchent qu'en Mode Commande, et pas en Mode Insertion ; si vous voyez vos � commandes � dans votre texte, appuyez sur ESC pour retourner en Mode Commande.
La plupart des commandes de mouvements pr�sent�es ci-dessus peuvent �tre pr�c�d�es d'un compteur de r�p�titions ; le mouvement est simplement r�p�t� le nombre de fois donn� :
Nous avons vu que dd efface la ligne courante. Ceci peut �tre utilis� avec un compteur de r�p�titions : 3dd efface trois lignes, la ligne courante et les 2 lignes suivantes.
La commande d peut �tre utilis�e comme un � pr�fixe � pour la plupart des commandes de mouvement ci-dessus pour effacer � peu pr�s toute sorte de parties de texte. Lorsqu'elles sont utilis�es avec d, les commandes de mouvements sont appell�es des sp�cificateurs de cibles. On peut donner un compteur de r�p�tition � d (lorsque vous essayez ces exp�riences, rappellez vous d'appuyer sur u apr�s chaque commande pour annuler l'effacement).
La commande c est similaire � d, � part qu'elle change le mode de vi en insertion, autorisant le texte original (non d�sir�) � �tre chang� en quelque chose d'autre.
Par exemple, placez le curseur sur le d�but d'un mot (tapez w pour arriver au d�but du prochain mot). Ensuite, tapez cw pour changer ce mot. � l'�cran, le dernier caract�re de ce mot en cours de changement sera remplac� par un symbole $ indiquant la fin du changement ; tapez un nouveau mot (vous r��crirez le mot original � l'�cran) et tapez la touche ESC lorsque vous aurez fini. Votre entr�e peut �tre plus longue ou plus courte que le mot en cours de changement.
Placez le curseur au d�but d'une ligne contenant au moins trois mots, et taper c3w pour changer ces trois mots. Essayez c$ pour changer la fin de la ligne actuelle. Dans tous les cas o� le changement affecte uniquement la ligne courante, la fin du changement est indiqu�e avec $.
Lorsqu'un changement affecte plus que la ligne courante, vi efface le texte original de l'�cran et se place en mode insertion. Par exemple, essayez c3+ pour changer la ligne courante et les trois suivantes ; vi supprime les quatres lignes originales de l'�cran et se place en mode d'insertion sur une nouvelle ligne blanche. Comme toujours, tapez la touche ESC lorsque vous aurez fini d'entrer votre nouveau texte.
Quelques autres commandes de changement :
La commande y emm�ne une copie du texte dans un buffer ; le texte copi� peut �tre plac� (ou coll�) n'importe o� dans le fichier en utilisant p ou P.
La forme la plus simple de copie est yy pour copier la ligne courante ; apr�s yy, essayez p pour mettre une copie de la ligne copi�e apr�s le curseur. En suivant yy, vous pouvez faire autant de copie de la ligne emmen�e que vous le voulez en vous d�pla�ant dans le fichier et en tapant p.
Pour copier plusieurs lignes, essayez, par exemple, 5yy (copie la ligne courante et les 4 lignes suivantes). p place une copie des lignes emmen�es apr�s le curseur ; la s�quence 5yyp � marche � mais ce n'est probablement pas ce que vous voudriez faire. La commande P fonctionne comme p, mais place une copie de la ligne au-dessus du curseur ; essayez la s�quence 5yyP.
Autres commandes de copie :
La commande de filtrage ! demande le nom d'une commande UNIX (qui doit �tre un filtre), passe les lignes s�lectionn�es par ce filtre, en rempla�ant les lignes s�lectionn�es dans le buffer vi avec la sortie de la commande filtrante. La capacit� de vi � passer des parties arbitraires de texte au travers de tout filtre UNIX ajoute une flexibilit� incroyable � vi, sans � co�t suppl�mentaire � de taille ou de performance � vi m�me.
Quelques exemples peuvent aider l'illustration. Cr�ez une ligne dans votre fichier contenant juste le mot � who � et absolument aucun autre texte. Placez le curseur sur cette ligne, et tapez !!. Cette commande est analogue � dd, cc, ou yy, mais au lieu d'effacer, de changer ou de copier la ligne courante, elle filtre la ligne courante. Lorsque vous pressez le second !, le curseur descend vers le coin en bas � gauche de l'�cran et un simple ! est affich�, vous demandant d'entrer le nom d'un filtre. En tant que nom de filtre, tapez � sh � et pressez la touche Entr�e. sh (le shell Bourne) est un filtre ! Il lit l'entr�e standard, ex�cute une partie de l'entr�e (c'est-�-dire qu'il ex�cute des commandes), et envoie sa sortie (la sortie de ces commandes) � la sortie standard. Filtrer la ligne contenant � who � au travers de � sh � remplace la ligne contenant � who � par la liste des utilisateurs du syst�me courant -- directement dans votre fichier !
Essayez de r�p�ter ce proc�d� avec date. C'est-�-dire, cr�ez une ligne ne contenant rien d'autre que le mot date, puis placez le curseur sur cette ligne, et tapez !!sh et la touche Entr�e. La ligne contenant date est remplac�e par la sortie de la commande date.
Mettez votre curseur sur la premi�re ligne de la sortie de � who �. Comptez le nombre de lignes. Supposons, par exmple, que ce nombre soit six. S�lectionnez alors ces six lignes � filtrer au travers de sort ; tapez 6!!sort et la touche Entr�e. Les six lignes seront pass�es � sort, et la sortie de sort remplacera les six lignes d'origine.
La commande filtre peut uniquement �tre utilis�e sur des lignes compl�tes, pas sur des caract�res ou des mots.
Quelques autres commandes de filtres (ici, � CR � indique pressez Entr�e) :
Vous pouvez marquer des lignes et des caract�res pour �tre utilis�s en tant que cible pour des mouvements, effacement, changement, copie, et filtration en utilisant la commande mc, o� c est une lettre minuscule.
Par exemple, mettez le curseur au milieu d'un mot et tapez ma. Ceci marque le caract�re sous le curseur sous la marque a.
Maintenant, d�placez le curseur en dehors du caract�re marqu� vers une ligne diff�rente (utilisez les fl�ches curseur, CTRL-u, ou autre). Pour retourner � la ligne marqu�e, tapez 'a (c'est-�-dire apostrophe, puis a). Ceci vous place sur le premier caract�re non-blanc de la ligne contenant la marque a.
Sortez de la ligne encore une fois. Pour retourner au caract�re marqu�, tapez `a (apostrophe inverse, puis a). Ceci vous d�placera sur le caract�re marqu� par a.
Le marquage est habituellement utilis� avec l'effacement, le changement, la copie ou la filtration. Par exemple, d�placez le curseur sur une autre ligne que celle contenant la marque a, et pressez d'a (d, apostrophe, a). Ceci efface de la ligne courante jusqu'� la ligne marqu�e a incluse.
Mettez le curseur au milieu d'un autre mot et tapez mb pour mettre la marque b. Maintenant, d�placez le curseur hors de ce mot (mais seulement de quelques lignes, ainsi vous pourrez voir ce que nous allons faire plus facilement), et pressez d`b (d, apostrophe inverse, b). Ceci efface le caract�re courant jusqu'au caract�re marqu� par b inclus.
Comme autre exemple, pour trier la sortie de who, marquez la premi�re ligne (ma), puis d�placez le curseur vers la derni�re ligne et taper !'asort puis la touche Entr�e.
Si vous sautez jusqu'� une marque et que vous d�cidez de revenir en arri�re, de l'endroit d'o� vous avez saut�, vous pouvez taper '' (reviens � la ligne) ou `` (reviens au caract�re).
Lorsque vous effacez, modifiez, ou copier du texte, le texte original est sauv� (jusqu'au prochain effacement, changement ou copie) dans un tampon non nomm� � partir duquel il peut �tre mis en utilisant p ou P. En utilisant le tampon non nomm�, seul le plus r�cent changement du texte peut �tre r�cup�r�.
Si vous voulez effacer, changer ou copier plusieurs parties de texte et se souvenir de toutes (jusqu'� un maximum de 26), vous pouvez donner un nom au tampon avec la commande utilis�e. Un nom de tampon est de la forme "c (double apostrophe, c minuscule).
Par exemple, tapez "ayy pour copier la ligne courante dans le tampon a, puis d�placez vous sur une autre ligne et tapez "byy pour copier cette ligne dans le tampon b. Maintenant, d�placez vous n'importe o� dans le fichier et tapez "ap et "bp pour placer des copies du texte sauv� dans les tampons a et b.
Quelques autres commandes de tampon :
Pour �changer un bloc de texte par un autre dans les lignes de votre fichier, utilisez la commande :s. Quelques exemples de substitutions :
Toutes les commandes de double point d�butent avec � : � ; lorsque vous tapez ce symbole, le curseur saute vers le coin bas � gauche de l'�cran, et un prompt � deux points est affich�, attendant que vous finissiez la commande.
Quelques exemples importants :
Diverses options peuvent affecter le � confort � de vi. Vous pouvez afficher toutes les diverses options pouvant �tre utilis�es en tapant set all. Vous pouvez �galement utiliser � :set � pour changer les options.
Par exemple, si vous d�sirez voir le num�ro de ligne pour les lignes du fichier que vous �ditez, utilisez la commande :set number. Pour supprimer l'affichage du num�ro de ligne, utilisez la commande :set nonumber. La plupart des options peuvent �tre abr�g�es ; :set nu affiche le num�ro des lignes et :set nonu le supprime.
Si vous utilisez :set nomagic, la signification sp�ciale des caract�res d'expression r�guli�re (point, ast�risque, crochet, etc.) est supprim�e. Utilisez :set magic pour restaurer ces significations particuli�res.
Quelques options ont une valeur. Par exemple, :set tabstop=4 affiche les tabulations en quatre caract�res d'espace, plut�t que les huit habituels.
Si vous trouvez que vous d�sirez toujours certaines options plac�es de certaines mani�res, vous pouvez mettre ces commandes optionnelles dans un fichier .exrc, ou vous pouvez utiliser la variable d'environnement EXINIT pour sp�cifier les options d�sir�es.
Par exemple, si votre shell par d�faut est le shell Bourne, cette ligne peut aller dans votre fichier .profile :
EXINIT='set nomagic nu tabstop=4'; export EXINIT
setenv EXINIT 'set nomagic nu tabstop=4'
Si vous vous apercevez que vous utilisez encore et encore la m�me s�rie de commandes simples, vous pouvez les lier � une touche de commande inutilis�e en utilisant la commande :map. Si votre lien inclut des caract�res de contr�le comme la touche Entr�e (ctrl-M en ascii) ou ESC (ctrl-[ en ascii), vous pouvez les faire pr�c�der de ctrl-v pour supprimer leur signification classique.
Par exemple, cette commande relit ctrl-A pour d�placer le curseur de 55 lignes, puis revenir � la ligne vide la plus r�cente, changer ensuite cette ligne blanche par un saut de page (ctrl-L) et trois lignes blanches. C'est � dire que chaque ctrl-A paginera la page suivante, sans couper de paragraphes entre les pages.
Note : Dans cette commande, chaque caract�re de contr�le est repr�sent� par ^C, o� C est une lettre majuscule quelconque. Par exemple, ctrl-M est repr�sent� par ^M. De m�me, lorsque vous entrez cette commande vous ne verrez pas les caract�res ctrl-v : chaque ctrl-v se voit remplac� par la signification sp�ciale du caract�re de contr�le suivant, ainsi lorsque vous utiliserez la s�quence ^V^M, tout ce que vous verrez � l'�cran est un ^M. Dans cette commande, ^M est la touche Entr�e et ^[ la touche ESC.
:map ^A 55+?^$^V^Mcc^V^L^V^M^V^M^V^M^V^[
Vous pouvez �diter plusieurs fichiers avec vi en lui donnant plusieurs noms de fichiers en arguments de ligne de commande :
vi croc fatherw wknight
Les commandes :n, :N et :rew sont quelques peu �tranges, mais elles ont des b�n�fices importants : le contenu des tampons ("a, "b, "c, etc.) sont connus entre les fichiers, et vous pouvez ainsi utiliser :n et :rew avec p et P pour copier le texte vers l'un ou l'autre des fichiers. De m�me, la plus r�cente cha�ne de recherche des commandes / et ? sont les m�mes suivant les fichiers, et vous pouvez ainsi faire des recherches r�p�t�es sur plusieurs fichiers assez facilement.
Par exemple, tentez l'exp�rience suivante : tout d'abord sortez de vi, et ex�cutez ensuite vi avec croc et wknight en arguments :
$ vi croc wknight
/the < CR >
Copiez cette ligne dans le tampon a :
"ayy
Maintenant d�placez vous sur le prochain fichier (vous n'avez fait aucun changement � croc, donc �a marchera) :
:n < CR >
Cherchez la ligne suivante contenant � the �, sans retaper la cha�ne de recherche :
n
Mettez une copie du tampon apr�s la ligne courante dans wknight :
"ap
Descendez de deux lignes, et copiez la ligne courante dans le tampon b :
jj"byy
Sauvez les changements de wknight
:w < CR >
Maintenant, retournez � croc
:rew < CR >
Cherchez encore, et mettez une copie du tampon b apr�s la ligne trouv�e :
n"bp
Sauvez les changements, et quittez vi
ZZ
Ce tutoriel �tait pr�vu pour vous introduire quelques unes des possibilit�s de vi que vous pouvez �galement retrouver dans le manuel vi de votre syst�me ou qui ne sont pas mentionn�es dans ce manuel (de nombreux syst�mes ont des manuels de qualit� tr�s vari�e).
Vous ne serez pas un expert vi apr�s la lecture de ce tutoriel, mais vous aurez une bonne appr�ciation des possibilit�s de vi. Seul le temps et l'effort peuvent vous faire devenir un expert vi. Mais l'efficacit� et l'universalit� de vi rend cet effort payant dans le long terme.
Vous pouvez avoir d�cid� que vous d�testez vi. Tr�s bien ! Mais prenez garde, vi demeure l'�diteur de texte standard sous UNIX - le seul �diteur sur lequel vous pouvez compter pour �tre disponible sous tout syst�me UNIX que vous utiliserez - donc m�me si vous pr�f�rez utiliser quelque chose d'autre dans la vie courante, vous seriez avis� de conna�tre le minimum � propos de vi qui est couvert dans ce tutoriel.
Hosting by: Hurra Communications GmbH
Generated: 2007-01-26 18:01:16