Copyright (c) 1985 Free Software Foundation, Inc; Voir conditions à la fin. Vous êtes en présence du « tutoriel » d'Emacs. Les commandes d'Emacs utilisent généralement les touches dites de contrôle (souvent étiquetées CTRL ou CTL) et les touches dites META. Plutôt que d'écrire chaque fois ces préfixes en entier, nous adoptons la convention de notation suivantes : C- se comprend : enfoncer la touche CONTROL et taper la touche . Ainsi, C-f se fait en enfonçant la touche CONTROL et en tapant f. M- se comprend : enfoncer la touche META (ou EDIT) tout en tapant la touche . En l'absence de cette touche, on utilise la touche (quelquefois étiquetée ALT, ou Echap) qui fonctionne différemment : taper d'abord , relacher, puis taper la touche . À noter : pour terminer une session Emacs, taper C-x C-c (cela fait deux caractères). Les caractères ">>" en marge gauche signalent des instructions que vous devez effectuer, pour essayer une commande. Par exemple : >> Tapez maintenant C-v (View next screen) pour passer à l'écran suivant. (allez-y, enfoncez la touche CONTROL puis v en même temps). Dorénavant, vous devrez faire cette commande chaque fois que vous aurez terminé la lecture de l'écran. Notez qu'il y a un chevauchement de ligne lorsque l'on avance d'un écran ; cela permet une continuité dans le parcours de fichier. La première chose qu'il est nécessaire de savoir est la façon de se déplacer dans un fichier. Vous savez déjà comment avancer d'un écran, avec C-v. Pour reculer d'un écran, tapez M-v (enfoncez la touche META puis tapez v, ou tapez d'abord puis v, s'il n'y a pas de touche META). >> Essayez M-v puis C-v pour vous déplacer de quelques écrans dans les deux sens. * RÉSUMÉ -------- Les commandes suivantes permettent de visualiser les écrans : C-v Avance d'un écran M-v Recule d'un écran C-l Efface et ré-affiche tout, en plaçant le texte où est le curseur au centre. (C'est bien control-L, et non control-1.) >> Localisez le curseur, et notez le texte qui l'environne. Puis tapez C-l. Localisez de nouveau le curseur, et le texte qui l'entoure. * DÉPLACEMENTS DE BASE DU CURSEUR --------------------------------- Se déplacer d'écran en écran est certes utile, mais il faut aussi pouvoir se positionner dans un écran donné à un endroit donné. Il y a plusieurs façon de procéder. L'une (pas la meilleure, mais la plus simple) consiste à utiliser les commandes "previous", "backward", "forward" et "next". Comme vous pouvez l'imaginer --du moins si vous parlez anglais--, ces commandes (qui sont accessibles sous Emacs par C-p, C-b, C-f, et C-n) déplacent le curseur de sa position courante vers une nouvelle position dans la direction donnée. Voici ces mêmes commandes sous une forme plus graphique : Previous line, C-p : : Backward, C-b .... Pos. courante du curseur .... Forward, C-f : : Next line, C-n >> Déplacez le curseur jusqu'à la ligne du milieu de ce schéma et tapez C-l pour avoir tout le schéma centré sur l'écran. Il est relativement facile de se souvenir de ces commandes. P pour "previous", N pour "next", B pour "backward", et F pour "forward". Il s'agit des commandes courantes de positionnement du curseur, que vous avez des chances d'utiliser en PERMANENCE, il serait bon de les retenir dès maintenant. >> Faites quelques C-n pour amener le curseur jusqu'à cette ligne. >> Avancez dans la ligne avec quelques C-f, puis remontez avec C-p. Observez comment se comporte C-p lorsque le curseur est à l'intérieur d'une ligne. Les lignes sont séparées par des caractères "Newline". Pour la plupart des applications, il devrait normalement y avoir un "Newline" à la fin du texte, mais c'est à vous de vous assurer qu'il en va ainsi. Un fichier peut parfaitement exister sans "Newline" à la fin. >> Essayez des C-b au début d'une ligne. Encore quelques uns. Puis faites des C-f jusqu'à la fin de la ligne et au-delà. Lorsque vous atteignez le haut ou le bas de l'écran, le texte au-delà du bord est décalé dans l'écran de façon que le déplacement demandé puisse se faire avec le curseur sur l'écran. >> Essayez de sortir le curseur de l'écran vers le bas, et observez. Si le déplacement caractère par caractère est trop lent, il est possble de se déplacer mot par mot. M-f avance d'un mot, et M-b recule d'un mot. >> Essayez quelques M-f et M-b. Entremelez-les avec des C-f et C-b. Notez le parallèle entre C-b et C-f d'un côté, et M-b et M-f, de l'autre. Très souvent, les commandes "meta" concernent le texte alors que les commandes "control" opèrent sur des unités textuelles indépendantes du type de texte que vous éditez (caractère, ligne, etc). On retrouve ce parallèle avec les lignes et les phrases : C-a et C-e placent le curseur au début ou à la fin de la ligne, et M-a et M-e au début ou à la fin d'une phrase. >> Essayez quelques C-a, puis quelques C-e. Essayez quelques M-a, puis quelques M-e. Observez comment la répétition de C-a est sans effets, alors que les M-a déplacent le curseur chaque fois. Pensez-vous qu'il s'agit d'un fonctionnement correct ? Encore deux commandes de délacement du curseur : M-< (Meta Inférieur), qui place le curseur au début du fichier, et M-> (Meta Supérieur), uqi le place à la fin. Ce n'est pas une bonne idée de les essayer maintenant, car il faudrait ensuite retrouver là où nous sommes. Sur la plupart des terminaux le "<" est au-dessus de la virgule, il faut donc utiliser la touche "shift" pour taper M-< ; sans le "shift", vous taperiez M-, (Meta Virgule). La localisation du curseur dans le texte est aussi appelée "point". En d'autres termes, le curseur indique sur l'écran l'endroit où le point se trouve dans le texte. Voici un résumé (en anglais) des opérations simples de déplacement : C-f Move forward a character C-b Move backward a character M-f Move forward a word M-b Move backward a word C-n Move to next line C-p Move to previous line C-a Move to beginning of line C-e Move to end of line M-a Move back to beginning of sentence M-e Move forward to end of sentence M-< Go to beginning of file M-> Go to end of file >> Essayez un peu toutes ces commandes. Les deux dernières vont vous emmener loin de cet écran, mais vous pouvez revenir avec des C-v et M-v. Comme toutes les autres commandes d'Emacs, ces commandes peuvent recevoir des arguments qui permettent de les exécuter dmanière répétée. La façon de fournir un argument numérique à une commande est de taper d'abord C-u puis les chiffres avant de taper la commande. Si vous avez une touche META, vous pouvez aussi maintenir enfoncée la touche META en même temps que vous tapez les chiffres. C'est plus facile, mais nous recommandons la méthode C-u, car elle fonctionne avec tous les terminaux. Par exemple, C-u 8 C-f avance de 8 caractères. >> Essayez de donner un argument approprié à C-n ou C-p de façon à venir le plus près possible de cette ligne en une seule fois. La seule exception apparente à ce principe concerne les commandes de déplacement d'écran, C-v et M-v. Avec un argument numérique, ces commandes font défiler vers le haut ou vers le bas du nombre de lignes donné en argument, au lieu du nombre d'écrans. Cette méthode s'est simplement avérée plus utile. >> Essayez de taper C-u 8 C-v maintenant. Est-ce que cela vous a fait remonter de 8 lignes ? Si vous voulez redescendre, vous pouvez donner un argument à M-v. Si vous utilisez X Windows, il y a sans doute un cadre rectangulaire appelé « ascenseur » sur le coté droit de la fenêtre d'Emacs. Vous pouvez faire défiler le texte en cliquant dans cet ascenseur. >> Essayez d'enfoncer le bouton du milieu de la souris au sommet de la zone en vidéo inverse de l'ascenseur, puis de déplacer la souris tout en gardant ce bouton enfoncé. >> Déplacez la souris vers un endroit environ trois lignes plus bas que le haut de l'ascenseur, puis cliquez deux ou trois fois le bouton de gauche. Puis essayez aussi deux ou trois fois le bouton de droite. * QUAND EMACS BOUCLE -------------------- Si Emacs entre dans un calcul infini (disons, très long), que vous ne voulez pas poursuivre, vous pouvez mettre fin à ce calcul sans danger en tapant C-g. Vous pouvez aussi utiliser C-g pour annuler un argument numérique, ou le début d'une commande que vous ne désirez pas achever. >> Tapez maintenant C-u 100 pour constituer un argument numérique de 100, puis tapez C-g. Maintenant tapez C-f. De combien de caractères avancez-vous ? Si vous avez tapé un par erreur, vous pouvez vous en sortir aussi en tapant C-g. Si vous tapez :, une nouvelle fenêtre apparaît sur l'écran, qui vous indique que M- est une commande désactivée (disabled command), et qui vous demande si vous voulez vraiment l'exécuter. La commande M-ESC est marquée comme désactivée car il est vraisemblable que vous ne souhaiterez pas l'utiliser avant d'en savoir plus sur Emacs, et nous pensons que cela pourrait être plutôt perturbant d'avoir la possibilité de se servir de cette commande. Si vous voulez vraiment essayer la commande M-ESC, vous pouvez taper en réponse à la question, et la commande M-ESC continuera. Si vous ne voulez pas exécuter M-ESC, tapez "n" en réponse à la question. >> Tapez , puis répondez "n". * FENÊTRES ---------- Emacs peut avoir plusieurs fenêtres, chacune affichant son propre texte. Nous n'allons pas entrer maintenant trop dans la méthode d'utilisation de plusieurs fenêtres. Mais il vous faut dès maintenant au moins savoir comment vous débarrasser des fenêtres supplémentaires qui apparaissent à l'occasion de certains messages d'aide ou pour l'affichage du résultat de certaines commandes. C'est simple : C-x 1 Une fenêtre (c-à-d, supprime toutes les autres). Il faut taper Control x, suivi du chiffre 1. C-x 1 rend la fenêtre courante (celle où se trouve le curseur) maximale, en supprimant les autres fenêtres. >> Déplacez le curseur jusqu`à cette ligne, et tapez C-u 0 C-l. >> Tapez C-h k C-f. Observez comment la fenêtre courante se réduit, pour laisser apparaître une nouvelle qui affiche la documentation demandée à propos de la commande C-f. >> Tapez C-x 1 et vérifiez que la fenêtre de documentation disparaît. * INSERTION ET SUPPRESSION -------------------------- Si vous voulez entrer (insérer) du texte, il suffit de le taper. Les caractères visibles, comme A, 7, *, etc. sont considérés par Emacs comme du texte, et immédiatement insérés. Tapez (retour-charriot) pour insérer un caractère « Newline ». Vous pouvez supprimer le dernier caractère tapé avec la touche (touche quelquefois marquée ). En général, supprime le caractère immédiatement à gauche de la position du curseur. >> Faites-le maintenant : tapez qulques caractères, puis effacez-les en tapant . Ne vous inquiétez pas à propos des modification faites dans ce fichier ; cela n'aura pas d'incidence sur le tutoriel lui-même, car vous travaillez sur une copie de ce dernier. >> Commencez maintenant à taper du texte, jusqu'à ce que vous atteigniez la marge droite. Lorsqu'une ligne est trop longue pour entrer sur l'écran, elle est « poursuivie » sur la ligne suivante. Le caractère '\' (backslash) à droite de la première ligne sert à indiquer ces cas. >> Utilisez pour supprimer assez de texte pour que la ligne loge de nouveau sur l'écran. La « ligne de continuation » disparaît. >> Tapez pour insérer le « Newline » que vous venez de supprimer. N'oubliez pas que la plupart des commandes d'Emacs peuvent recevoir un argument numérique de répétition. Ceci est valable pour le caractères que vous insérez. >> Essayez : tapez C-u 8 * et voyez ce qui se passe. Vous avez maintenant vu la façon la plus simple d'entrer du texte sous Emacs, et de corriger les erreurs. On peut aussi faire des suppressions de mots, ou de lignes. Voici une liste des opérations de suppression (en anglais on dit 'kill') : supprime le caractère juste avant le curseur C-d supprime le caractère après le curseur M- supprime le mot immédiatement avant le curseur M-d supprime le mot après le curseur C-k supprime du curseur jusqu`à la fin de la ligne M-k supprime du curseur jusqu`à la fin de la phrase Notez que et C-d, d'un côté, M- et M-d de l'autre, prolongent le parallèle que l'on avait avec C-f et M-f (il est vrai que n'est pas tout à fait un caractère de contrôle, mais négligeons ce point ici). Supposez maintenant que vous ayez supprimé quelque chose, et que vous vouliez en fait le restituer. Ceci est possible, car Emacs met de côté tout ce que vous supprimez, dès lors que c'est plus gros qu'un caractère. Pour le ré-insérer, utilisez C-y. Vous pouvez supprimer du texte à un endroit, vous déplacer, et le ré-insérer alors : c'est une bonne façon de déplacer du texte. Notez qu'il y une différence (non rendue en français) entre "Killing" et "Deleting" pour les commandes Emacs. Les premières, qui suppriment en général des portions de texte, sauvegardent ce qu'elles suppriment ; les secondes, qui effacent en général un seul caractère, ou des blancs et des lignes vides, ne mémorisent rien. Par exemple, tapez C-n deux ou trois fois pour placer le curseur sur une ligne de cet écran. >> Une fois placé, supprimez la ligne avec C-k. Notez que le premier C-k supprime le contenu de la ligne, et que le second détruit la ligne elle-même, en faisant donc remonter toutes les autres lignes. Si vous donnez un argument numérique à C-k, cela supprime les nombre de lignes ET leur contenu. Le texte qui vient d'être supprimé est donc sauvegardé, de sorte que vous pouvez le restituer. Pour ce faire, là où se trouve actuellement le curseur, tapez C-y. >> Essayez; tapez C-y pour ré-insérer le texte (en anglais : 'yank') Notez que si vous faites plusieurs C-k de suite, l'ensemble du texte supprimé est sauvé ensemble, de sorte qu'un seul C-y restituera tout. >> Essayez : faites plusieurs C-k. Maintenant, pour restituer le texte « tué » : >> Tapez C-y. Puis déplacez le curseur de quelques lignes vers le bas, et refaites C-y. Vous voyez ainsi comment on peut copier du texte. Que faire lorsque vous avez supprimé du texte que vous voulez restituer, et que vous faites une autre suppression ? C-y ne ré-insère que la dernière suppression. Mais le texte précédent n'est pas perdu. Vous pouvez le retrouver en utilisant la commande M-y. Juste après que vous ayaez tapé C-y pour ré-insérer le texte le plus récemment supprimé, la touche M-y remplace ce texte par celui qui avait été supprimé avant, et ainsi de suite, chaque M-y restituant une suppression plus ancienne. Lorsque vous avez atteint le texte que vous recherchiez, il suffit de ne plus faire M-y, et de le laisser là. Le «kill-buffer» est circulaire : si vous tapez assez de M-y, vous revenez au texte du début (c-à-d inséré par le C-y). >> Supprimez une ligne, déplacer vous un peu, supprimez une autre ligne. Puis faites C-y pour ramener cette dernière ligne. Puis tapez M-y, et elle sera remplacée par la première ligne tuée. Encore quelques M-y pour voir ce que vous obtenez. Faites autant de M-y que nécessaire pour revenir à la seconde ligne supprimée. Il est possible de donner à M-y des arguments numériques positifs et négatifs. * UNDO ------ Chaque foisque vous faites une modification du texte, et que vous regrettez de l'avoir faites, il est possible de dé-faire (undo) ces modifications (en restituant donc le texte tel qu'il était avant) avec la commande undo : C-x u. Par défaut, C-x u dé-fait ce qi a été modifié par LA commande précédente ; si vous tapez plusieurs fois C-x u d'affilée, chacun dé-fait une commande de plus. Il y a deux exceptions : les commands qui ne font que déplacer le curseur ne comptent pas, et les caractères directement insérés sont regroupés en paquets (jusqu'à 20). Ceci permet de réduire le nombre de C-x u à taper. >> Supprimez cette ligne avec C-k, puis tapez C-x u, et elle devrait ré-apparaître. C-_ est une autre façon de lancer undo. Elle fait la même chose que C-x u, et plus facile à taper, en particulier quand il y en a plusieurs. Le problème est qu'elle n'est pas toujours évidente à taper selon les claviers. C'est pourquoi on conserve C-x u. On some DEC terminals, you can type C-_ by typing / while holding down CTRL. Illogical, but what can you expect from DEC? Fournir un argument numérique à C-_ ou C-x u est équivalent à répéter d'autant la commande. * FICHIERS ---------- Pour rendre permanent le texte en cours d'édition, il faut le mettre dans un fichier. Sinon, il va être perdu en même temps que l'Emacs en cours. On met le texte édité dans un fichier en « trouvant » le fichier (anglais find). Par « trouver » on entend que l'on visualise le contenu du fichier dans Emacs, et, en gros, ce que l'on édite est le fichier lui-même. Cependant, les modifications ne deviennent permanentes que lorsque l'on sauve (save) le fichier. C'est cette méthode qui permet d'éviter de laisser une fichier à moitié modifié si vous ne le désirez pas. Même alors, Emacs laisse le fichier original sous un autre nom, au cas où vos modifications s'avèreraient fausses. Si vous regardez le bas de l'écran (ou de la fenêtre), vous voyez une ligne qui commence et se termine par des tirets, et qui contient la chaîne "Emacs: TUTORIAL.fr". Votre copie du tutoriel Emacs est appelée "TUTORIAL". Quel que soit le fichier que vous « trouvez », son nom va apparaître à ce endroit. Les commandes pour « trouver » et sauver les fichiers sont différentes des autres commandes vues jusqu'à présent, car elle consistent en 2 caractères. Elles commencent toutes avec C-x. Il y a une longue série de commandes qui débutent avec ce préfixe ; elles ont toutes trait aux fichiers, buffers, et autres, et elles se composent toutes de C-x plus un autre caractère. Encore une chose à propos de la commande pour charger (trouver) un fichier : il faut lui indiquer quel fichier vous voulez. C'est une commande qui lit donc un argument sur le terminal (ici, l'argument es le nom du fichier). Après avoir tapé la commande C-x C-f Find a file Emacs vous demande de taper le nom du fichier. Ce nom apparaît sur la ligne du bas de l'écran. Vous êtes en train d'utiliser le «minibuffer»! C'est précisément à quoi il est censé servir. Lorsque vous tapez à la fin de votre saisie, le minibuffer n'est plus utile, et il disparaît. >> Tapez C-x C-f, puis tapez C-g. Ceci efface le minibuffer, et annule aussi la commande C-x C-f qui l'utilisait. Donc vous ne chargez pas de fichier. Lorsque vous voulez sauver les modifications effectuées sur le fichier, utilisez la commande C-x C-s Save the file Le contenu d'Emacs est alors écrit dans le fichier. La première fois que cette commande est exécutée, le fichier original est renommé de façon à ne pas être perdu. Son nouveau nom est formé en ajoutant le caractère "~" à la fin du nom original. Lorsque la sauvegarde est terminée, Emacs affiche le nom du fichier sauvé. Il est conseillé de faire assez souven des sauvegardes, de sorte de ne pas perdre trop de données en cas de problème système. >> Tapez C-x C-s, ce qui sauvegarde cette copie du tutoriel Cela devrait afficher "Wrote .../TUTORIAL" en bas de l'écran. Pour créer un nouveau fichier, il suffit de le "chercher" (find) comme s'il existait déjà. On peut ensuite taper le texte, et lorsque vous demanderez à Emacs de sauvegarder le fichier, il créera effectivement le fichier avec le texte que vous venez d'y mettre. Dorénavant, vous pouvez considérer que vous êtes en train d'éditer un fichier existant. * BUFFERS --------- Si vous ouvrez (find) un deuxième fichier avec C-x C-f, le premier fichier reste « à l'intérieur » d'Emacs. Vous pouvez y revenir en le rechargeant avec C-x C-f. Ceci vous permet d'avoir « à l'intérieur » d'Emacs un nombre important de fichiers. Les objets « à l'intérieur » d'Emacs qui contiennt le texte lu dans un fichier sont appelés des "buffers" (la traduction de buffer est tampon, mais on gardera par commodité le terme de buffer). Le chargement d'un fichier crée à chaque fois un nouveau buffer dans Emacs. Pour voir une liste des buffers qui existent dans Emacs, tapez C-x C-b List buffers >> Essayez C-x C-b maintenant. Vous voyez que chaque buffer a un nom, et peut aussi avoir un nom de fichier associé. Certains buffers ne correspondent pas à des fichiers. Par exemple, le buffer appelé "*Buffer List*" n'a pas de fichier associé. C'est le buffer qui contient la liste des buffers qui a été créée par la commande C-x C-b. TOUT texte qui apparaît dans une fenêtre Emacs est nécessairement dans un buffer. >> Tapez C-x 1 pour vous débarraser de la liste des buffers Si vous faites des modifications sur le texte d'un fichier, puis chargez un autre fichier, cela ne sauvegarde pas le premier. Les modifications restent « à l'intérieur » d'Emacs, dans le buffer correspondant. La création ou la modification du buffer d'un autre fichier n'a pas d'effet sur le buffer du premier fichier. C'est très utile, mais cela signifie aussi qu'il faut être en mesure de sauvegarder le premier buffer, sans avoir à revenir dessus. Aussi disposons-nous de la commande C-x s Save some buffers C-x s parcourt la liste des buffers que vous avez et trouve tous ceux qui correspondnet à des fichiers que vous avez modifié. Pour chacun de ceux-là, C-x s vous propose de le sauvegarder * EXTENSION DU JEU DE COMMANDES ------------------------------- Il y a beaucoup beaucoup plus de commandes Emacs que ce que l'on pourrait associer à tous les caractères de contrôle. Emacs s'en sort au moyen des commandes X (eXtend). Il y en a deux variétés : C-x Character eXtend. Suivie par un caractère M-x Named command eXtend. Suivie par un nom (long) Il s'agit de commandes utiles, mais moins souvent utilisées que celle que vous avez vues jusqu'à présent. Vous en avez déjà vues deux : les commandes concernant les fichiers C-x C-f et C-x C-s. Un autre exemple est la commande pour indiquer à Emacs que vous avez terminé votre session. La commande est C-x C-c. (Pas d'inquiétude : elle propose la sauvegarde de toutes les modifications avant de terminer.) Il y a de nombreuses commandes C-x. Celles que vous connaissez sont : C-x C-f Find file. C-x C-s Save file. C-x C-b List buffers. C-x C-c Quit Emacs. C-x u Undo.