Linux-Mandrake: Manuel de référence | ||
---|---|---|
Page précédente | Chapitre 4. L'édition de texte : Emacs et VI | Page suivante |
VI a été le premier éditeur plein écran existant. Étrangement, il représente un des principaux arguments à la fois des détracteurs d'Unix, et de ses défenseurs : s'il est compliqué à appréhender, c'est aussi un outil extrêmement puissant une fois maîtrisé. En quelques frappes de touches, un utilisateur de VI peut déplacer des montagnes ! Mis à part Emacs, peu d'éditeurs de texte peuvent se vanter de cela.
La version incluse dans Linux-Mandrake est en fait VIM, pour VI iMproved (VI aMélioré), mais nous le nommerons VI tout au long de ce chapitre.
Tout d'abord, l'invocation : elle est exactement la même que pour Emacs. Reprenons donc nos deux fichiers et tapons :
$ vi fichier1 fichier2 |
À partir de là, vous vous retrouverez devant une fenêtre comme celle de la figure 4-4.
Vous vous retrouvez alors en mode commande devant le premier fichier ouvert. Et là, ça se complique un tantinet ! :-) En mode commande, vous ne pouvez pas insérer de texte dans un fichier... Il vous faut pour cela passer en mode insertion, et entrer l'une des commandes qui le permettent :
a et i : pour insérer du texte respectivement derrière et devant le curseur (A et I insèrent du texte à la fin et au début de la ligne courante);
o et O : pour insérer du texte respectivement au-dessous et au-dessus de la ligne courante.
En mode d'insertion, vous verrez la chaîne --INSERT-- apparaître en bas de l'écran (de cette façon vous savez dans quel mode vous êtes). C'est dans ce mode et uniquement dans ce mode que vous pouvez entrer du texte. Pour revenir en mode commande, appuyez sur la touche Échap.
En mode d'insertion, vous disposez des touches Backspace et Suppr pour effacer du texte à la volée. Pour vous déplacer dans le texte, aussi bien en mode commande qu'en mode insertion, vous disposez des touches fléchées. En mode commande, il existe également d'autres combinaisons de touches, que nous verrons plus loin.
Le mode ex est disponible en tapant le caractère : en mode commande: ce même : apparaîtra en bas de l'écran, le curseur s'y positionnera également et tout ce que vous tapez à la suite, suivi d'une pression sur Entrée, sera considéré par VI comme une commande ex. Si vous effacez la commande jusqu'à « effacer » le :, vous revenez alors en mode commande et le curseur retrouvera sa place originelle.
Pour enregistrer les modifications faites dans un fichier vous taperez :w en mode commande. Si vous voulez enregistrer le contenu du tampon dans un autre fichier, tapez la séquence :w <nom_du_fichier>.
Comme avec Emacs, vous pouvez avoir plusieurs tampons visibles à l'écran. Pour cela, utilisez la commande :split.
Pour passer d'un fichier à l'autre, dans un même tampon, il vous faut taper :next pour passer au fichier suivant et :prev pour retourner au fichier précédent. Vous pouvez aussi vous servir de :e <nom_de_fichier>, qui permet à la fois de changer vers le fichier désiré si celui-ci est déjà ouvert, ou bien d'ouvrir un autre fichier. Vous disposez là aussi du complètement.
Pour changer de tampon, tapez Ctrl+w j pour passer au tampon du dessous ou Ctrl+w k retourner au tampon du dessus. Vous pouvez utiliser également les touches fléchées vers le haut ou vers le bas en lieu et place de j ou k. La commande :close cachera un tampon, la commande :q le fermera.
Attention, VI est tatillon : si vous tentez de cacher ou fermer un tampon dont les changements n'ont pas été sauvegardés, la commande ne sera pas effectuée et vous aurez ce message :
No write since last change (use! to override)
(pas de sauvegarde depuis le dernier changement (utilisez ! pour forcer la commande) Dans ce cas, il n'y a qu'une solution : faire ce qui est indiqué :-) Tapez :q! ou :close!.
Outre les touches Backspace et Suppr dans le mode d'édition, VI dispose de beaucoup de commandes pour effacer, copier, coller, remplacer du texte ( en mode commande. Nous en verrons ici quelques unes. Toutes les commandes présentées ici sont en fait séparées en deux parties : l'action à effectuer et sa portée. L'action peut être :
c : pour remplacer (Change); l'éditeur efface le texte demandé et repasse en mode d'insertion après cette commande;
d : pour effacer (Delete);
y : pour copier (Yank), nous verrons cela dans la section suivante.
. : reproduit la dernière action effectuée.
La portée désigne le groupe de caractères sur lequel la commande doit agir. Ces mêmes commandes de portée entrées telles quelles en mode commande correspondent à des déplacements :
h, j, k, l : un caractère à gauche, en bas, en haut, à droite[1];
e, b, w : jusqu'à la fin (resp. au début) du mot courant, jusqu'au début du mot suivant;
^, 0, $ : jusqu'au premier caractère non blanc de la ligne courante, jusqu'au début de la ligne courante, jusqu'à la fin de la ligne courante;
f<x> : jusqu'à la prochaine occurrence du caractère <x>; par exemple fe déplace le curseur jusqu'à la prochaine occurrence du caractère e;
/<chaîne>, ?<chaîne> : jusqu'à la prochaine occurrence de la chaîne ou expression rationnelle <chaîne>, et de même en remontant dans le fichier; par exemple, /toto déplace le curseur jusqu'à la prochaine occurrence du mot toto;
{, } : jusqu'au début, jusqu'à la fin, du paragraphe;
G, H : jusqu'à la fin du fichier, jusqu'au début de l'écran.
Chacun de ces caractères de portée ou commandes de déplacement peut être précédé d'un nombre de répétition quand cela a un sens. G, référence le numéro de ligne dans le fichier. À partir de là, vous pouvez faire toutes sortes de combinaisons. Quelques exemples :
6b : se déplace 6 mots en arrière;
c8fk : efface tout le texte jusqu'à la huitième occurrence du caractère k puis passe en mode insertion;
91G : va à la ligne 91 du fichier;
d3$ : efface jusqu'à la fin de la ligne courante plus les deux lignes suivantes.
Ce ne sont certes pas des commandes très intuitives, mais comme toujours le meilleur moyen est de se familiariser avec elles par la pratique. En tout cas, vous pouvez voir que l'expression « déplacer des montagnes en quelques touches » n'est pas si exagérée que ça !:-)
VI dispose d'une commande que nous avons déjà vue pour copier du texte : la commande y. Pour couper du texte, utilisez tout simplement la commande d. Vous disposez de 27 mémoires pour y stocker du texte : une mémoire anonyme et 26 mémoires portant le nom des 26 lettres minuscules de l'alphabet.
Pour utiliser la mémoire anonyme, il suffira d'entrer la commande telle quelle. Ainsi, la commande y12w copie dans la mémoire anonyme les 12 mots depuis le curseur[2]. Utilisez d12w si vous voulez couper cette zone.
Pour utiliser l'une des 26 mémoires nommées, on utilise la séquence "<x> avant la commande, où <x> désigne le nom de la mémoire. Ainsi pour copier les mêmes 12 mots dans la mémoire k, on écrirait "ky12w, et "kd12w si on veut les couper.
Pour coller le contenu de la mémoire anonyme, vous disposez des commandes p ou P (pour Paste, coller), ce qui insérera le texte respectivement après le curseur ou devant le curseur. Pour coller le contenu d'une mémoire nommée, utilisez de la même façon "<x>p ou "<x>P (par exemple "dp collera le contenu de la mémoire d après le curseur).
Prenons l'exemple de la figure 4-5.
Pour effectuer cette action, on va donc :
recopier les 6 premiers mots de la phrase dans la mémoire r (par exemple) : "ry6w[3];
passer dans le tampon fichier2, qui se situe dessous : Ctrl+w j;
coller le contenu de la mémoire r devant le curseur : "rp.
Le résultat, présenté dans la figure 4-6, est bien celui qui est attendu.
Quant à la recherche de texte, elle s'avère très simple : en mode commande, il suffit de taper / suivi de la chaîne à rechercher, suivi d'une pression sur la touche Entrée. Par exemple, /partie recherchera la chaîne partie à partir de la position courante. Un appui sur n conduit à la prochaine occurrence, et si vous arrivez à la fin du fichier, la recherche recommencera depuis le début. Pour rechercher en remontant dans le fichier, il faut remplacer / par ?.
Pour quitter, la commande est :q (en fait, cette commande ferme le tampon actif, comme nous l'avons déjà vu, mais si c'est le seul tampon présent, vous quittez VI). Il existe un raccourci : la plupart du temps on n'édite qu'un seul fichier. Pour quitter on utilisera alors :
:wq pour sauvegarder les modifications et quitter (solution plus rapide : ZZ), ou
:q! pour quitter sans enregistrer.
Par extension, vous aurez deviné que si vous avez plusieurs tampons, :wq écrira le tampon actif puis le fermera.
[1] | Un raccourci pour dl (effacer un caractère à droite) est x; un raccourci pour dh est X; dd efface la ligne courante. |
[2] | Evidemment, si le curseur se trouvait au début du premier mot! |
[3] | En anglais, y6w donne littéralement : « Yank 6 words », littéralement extirper 6 mots, et donc copier 6 mots en français. |
Page précédente | Début | Page suivante |
L'édition de texte : Emacs et VI | Remonter | Un dernier mot... |