Linux-Mandrake:
Guide de l'utilisateur
et Manuel de référence

MandrakeSoft

 
 
Janvier 2000
http://www.linux-mandrake.com


Suivant : Organisation de l'arborescence des fichiers
Précédent : Introduction à la ligne de commande
Retour

(Retour à la table des matières)

Chapitre 2 : L'édition de texte: Emacs et VI


Comme annoncé en introduction, l'édition de texte[8] est un point incontournable dans l'utilisation d'un système Unix. Les deux éditeurs dont nous allons étudier (brièvement) l'utilisation sont un peu difficiles à aborder, mais dès que vous avez acquis les bases, ils s'avèrent l'un comme l'autre de formidables outils.

Emacs

Emacs est sans doute l'éditeur de texte le plus puissant qui soit. Il peut absolument tout faire et il est extensible à l'infini grâce à son langage de programmation inclus, basé sur Lisp. Avec Emacs vous pouvez vous promener sur le web, lire votre courrier, les groupes de discussions, faire le café, etc. Mais ce que vous pourrez faire à la fin de cette section sera limité à: ouvrir Emacs, éditer un ou plusieurs fichiers, les sauvegarder, et quitter Emacs. C'est déjà bien.

Brève présentation

Invoquer Emacs est relativement simple:

emacs [fichier] [fichier...]

Emacs ouvrira chaque fichier passé en argument dans un tampon jusqu'à un maximum de deux tampons visibles en même temps, et vous présentera le tampon *scratch* si vous ne spécifiez pas de fichier. Si vous êtes sous X, vous avez également des menus à votre disposition, mais nous verrons ici comment manipuler Emacs au clavier. C-x représente la séquence Control+x, M-s représente la séquence Alt+s.

Pour commencer

Il est temps de pratiquer. Ouvrons par exemple deux fichiers, fichier1 et fichier2. Si ces deux fichiers n'existaient pas, ils seront créés (si vous écrivez quelque chose dedans):

$ emacs fichier1 fichier2

Vous obtenez une fenêtre, présentée dans la figure 55.1.

Emacs, éditant deux fichiers à la fois
Figure 55.1 Emacs, éditant deux fichiers à la fois

Vous pouvez voir que deux tampons ont été créés: un par fichier. Un troisième est également présent, au bas de l'écran (là ou vous voyez (New file)): c'est le mini-tampon. Vous ne pouvez pas aller de vous-même dans ce tampon, il faut qu'Emacs vous y invite lors de saisies interactives. Pour changer de tampon, tapez C-x o. Vous pouvez taper du texte comme dans un éditeur « normal », et en effacer avec la touche Suppr ou la touche Backspace.

Pour vous déplacer, vous pouvez utiliser les touches fléchées, mais aussi d'autres combinaisons: C-a pour aller en début de ligne, C-e pour aller en fin de ligne, M-< pour aller au début du tampon et M-> pour aller à la fin du tampon. Il existe beaucoup d'autres combinaisons, même pour chacune des touches fléchées[9].

Dès que vous voulez enregistrer les modifications faites sur un fichier, tapez C-x C-s, ou si vous voulez enregistrer le contenu du tampon dans un autre fichier, tapez C-x C-w et Emacs vous demandera le nom du fichier dans lequel écrire le contenu du tampon. Vous disposez du complètement pour ce faire.

Manipulation des tampons

Vous pouvez, si vous le voulez, ne montrer qu'un tampon à l'écran. Vous avez deux solutions:

Vous pouvez ensuite remettre le tampon que vous souhaitez à l'écran de deux manières:

Si vous en avez fini avec un fichier et voulez vous débarrasser du tampon associé, tapez C-x k. Emacs vous demandera alors quel tampon il lui faut fermer. C'est le nom du tampon dans lequel vous êtes par défaut; si vous voulez vous débarrasser d'un autre tampon que celui proposé, entrez directement son nom ou bien appuyez sur TAB: Emacs ouvrira alors (encore) un autre tampon appelé *Completions* indiquant la liste des choix possibles. La touche Entrée valide le choix.

Vous pouvez également à tout moment remettre deux tampons visibles à l'écran; pour cela tapez C-x 2. Par défaut le nouveau tampon créé sera une copie du tampon en cours (ce qui vous permet par exemple d'éditer un gros fichier en plusieurs endroits « en même temps »), et il vous suffit alors de procéder comme indiqué précédemment pour passer à un autre tampon.

Vous pouvez à tout moment ouvrir d'autres fichiers, avec C-x C-f. Emacs vous demandera alors le nom du fichier et vous disposez là aussi du complètement.

Copier, couper, coller, rechercher

Supposons que nous sommes dans la situation de la figure 12.2.

Emacs, avant la copie du bloc de texte
Figure 12.2 Emacs, avant la copie du bloc de texte

Il faut d'abord sélectionner le texte que l'on veut copier. Sous X, vous pouvez le faire à la souris, et la région sélectionnée sera même mise en surbrillance. Mais là on est en mode texte :) En l'occurrence on veut copier toute la phrase. Il faut d'abord poser une marque pour marquer le début de la région. En supposant que le curseur soit à l'endroit où il est dans la figure ci-dessus, tapez d'abord C-ESPACE (Control + barre espace): Emacs affichera alors le message Mark set dans le mini-tampon. Puis déplacez-vous en début de ligne avec C-a: la région sélectionnée pour copier ou couper est toute la région se situant entre la marque et la position actuelle du curseur, donc dans ce cas présent toute la ligne. Tapez ensuite M-w (pour copier) ou C-w (pour couper). Si vous copiez, Emacs reviendra alors brièvement à la position de la marque, pour que vous visualisiez la région sélectionnée.

Puis rendez-vous dans le buffer où vous voulez copier le texte, et tapez C-y, pour obtenir à l'écran la même chose que dans la figure 12.3.

Emacs, après la copie du bloc de texte
Figure 12.3 Emacs, après la copie du bloc de texte

En fait, ce que vous venez de faire est de copier du texte dans le kill ring (« cercle des morts ») d'Emacs: ce kill ring contient toutes les régions copiées ou coupées depuis le lancement d'Emacs. Toute région qui vient d'être copiée ou coupée est mise en tête du kill ring. La séquence C-y ne fait que « coller » la région en tête: si vous voulez avoir accès aux autres régions, appuyez sur C-y puis sur M-y jusqu'à ce que vous tombiez sur le texte souhaité.

Pour rechercher du texte, placez-vous dans le tampon souhaité et tapez C-s: Emacs vous demande alors la chaîne à rechercher. Pour lancer une nouvelle recherche avec la même chaîne, toujours dans le tampon courant, tapez C-s une nouvelle fois. Dès qu'Emacs arrive à la fin du tampon et ne trouve plus d'occurrence de la chaîne cherchée, vous pouvez de nouveau taper C-s pour recommencer la recherche depuis le début du tampon. Une pression sur la touche Entrée termine la recherche.

Pour rechercher et remplacer, tapez M-%. Emacs vous demande la chaîne à rechercher, par quoi la remplacer, et vous interroge pour chaque occurrence qu'il trouve.

Une dernière chose bien utile: C-x u permet d'annuler l'opération précédente. Vous pouvez annuler autant d'opérations que vous le souhaitez.

Quitter Emacs

Pour ce faire le raccourci est C-x C-c. Emacs vous demandera alors s'il faut enregistrer les modifications effectuées dans les tampons si vous ne les avez pas sauvegardées.

VI: l'ancêtre

VI a été le premier éditeur plein écran existant. C'est l'un des principaux arguments des détracteurs d'Unix, mais aussi l'un des principaux arguments de ses défenseurs: s'il est compliqué à appréhender, c'est aussi un outil extrêmement puissant une fois que l'on a l'habitude de l'utiliser. En quelques frappes de touches, un utilisateur de VI peut déplacer des montagnes, et 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.

Mode d'insertion, mode commande, mode ex...

Tout d'abord, l'invocation: exactement comme Emacs. Reprenons donc nos deux fichiers et tapons:

$ vi fichier1 fichier2

À partir de là, vous vous retrouvez devant une fenêtre telle que celle de la figure 12.4.

Situation de départ dans VIm
Figure 12.4 Situation de départ dans VIm

Vous vous retrouvez alors en mode commande devant le premier fichier ouvert. Et là, les difficultés commencent :) 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:

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 taper 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 tard.

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>.

Manipulation de tampons

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 tampon, il vous faut taper :next pour passer au fichier suivant et :prev pour passer 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 C-w j pour passer au tampon en-dessous ou C-w k pour passer au tampon au-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, faites comme il dit :) Tapez :q! ou :close!.

Édition de texte et commandes de déplacement

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:

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:

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:

Ce ne sont certes pas des commandes très intuitives, mais comme toujours le meilleur moyen est de pratiquer. En tout cas, vous pouvez voir que l'expression « déplacer des montagnes en quelques touches » n'est pas tellement exagérée :)

Couper, copier, coller

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 on entre la commande telle quelle. Ainsi, la commande y12w copie dans la mémoire anonyme les 12 mots depuis le curseur[11]. 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 »), pour insérer 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 12.5.

VIm, avant la copie du bloc de texte
Figure 12.5 VIm, avant la copie du bloc de texte

Pour effectuer cette action, on va donc:

Le résultat, présenté dans la figure 12.6, est bien celui qui est attendu.

VIm, après la copie du bloc de texte
Figure 12.6 VIm, après la copie du bloc de texte

La recherche de texte est 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 '?'.

Quitter VI

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:

Par extension, vous aurez deviné que si vous avez plusieurs tampons, :wq écrira le tampon actif puis le fermera.

Un dernier mot...

Bien sûr, nous en avons dit ici beaucoup plus que ce qu'il était nécessaire (après tout le but premier était d'éditer un fichier texte), mais c'est aussi pour vous montrer quelques-unes des possibilités de chacun de ces éditeurs. Il y aurait beaucoup plus à dire sur eux, comme en témoigne le nombre de livres consacrés à l'un ou à l'autre.

Prenez le temps de digérer toutes ces informations, jetez votre dévolu sur l'un ou l'autre, ou n'apprenez que ce que vous jugez nécessaire. Mais au moins vous savez que le jour où vous voudrez aller plus loin, vous le pourrez :)


Suivant : Organisation de l'arborescence des fichiers
Précédent : Introduction à la ligne de commande
Retour

Copyright © 2000 MandrakeSoft