Copyright (c) 1985 Free Software Foundation, Inc; See end for conditions. Ceci est le tutoriel d'Emacs. Les commandes Emacs font souvent intervenir la touche CONTROL (parfois notée CTRL ou CTL) ou la touche META (parfois notée EDIT ou ALT). Plutôt que d'utiliser ces noms longs à chaque fois, nous utiliserons les abréviations suivantes : C- signifie maintenir la touche CONTROL appuyée en même temps que vous tapez le caractère . Ainsi, C-f se dirait : maintenez la touche CONTROL et tapez f. M- signifie maintenir la touche META, EDIT ou ALT appuyée en même temps que vous tapez le caractère . S'il n'y a pas de touche META, EDIT, ou ALT, vous pouvez d'abord presser et relâcher la touche ESC, puis le caractère . Nous notons la touche ESC. Note importante : pour quitter une session Emacs, tapez C-x C-c (deux caractères) Les caractères ">>" dans la marge gauche vous signalent des indications pour que vous essayez une commande. Par exemple : <> >> Tapez maintenant C-v (Voir l'écran suivant) pour vous déplacer jusqu'au prochain écran. (allez-y, faites-le en appuyant sur les touches CONTROL et v simultanément) A partir de maintenant, vous ferez cela à chaque fois que vous finirez de lire un écran. Notez que, lorsque vous vous déplacez d'un écran, les deux dernières lignes de l'écran restent lisibles en haut du nouvel écran; cela permet de conserver une certaine continuité dans la lecture du texte. La première chose dont vous avez besoin est de vous déplacer d'un endroit à un autre dans le texte. Vous savez déjà avancer d'un écran, avec C-v. Pour revenir en arrière d'un écran, tapez M-v (maintenez la touche META et tapez v, ou tapez v si vous n'avez pas de touche META, EDIT ou ALT). >> Essayez de taper M-v puis C-v plusieurs fois. * RESUME -------- Les commandes suivantes sont utiles pour voir de pleins-écrans : C-v Avancer d'un plein écran M-v Revenir d'un écran en arrière C-l Effacer l'écran et réafficher tout le texte, en déplaçant le texte qui entoure le curseur au milieu de l'écran. (C'est CONTROL-L, pas CONTROL-1) >> Cherchez le curseur et mémorisez le texte qui se trouve autour. Puis tapez C-l. Cherchez de nouveau le curseur et vérifiez que le même texte se trouve autour du curseur. * UTILISATION DU CURSEUR ------------------------ Se déplacer d'écran en écran est utile, mais comment se déplace-t-on à un endroit spécifique du texte sur l'écran ? Vous avez plusieurs manières de faire cela. La plus simple est d'utiliser les commandes C-p, C-b, C-f et C-n. Chacune de ces commandes déplace le curseur d'une ligne ou d'une colonne dans un certain sens. Voici un schéma montrant ces quatre commandes, ainsi que la direction qui leur est associée : ligne Précédente, C-p : : en arrière, C-b .... Position courante du curseur .... en avant, C-f (Backward) : (Forward) : ligne suivante (Next line), C-n >> Déplacez le curseur sur la ligne du milieu du scéma en utilisant C-n ou C-p. Puis tapez C-l pour voir le schéma centré au milieu de l'écran. Si vous avez quelques rudiments d'Anglais, vous pourrez aisément vous souvenir de ces commandes en leur associant un mot Anglais : P pour previous (ou précédente), N pour next (suivante), B pour backward (en arrière) et F pour forward (en avant). Ce sont les commandes de base de positionnement du curseur et vous les utiliserez sans arrêt, vous feriez donc bien de faire l'effort de les retenir tout de suite. >> Tapez quelques C-n (ou C-p) pour amener le curseur à cette ligne. >> Déplacez-vous dans cette ligne avec plusieurs C-f, puis remontez avec quelques C-p. Remarquez bien le comportement de C-p quand le curseur est vers le milieu d'une ligne. Chacune des lignes d'un texte se termine par un caractère de saut à la ligne (Newline), qui sert à la séparer de la ligne suivante. La dernière ligne d'un texte est normalement aussi suivie d'un caractère de saut à la ligne (bien qu'Emacs ne le recquière pas). >> Essayez de taper C-b au début d'une ligne. Le curseur devrait se déplacer à la fin de la ligne précédente. En effet, C-b fait revenir au caractère précédent, qui est en l'occurence un caractère de saut de ligne. C-f peut déplacer le curseur au travers d'un saut de ligne, comme C-b. >> Tapez quelques C-b supplémentaires, pour sentir le positionnement du curseur. Ensuite, tapez des C-f pour retourner à la fin de la ligne. Puis tapez un C-f supplémentaire pour vous déplacer à la ligne suivante. Quand vous déplacez le curseur au-delà du haut ou en-deçà du bas de l'écran, le texte qui se trouve en-dehors de l'écran descend ou monte sur l'écran. Ceci s'appelle le "scrolling" (déplacement d'une grande zone d'écran). Cela permet à Emacs de déplacer le curseur à l'endroit désiré sans pour autant qu'il sorte de l'écran. >> Essayez de déplacer le curseur en dehors du bas de l'écran avec C-n, et regardez ce qui se passe. Si le déplacement caractère par caractère est trop lent, vous pouvez déplacer le curseur mot par mot. M-f (META-f) avance le curseur d'un mot et M-b revient un mot en arrière. >> Tapez quelques M-f et quelques M-b. Quand vous êtes au milieu d'un mot, M-f positionne le curseur à la fin du mot. Quand vous êtes dans des blancs entre deux mots, M-f déplace le curseur à la fin du mot qui suit. M-b fonctionne de façon symétrique. >> Tapez M-f et M-b quelques fois, entrecoupés de C-f et C-b, afin d'observer l'action de M-f et de M-b à différents endroits, dans et entre des mots. Notez le parallèle entre, d'un côté C-f et C-b, et, de l'autre, M-f et M-b. Très souvent, les caractères Méta sont utilisés pour des opérations qui ont trait aux unités de taille définies par le langage (mots, phrases, paragraphes), alors que les caractères CONTROL opèrent sur des unités de base indépendantes de ce que vous éditez (caractères, lignes, etc...). Ce parallèle opère aussi entre les lignes et les phrases : C-a et C-e déplacent le curseur au début et à la fin d'une ligne, et M-a et M-e le déplacent au début et à la fin d'une phrase. >> Essayez quelques C-a, puis quelques C-e. Essayez quelques M-a, puis quelques M-e. Vérifiez que le fait de répéter C-a ne fait rien, alors que répéter M-a déplace toujours le curseur au début de la phrase précédente. Bien que ce ne soit pas des comportements identiques, ils semblent chacun naturel. La position du curseur dans le texte est aussi appelée "point". Pour parler correctement, le curseur montre à l'écran où se trouve le point dans le texte. Voici un résumé de commandes de déplacement du curseur simple, y compris les commandes qui ont trait aux mots et aux phrases : C-f Avancer d'un caractère (Forward) C-b Reculer d'un caractère (Backward) M-f Avancer d'un mot M-b Reculer d'un mot C-n Avancer d'une ligne (Next) C-p Reculer d'une ligne (Previous ou Précédente) C-a Revenir au début d'une ligne (première lettre de l'alphabet) C-e Aller à la fin de la ligne (End of line) M-a Aller au début de la phrase précédente M-e Aller à la fin de la phrase suivante >> Essayez toutes ces commandes maintenant pour vous entraîner. Ce sont les commandes les plus souvent utilisées. Deux autres commandes importantes pour le déplacement du curseur sont M-< (Méta Inférieur) qui positionne le curseur au début du texte tout entier, et M-> (Méta Supérieur) qui positionne le curseur à la fin du texte tout entier. Il se peut que la touche ">" recquière la pression de la touche shift. Vous devez appuyer sur shift en même temps que sur Méta, sans quoi vous obtiendriez l'autre caractère associé à la touche ("<" sur certains claviers français, "." sur la plupart des autres claviers). Il en va sans doute de même d'autres touches ("<" sur les claviers non francophones, par exemple). >> Tapez M-< maintenant, pour vous déplacer au début du tutoriel. Puis utilisez C-v plusieurs fois pour revenir ici. >> Essayez M-> maintenant pour vous déplacer à la fin du tutoriel. Puis utilisez M-v plusieurs fois pour revenir ici. Vous pouvez aussi déplacer le curseur avec les touches fléchées si le clavier de votre terminal en dispose. Nous vous encourageons à apprendre (et utiliser) C-b, C-f, C-n et C-p pour trois raisons. Premièrement, elles fonctionnent sur tous les types de terminaux. Deuxièmement, une fois que vous serez habitué(e) à taper sous Emacs, vous trouverez qu'il est plus rapide d'utiliser ces touches "CONTROL" que les touches fléchées (cela vous évite de bouger vos doigts de la zone de saisie habituelle). Troisièmement, une fois que vous aurez l'habitude d'utiliser ces touches, vous apprendrez plus facilement les commandes de déplacement du curseur plus complexes. La plupart des commandes Emacs acceptent un argument numérique; Beaucoup l'utilisent comme un compteur de répétition. Pour donner un argument à une commande, il vous suffit de faire précéder la commande de C-u suivi de l'argument (un nombre). Si le clavier dispose d'une touche META, vous pouvez saisir l'argument en maintenant la touche META enfoncée pendant que vous tapez le nombre (il n'y a alors pas besoin de C-u). Nous vous recommendons de mémoriser la méthode utilisant C-u car elle fonctionne sur tous les terminaux. Par exemple, C-u 8 C-f avance le curseur de huit caractères. >> Essayez d'utiliser C-n ou C-p avec un argument numérique, pour déplacer le curseur sur une ligne proche de celle-ci avec une seule commande. Bien que la plupart des commandes utilisent l'argument comme un nombre de répétitions, certaines commandes l'utilisent différemment. C-v et M-v font partie de ces exceptions. Quand on leur donne un argument, elles "scrollent" (font glisser) l'écran d'autant de lignes, et non pas d'autant d'écrans. Par exemple, C-u 4 C-v fait glisser l'écran de 4 lignes. >> Essayez de taper C-u 8 C-v maintenant. Cela devrait avoir déplacé l'écran de 8 lignes. Si vous voulez le redéplacer vers le bas, vous pouvez donner un argument à M-v. Si vous utilisez Emacs sous X Window System, il devrait y avoir un haut rectangle appelé barre de défilement sur la gauche de votre fenêtre Emacs. Vous pouvez faire glisser le texte en cliquant dans la barre de défilement avec la souris. >> Essayez de presser le bouton du milieu de la souris dans la zone en surbrillance qui se trouve dans la barre de défilement. Ceci devrait déplacer le texte à une position qui dépend de la hauteur à laquelle vous avez cliqué dans la barre de défilement. >> Essayez de déplacer la souris verticalement pendant que vous appuyez sur le bouton du milieu. Vous verrez le texte défiler en même temps que vous bougez la souris. * QUAND EMACS EST BLOQUE ------------------------ Si Emacs ne répond plus à vos commandes, vous pouvez l'interrompre de façon sure en tapant C-g. Vous pouvez utiliser C-g pour arrêter une commande qui met trop longtemps à s'exécuter. Vous pouvez aussi utiliser C-g pour supprimer un argument numérique ou le début d'une commande que vous ne voulez pas finir. >> Tapez C-u 100 pour choisir un argument numérique de 100, puis tapez C-g. Maintenant, tapez C-f. Le curseur devrait n'avancer que d'un seul caractère puisque vous avez annulé l'argument avec C-g. Si vous avec tapé par mégarde, vous pouvez vous en débarasser par C-g. * COMMANDES DESACTIVEES ----------------------- Certaines commandes Emacs sont "désactivées" afin que les utilisateurs débutants ne les utilise pas involontairement. Si vous tapez une commande désactivée, Emacs affiche un message donnant le nom de la commande et vous demandant si vous voulez continuer et exécuter la commande. Si vous voulez vraiment essayer la commande, tapez la touche Espace en réponse à la question. Normalement, si vous ne voulez pas exécuter la commande désactivée, répondez "n". >> Tapez : (qui est une commande désactivée par défaut), puis répondez "n" à la question. (Si : vous propose "Eval: ", c'est qu'elle n'est pas désactivée, auquel cas vous pouvez taper C-g pour annuler la commande, puis essayer C-x n n, qui est aussi une commnde désactivée par défaut). Les réponses possibles sont : Espace Essayer la commande juste cette fois et la laisser désactivée y Essayer la commande et enlever la restriction ! Essayer la commande et enlever la restriction de toutes les commandes désactivées n Ne rien faire. * FENETRES ---------- Emacs peut utiliser plusieurs fenêtres, chacune affichant son propre texte. Nous verrons plus tard comment utiliser plusieurs fenêtres. Pour l'instant, nous voulons vous montrer comment se débarasser des fenêtres superflues pour revenir à une seule fenêtre d'édition. C'est simple : C-x 1 Une fenêtre (càd détruire toutes les autres fenêtres) Cette combinaison de touches est CONTROL-x suivi du chiffre 1. C-x 1 étend la fenêtre qui contient le curseur, afin d'occuper tout l'écran. Cela détruit toutes les autres fenêtres. >> Déplacez le curseur sur cette ligne et tapez C-u 0 C-l. >> Tapez C-h k C-f. (deux commandes, trois touches) Remarquez comment la fenêtre rétrécit, et en laisse apparaître une nouvelle pour afficher la documentation de la commande C-f. >> Tapez C-x 1 et la fenêtre contenant la documentation disparaîtra. * INSERER ET SUPPRIMER ---------------------- Si vous voulez insérer du texte, vous n'avez qu'à le taper. Les caractères que vous pouvez visualiser, comme A, 7, *, etc... sont considérés par Emacs comme du texte et insérés immédiatement. Tapez () pour insérer un caractère de saut de ligne. Vous pouvez effacer le dernier caractère que vous avez inséré en tapant (selon votre configuration) () ou (qui est parfois notée avec une flèche vers la gauche, au dessus de la touche ). [Nous noterons RET la touche ] De manière plus générale, cette touche sert à effacer le caractère qui précède immédiatement le curseur. >> Faites-le maintenant : tapez quelques caractères, puis effacez-les. Ne craignez pas de modifier ce fichier, vous n'altèrerez pas l'original de ce tutoriel. Ceci est votre copie personnelle de l'original. Quand une ligne de texte devient trop longue pour tenir sur une ligne d'écran, la ligne de texte "continue" sur une deuxième ligne d'écran. Un antislash (backslash, "\") dans la marge droite indique une ligne qui déborde sur la suivante. >> Insérez du texte jusqu'à atteindre la marge de droite, et continuez à en insérer. Vous verrez une "ligne de continuation" apparaître. >> Utilisez la touche plusieurs fois pour effacer le texte jusqu'à ce que la ligne tienne à nouveau sur une ligne d'écran. La ligne de continuation disparaît. Vous pouvez effacer un caractère de saut de ligne comme n'importe quel autre caractère. Effacer le caractère de saut de ligne entre deux lignes les fusionne en une seule ligne. Si la ligne fusionnée est trop longue pour tenir sur une ligne d'écran, elle sera affichée avec une ligne de continuation. >> Déplacez le curseur au début de la ligne et tapez . Cela fusionnera cette ligne avec la précédente. >> Tapez RET pour re-insérer le saut de ligne que vous avez effacé. Rappelez vous que la plupart des commandes Emacs acceptent un compteur de répétitions; cela concerne aussi les caractères usuels. Répéter un caractère l'insère plusieurs fois. >> Essayez cela maintenant : tapez C-u 8 * pour insérer ********. Vous connaissez maintenant les façons les plus simples de taper du texte et de corriger des erreurs avec Emacs. Vous pouvez aussi bien effacer (on dit alors couper) des mots ou des lignes entiers. Voici un résumé des commandes d'effacement : efface le caractère qui se trouve juste avant le curseur C-d efface le caractère qui se trouve juste après le curseur M- coupe le mot qui se trouve juste avant le curseur M-d coupe le mot qui se trouve juste après le curseur C-k coupe depuis le curseur jusqu'à la fin de la ligne M-k coupe jusqu'à la fin de la phrase Remarquez que et C-d, et M- et M-d continuent le parallèle qu'il y avait entre C-f et M-f (certes n'est pas précisément un caractère de contrôle, mais ne nous occupons pas de cela pour l'instant). C-k et M-k sont un peu comme C-e et M-e dans la mesure où elles opposent les lignes et les phrases. Quand vous utilisez une commande qui efface plus d'un caractère à la fois, Emacs garde le texte coupé afin que vous puissiez le re-insérer plus tard. Réinsérer du texte précédemment coupé s'appelle le collage (yanking). Vous pouvez coller le texte coupé à l'endroit ou vous l'avez supprimé, ou n'importe où ailleurs dans le texte. Vous pouvez coller le texte plusieurs fois pour en faire plusieurs copies. La commande de collage est C-y (Yank). Remarquez la différence entre "couper" et "effacer" : les choses "coupées" peuvent être collées (yanked back) alors que les choses "effacées" ne le peuvent pas. De manière générale, les commandes qui suppriment beaucoup de texte le gardent, alors que celles qui n'effacent qu'un caractère ou des lignes ne contenant que des espaces, ne gardent pas ce qu'elles effacent. >> Déplacez le curseur au début d'une ligne qui n'est pas vide. Puis tapez C-k pour couper le texte de cette ligne. >> Tapez C-k une seconde fois. Vous verrez que cela coupe le caractère de saut de ligne qui se trouve après cette ligne. Remarquez qu'un unique C-k coupe le contenu de la ligne, et un second C-k coupe la ligne elle-même et fait remonter les autres lignes. C-k utilise l'argument numérique un peu spécialement : elle coupe autant de lignes que spécifie l'argument ET leur contenu. Ce n'est pas une simple répétition. C-u 2 C-k coupe deux lignes et leurs sauts de ligne; taper C-k deux fois ne ferait pas ça. Pour récupérer le dernier texte coupé et le coller là où se trouve le curseur, tapez C-y. >> Essayez : tapez C-y pour faire revenir le texte. Pensez à C-y comme si vous récupériez quelquechose que quelqu'un vous aurait pris. Notez que si vous faites plusieurs C-k consécutifs, tout le texte coupé est gardé ensemble, de telle manière qu'un seul C-y réinsèrera toutes les lignes. >> Faites-le : tapez C-k plusieurs fois. Maintenant, pour récupérer le texte coupé : >> Tapez C-y. Puis déplacez le curseur quelques lignes plus bas et tapez C-y. Vous voyez maintenant comment copier un peu de texte. Que faire quand vous voulez garder du texte et que vous coupez d'autre texte entre-temps ? C-y récupèrerait le texte coupé le plus récemment. Mais le texte précédent n'est pas perdu. Vous pouvez revenir à lui en utilisant la commande M-y. Une fois que vous avez fait C-y pour réinsérer le texte le plus récent, M-y remplace ce texte nouvellement inséré par le avant-dernier texte coupé. Vous pouvez ainsi taper M-y plusieurs fois pour remonter dans les textes coupés. Une fois que vous avez atteint le texte qui vous intéresse, vous n'avez rien à faire pour le garder. Continuez à éditer votre texte, le texte fraîchement inséré restera à cet endroit. Si vous tapez M-y un nombre suffisant de fois, vous revenez au point de départ (le texte coupé le plus récemment). >> Coupez une ligne, déplacez-vous, et coupez une autre ligne. Puis tapez C-y pour récupérer la deuxième ligne coupée. Puis tapez M-y et elle sera remplacée par la première. Tapez encore plusieurs fois M-y et regardez ce que vous obtenez. Continuez jusqu'à ce que vous réobteniez la deuxième ligne que vous venez de couper. Puis tapez encore M-y quelques fois. Vous pouvez essayer de donner des arguments positifs ou négatifs à M-y. * DEFAIRE (UNDO) ---------------- Si vous modifiez le texte et que vous vous apercevez que c'était une erreur, vous pouvez revenir au texte avant modification grâce à la commande défaire (undo) : C-x u. D'habitude, C-x u défait les modifications faites par une commande ; si vous répétez C-x u plusieurs fois d'affilée, chaque répétition défait une commande supplémentaire. Mais il y a deux exceptions : les commandes qui ne modifient pas le texte ne comptent pas (y compris les commandes de déplacement du curseur et de scrolling), et les caractères usuels qui s'auto-insèrent (lettres, chiffres, ponctuation, etc...) sont généralement manipulés par groupes de 20 caractères maximum (Ceci afin de réduire le nombre de C-x u à taper pour défaire une grande quantité de texte tapé). >> Coupez cette ligne avec C-k, puis tapez C-x u et elle devrait réapparaître. C-_ est une alternative à C-x u ; Elle marche exactement comme C-x u mais est plus facile à taper plusieurs fois d'affilée. L'inconvénient de C-_ est que sur certains claviers elle n'est pas évidente à taper. C'est pourquoi nous offrons aussi C-x u. Sur certains terminaux, vous pouvez taper C-_ en tapant / tout en maintenant la touche CTRL. Un argument numérique donné à C-_ ou C-x u agit comme un compteur de répétitions. * FICHIERS ---------- Afin de garder de façon permanente le texte que vous éditez, vous devez le mettre dans un fichier. Sinon, il disparaîtra en même temps que votre session Emacs. Vous mettez votre texte dans un fichier en "trouvant" (finding) le fichier (On dit aussi "visiter" le fichier). Trouver un fichier signifie que vous voyez le contenu du fichier à l'intérieur d'Emacs. De toutes façons, c'est comme si vous éditiez le fichier lui-même. Cependant, les modifications que vous apportez en utilisant Emacs ne deviennent permanentes que lorsque vous "sauvegardez" (ou "sauvez") le fichier. Ceci afin que vous ne laissiez pas des fichiers à moitié changés dans le système. Même quand vous sauvegardez, Emacs laisse le fichier original sous un autre nom au cas où vous décideriez a posteriori que vos modifications étaient erronées. Si vous regardez près du bas de l'écran, vous verrez une ligne qui commence et finit avec des traits d'union ("-"), et débute par "--:-- TUTORIAL.fr" ou quelque chose comme ça. Cette partie de l'écran affiche normallement le nom du fichier que vous êtes en train d'éditer. En ce moment, vous êtes en train de visiter un fichier appelé "TUTORIAL.fr" qui est votre copie personnelle du tutoriel d'Emacs. Quand vous trouvez un fichier avec Emacs, le nom de ce fichier apparaît à cet endroit précis. Les commandes pour trouver et sauvegarder des fichiers sont différentes de la plupart des autres commandes que vous venez de voir car elles sont constituées de deux caractères. Elles commencent toutes les deux avec le caractère C-x. Il y a beaucoup de commandes qui commencent par C-x ; beaucoup d'entre elles ont à voir avec les fichiers, les tampons et les choses qui s'y rapportent. Ces commandes peuvent contenir jusqu'à quatre caractères. Une autre chose à propos de la commande pour trouver un fichier est que vous devez lui fournir le nom du fichier que vous voulez. On dit que la commande "lit un argument depuis le terminal" (en l'occurence, l'argument est le nom du fichier). Après avoir tapé la commande : C-x C-f Trouver un fichier (Find) Emacs vous demande de taper le nom du fichier. Le nom de fichier que vous saisissez apparaît sur la ligne du bas de l'écran. La ligne du bas est appelée le minitampon quand il est utilisé pour ce genre de saisie. Vous pouvez utiliser des commandes Emacs standard pour éditer le nom du fichier. Pendant que vous saisissez le nom du fichier (ou pendant n'importe quelle saisie dans le minitampon), vous pouvez annuler la commande avec C-g. >> Tapez C-x C-f, puis tapez C-g. Ceci annule le minitampon, et annule aussi la commande C-x C-f qui utilisait le minibuffer. Donc vous ne trouvez aucun fichier. Quand vous avez fini de saisir le nom de fichier, tapez RET pour le valider. Puis la commande C-x C-f se met au travail et trouve le fichier que vous avez choisi. Le minitampon disparaît quand la commande C-x C-f est terminée. Au bout d'un petit moment, le contenu du fichier apparaît à l'écran et vous pouvez l'éditer. Quand vous voulez rendre vos modifications permanentes, tapez la commande : C-x C-s Sauver le fichier Ceci copie le texte qui se trouve à l'intérieur d'Emacs dans le fichier. La première fois que vous faites cela, Emacs renomme le fichier original de manière à ce qu'il ne soit pas perdu. Le nouveau nom est créé en ajoutant "~" à la fin du nom original du fichier. Quand la sauvegarde est finie, Emacs affiche le nom du fichier sauvé. Vous devriez sauvegarder assez souvent, afin de ne pas perdre trop de travail si le système venait à planter. >> Tapez C-x C-s, sauvant ainsi votre copie du tutoriel. Cela devrait écrire "Wrote ...TUTORIAL.fr" au bas de l'écran. N.B. : Sur certains systèmes, taper C-x C-s bloque l'écran et Emacs est figé. Ceci signifie que votre système d'exploitation intercepte le C-s pour faire du "contrôle de flot". Pour débloquer l'écran, tapez C-q. Référez-vous à la section "Spontaneous Entry to Incremental Search" dans le manuel d'Emacs pour voir comment vous débarasser de ce comportement. Vous pouvez trouver un fichier existant pour le voir ou l'éditer. Vous pouvez aussi trouver un fichier qui n'existe pas encore. C'est la façon de créer un fichier sous Emacs : trouvez le fichier, qui sera vide au départ, puis commencez à insérer votre texte. Quand vous demanderez de "sauvegarder" le fichier, Emacs le créera avec le texte que vous venez de taper. A partir de là, vous pouvez considérer que vous éditez un fichier déjà existant. * TAMPONS (BUFFERS) ------------------- Si vous trouvez un deuxième fichier avec C-x C-f, le premier fichier reste dans Emacs. Vous pouvez revenir à lui en le trouvant à nouveau avec C-x C-f. De cette façon, vous pouvez avoir beaucoup de fichiers à l'intérieur d'Emacs. >> Créez un fichier appelé "foo" en tapant C-x C-f foo RET. Puis insérez du texte, éditez le, et sauvez "foo" en tapant C-x C-s. Enfin, tapez C-x C-f TUTORIAL.fr RET pour revenir au tutoriel. Emacs garde le texte de chaque fichier à l'intérieur d'un objet appelé "tampon" (buffer). Trouver un fichier crée un nouveau tampon dans Emacs. Pour voir une liste des tampons qui sont actuellement dans cet Emacs, tapez : C-x C-b Lister les tampons (Buffers) >> Essayez C-x C-b maintenant. Vous pouvez voir que chaque tampon a un nom, et il peut aussi avoir un nom de fichier pour le fichier qu'il contient. Quelques tampons ne correspondent pas à des fichiers. Par exemple, le tampon appelé "* Buffer List*" n'a pas de fichier associé. C'est le tampon qui contient la liste des tampons qui a été créée par C-x C-b. TOUS les textes que vous pouvez voir dans une fenêtre Emacs font toujours partie d'un certain tampon. >> Tapez C-x 1 pour vous débarasser de la liste des tampons. Si vous modifiez le texte d'un fichier, puis trouvez un autre fichier, cela ne sauve pas le premier fichier. Les modifications restent à l'intérieur d'Emacs, dans le tampon de ce fichier. La création ou l'édition du tampon pour le second fichier n'a aucune incidence sur le tampon du premier fichier. Ceci est très utile, mais signifie aussi que vous avez besoin d'un moyen simple de sauvegarder le tampon du premier fichier. Ce serait embêtant de devoir revenir à lui avec C-x C-f pour le sauver avec C-x C-s. Donc il y a : C-x s Sauver quelques tampons C-x s vous demande pour chaque tampon qui a été modifié sans être sauvé, si vous voulez le sauvegarder. >> Insérez une ligne de texte, puis tapez C-x s. Cela devrait vous demander si vous voulez sauver le tampon nommé TUTORIAL.fr Répondez oui à la question en tapant "y" (yes). * ETENDRE LE JEU DE COMMANDES ----------------------------- Il y a beaucoup plus de commandes Emacs qu'il n'est possible d'en assigner aux caractères CONTROL et META. Emacs contourne ce problème avec la commande X (eXtension). Elle a deux formes : C-x Extension d'un caractère. Suivie d'un caractère. M-x Extension par une commande nommée. Suivie d'un nom long. Ce sont des commandes qui sont généralement utiles mais utilisées moins souvent que les autres. Vous avez déjà vu deux commandes de ce type : les commandes de fichiers C-x C-f pour trouver (Find) et C-x C-s pour Sauver. Un autre exemple est la commande qui termine la session Emacs -- c'est la commande C-x C-c (Ne craignez pas de perdre les modifications que vous avez apportées, C-x C-c propose de sauver chaque fichier modifié avant de fermer Emacs). C-z est la commande pour quitter Emacs *temporairement* -- afin de pouvoir revenir dans la même session Emacs juste après. Sous les systèmes qui le permettent, C-z "suspend" Emacs ; en fait, cela rend la main au shell mais ne détruit pas Emacs. Dans les shells les plus courants, vous pouvez reprendre votre session Emacs avec la commande `fg' ou avec `%emacs'. Sous les systèmes qui n'implémentent pas la suspension, C-z crée un sous-shell qui tourne sous Emacs pour vous donner la possibilité de lancer d'autres programmes et de revenir à Emacs plus tard ; ça ne "quitte" pas vraiment Emacs. Dans ce cas, la commande shell `exit' est le moyen habituel de revenir à Emacs depuis le sous-shell. Le moment où utiliser C-x C-c est quand vous êtes sur le point de vous délogger. C'est aussi la commande à utiliser pour quitter un Emacs appelé depuis un gestionnaire de courrier électronique ou autres utilitaires divers, car il est possible qu'ils ne sachent pas gérer la suspension d'Emacs. Dans des circonstances ordinaires, si vous n'êtes pas sur le point de vous délogger, il est préférable de suspendre Emacs avec C-z plutôt que de quitter Emacs. Il y a beaucoup de commandes C-x. Voici une liste de celles que vous venez d'apprendre : C-x C-f Trouver un fichier (Find). C-x C-s Sauver le fichier. C-x C-b Lister les tampons (Buffers). C-x C-c Quitter Emacs. C-x u Défaire (Undo). Les commandes étendues nommées sont utilisées encore moins fréquemment, ou ne sont utilisées que dans certains modes. Un exemple est la commande replace-string, qui remplace une chaîne par une autre dans la totalité du texte. Quand vous tapez M-x, Emacs affiche M-x en bas de l'écran pour vous demander de saisir le nom de la commande ; dans ce cas précis, "replace-string". Tapez juste "repl s" et Emacs complètera le nom. Validez la commande avec RET. La commande replace-string requiert deux arguments -- la chaîne à remplacer et la chaîne par laquelle la remplacer. Vous devez valider chacun des deux arguments par RET. >> Déplacez le curseur sur la ligne vide qui est trois lignes sous celle-ci. Puis tapez M-x repl s RET changé RET altéré RET. Remarquez comme cette ligne est changée : vous avez remplacé le mot c-h-a-n-g-é par "altéré" partout où il apparaissait après la position du curseur. * SAUVEGARDE AUTOMATIQUE ------------------------ Lorsque vous avez apporté des modifications à un fichier, mais que vous ne les avez pas encore sauvegardées, elles pourraient être perdues si votre ordinateur plantait. Pour vous protéger contre cela, Emacs écrit un fichier de "sauvegarde automatique" (auto save) pour chaque fichier que vous êtes en train d'éditer. Le nom du fichier de sauvegarde automatique a un dièse ("#") au début et à la fin ; par exemple, si votre fichier s'appelle "hello.c", son fichier de sauvegarde automatique est "#hello.c#". Lorsque vous sauvez le fichier de la façon habituelle, Emacs efface son fichier de sauvegarde automatique. Si l'ordinateur plante, vous pouvez récupérer votre fichier de sauvegarde automatique en trouvant le fichier normalement (le fichier que vous éditiez, pas le fichier de sauvegarde automatique), puis en tapant M-x recover file RET (récupérer fichier). Quand Emacs demande confirmation, tapez yes RET (oui) pour continuer et récupérer vos données auto-sauvegardées. * ZONE D'AFFICHAGE ------------------ Si Emacs voit que vous tapez des commandes lentement, il vous les affiche au bas de l'écran dans la zone appelée "zone d'affichage" (echo area). La zone d'affichage contient la plus basse ligne de l'écran. * LIGNE DE MODE --------------- La ligne immédiatement au-dessus de la zone d'affichage est appelée "ligne de mode" (mode line). La ligne de mode affiche quelque chose comme : -:** TUTORIAL.fr (Fundamental)--L710--68%---------------- Cette ligne donne des informations utiles à propos de l'état d'Emacs et du texte que vous éditez. Vous savez déjà ce que le nom du fichier signifie -- c'est le fichier que vous avez trouvé. --NN%-- indique la position courante dans le texte ; cela signifie que NN pour cent du texte est au-dessus du haut de l'écran. Si le début du fichier est à l'écran, --Top-- (haut) sera affiché au lieu de --00%--. Si la fin du fichier est à l'écran, --Bot-- (bottom, bas) sera affiché Si vous éditez un texte si petit qu'il tient tout entier à l'écran, la ligne de mode affichera --All-- (tout). Les étoiles près du début signifient que vous avez apporté des modifications au texte. Juste après avoir trouvé ou sauvé un fichier, cette partie de la ligne de mode n'affiche pas d'étoile, juste des traits d'union. La partie de la ligne de mode à l'intérieur des parenthèses sert à vous dire dans quel mode d'édition vous vous trouvez. Le mode par défaut est le mode Fundamental (fondamental), que vous utilisez en ce moment. C'est un exemple de "mode majeur". Emacs a beaucoup de modes majeurs différents. Certains servent à éditer différents langages et/ou styles de texte, comme le mode Lisp, le mode Text (texte), etc... A un moment donné, un unique mode majeur est actif, et son nom se trouve toujours dans la ligne de mode, là où se trouve "Fundamental" en ce moment. Chaque mode majeur modifie le comportement de quelques commandes. Par exemple, il y a des commandes pour créer des commentaires dans un programme, et comme chaque langage de programmation a une idée différente de ce à quoi doit ressembler un commentaire, chaque mode majeur doit insérer les commentaires à sa manière. Chaque mode majeur est aussi le nom d'une commande étendue qui sert à passer dans ce mode. Par exemple, M-x fundamental-mode est une commande pour passer en mode Fundamental. Si vous voulez éditer du texte anglais ou français, comme ce fichier, vous devriez certainement utiliser le mode Text (texte). >> Tapez M-x text-mode RET. Ne vous inquiétez pas, aucune des commandes que vous avez apprises ne modifie énormément le comportement d'Emacs. Mais vous pouvez maintenant constater que M-f et M-b traitent maintenant les apostrophes comme faisant partie d'un mot. Avant, en mode Fundamental, M-f et M-b traitaient les apostrophes comme des séparateurs de mots. Les modes majeurs font des modifications discrètes comme celle-ci, la plupart des commandes font "la même chose" dans tous les modes majeurs, mais elles fonctionnent un petit peu différemment. Pour voir la documentation du mode majeur courant, tapez C-h m. >> Utilisez C-u C-v pour rapprocher cette ligne du haut de l'écran. >> Tapez C-h m pour voir comment le mode Text diffère du mode Fundamental. >> Tapez C-x 1 pour enlever la documentation de l'écran. Les modes majeurs sont appelés majeurs car il y a aussi de modes mineurs. Les modes mineurs ne sont pas des alternatives aux modes majeurs, mais ils apportent juste des modifications mineures aux modes majeurs. Chaque mode mineur peut être activé ou désactivé, indépendamment de tous les autres modes mineurs et du mode majeur. Ainsi vous pouvez ne pas utiliser de mode mineur, ou n'importe quelle combinaison de plusieurs modes mineurs. Un mode mineur qui est très utile, surtout pour éditer du texte (français, anglais ou autre) est le mode Auto Fill (remplissage automatique). Quand il est activé, Emacs casse les lignes entre les mots automatiquement quand vous tapez du texte et que la ligne devient trop longue. Vous pouvez activer ou désactiver le mode Auto Fill en tapant M-x auto-fill-mode RET. Cette commande fonctionne comme un interrupteur (en anglais, to toggle). >> Tapez M-x auto-fill-mode RET. Puis insérez une ligne de "qsdf " jusqu'à ce que vous la voyiez se diviser en deux. Vous devez saisir l'espace à la fin de "qsdf " car le mode Auto Fill coupe les lignes seulement au niveau des espaces. La marge est généralement à 70 caractères, mais vous pouvez la changer avec la commande C-x f. Vous devez fournir le nouvel emplacement de la marge sous la forme d'un argument numérique. >> Tapez C-x f avec un argument de 20 (C-u 2 0 C-x f). Puis tapez un peu de texte afin de voir qu'Emacs remplit les lignes avec 20 caractères. Remettez la marge à 70 caractères en utilisant à nouveau C-x f. Si vous modifiez un le milieu d'un paragraphe, le mode de remplissage automatique ne recalcule pas les lignes automatiquement. Pour cela, tapez M-q tout en ayant le curseur positionné à l'intérieur du paragraphe. >> Déplacez le curseur dans le paragraphe précédent et tapez M-q. * RECHERCHER ------------ Emacs peut rechercher des chaînes (ce sont des groupes de caractères ou de mots contigus) aussi bien vers l'avant (vers la fin du texte, forward) que vers l'arrière (vers le début du texte, backward). La recherche d'une chaîne est une commande de déplacement du curseur; elle déplace le curseur vers le prochain endroit où la chaîne apparaît. La commande de recherche d'Emacs est différente des commandes de recherche de la plupart des autres éditeurs de texte, car elle est "incrémentale". Cela signifie que la recherche prend place pendant que vous tapez la chaîne à chercher. La commande pour commencer une recherche est C-s pour une recherche vers l'avant, et C-r (reverse) pour une recherche vers le début du texte. MAIS ATTENDEZ ! Ne les essayez pas tout de suite. Quand vous taperez C-s, vous remarquerez que le message "I-search" apparaît dans la zone d'affichage. Cela vous prévient qu'Emacs est en mode de recherche incrémentale et qu'il attend que vous tapiez la chaîne que vous voulez chercher. RET met fin à la recherche. >> Maintenant, tapez C-s pour commencer une recherche. LENTEMENT, une lettre à la fois, tapez le mot 'curseur', en faisant une pause après chaque lettre pour voir ce qui advient du curseur. Vous venez de chercher "curseur" une fois. >> Tapez C-s de nouveau, pour chercher la prochaine occurence de "curseur". >> Maintenant, tapez quatre fois et voyez comment le curseur se déplace. >> Tapez RET pour terminer la recherche. Avez-vous vu ce qui s'est passé ? Emacs, dans une recherche incrémentale, essaie d'aller aux occurences de la chaîne que vous avez tapée jusqu'à un instant donné. Pour aller à la prochaine occurence, tapez C-s à nouveau. Si une telle occurence n'existe pas, Emacs émet un son et vous prévient que la recherche échoue (failing). C-g termine aussi la recherche. N.B. : Sur certains systèmes, taper C-s bloque l'écran et Emacs est figé. Ceci signifie que votre système d'exploitation intercepte le C-s pour faire du "contrôle de flot". Pour débloquer l'écran, tapez C-q. Référez-vous à la section "Spontaneous Entry to Incremental Search" dans le manuel d'Emacs pour voir comment vous débarasser de ce comportement. Si vous êtes dans une recherche incrémentale et que vous tapez , vous remarquerez que le dernier caractère de la chaîne à chercher est effacé et la recherche revient là où elle était avant que vous ne tapiez ce caractère. Par exemple, supposons que vous avez tapé "c", pour chercher la première occurence de "c". Maintenant, si vous tapez "u", le curseur va aller sur la première occurence de "cu". Si maintenant vous tapez , cela enlèvera le "u" de la chaîne de recherche et replacera le curseur à la première occurence ce "c". Si vous êtes en train de faire une recherche et que vous tapez un caractère de contrôle avec CONTROL ou META (il y a quelques exceptions -- les caractères qui ont un rôle particulier lors d'une recherche, comme C-s et C-r), la recherche se termine. C-s commence à chercher une occurence de la chaîne APRES la position courante du curseur. Si vous voulez chercher quelquechose qui se trouve avant dans le texte, tapez C-r au lieu de C-s. Tout ce que nous avons dit sur C-s est valable pour C-r si ce n'est que la recherche est inversée. * FENETRES MULTIPLES -------------------- Un des aspects intéressants d'Emacs est que vous pouvez afficher plus d'une fenêtre sur l'écran en même temps. >> Déplacez le curseur sur cette ligne et tapez C-u 0 C-l. >> Maintenant tapez C-x 2, ce qui va séparer l'écran en deux fenêtres. Les deux fenêtres affichent ce tutoriel. Le curseur reste dans la fenêtre du haut. >> Tapez C-M-v pour faire défiler la fenêtre du bas. (Si vous n'avez pas de touche META, tapez ESC C-v) >> Tapez C-x o pour déplacer le curseur dans l'autre (Other) fenêtre >> Utilisez C-v et M-v dans la fenêtre du bas pour la faire défiler. Continuez à lire ces instructions dans la fenêtre du haut. >> Tapez C-x o de nouveau pour remettre le curseur dans la fenêtre du haut. Le curseur se retrouve à l'endroit où il était avant que vous ne tapiez C-x o pour la première fois. Vous pouvez continuer à utiliser C-x o pour vous déplacer de fenêtre en fenêtre. Chaque fenêtre possède sa propre position du curseur, mais une seule l'affiche effectivement. Toutes les commandes d'édition habituelles s'appliquent à la fenêtre dans laquelle se trouve le curseur. On l'appelle la fenêtre "sélectionnée". La commande C-M-v est très utile quand vous éditez dans une fenêtre et utilisez une autre fenêtre juste comme une référence. Vous pouvez toujours garder le curseur dans la fenêtre dans laquelle vous éditez tout en avançant dans l'autre fenêtre séquentiellement avec C-M-v. C-M-v est un exemple de caractère CONTROL-META. Si vous avez une vraie touche META, vous pouvez taper C-M-v en maintenant les deux touches CONTROL et META appuyées tout en tapant v. L'ordre dans lequel vous appuyez sur les touches CONTROL et META n'a pas d'importance puisque ces touches servent à modifier les caractères que vous tapez. Si vous n'avez pas de touche META et que vous utilisez ESC à la place, l'ordre a une importance : vous devez taper ESC suivi de C-v; C-ESC v ne marchera pas. En effet, ESC est un caractère, pas une touche de modification. >> Tapez C-x 1 (dans la fenêtre du haut) pour vous débarasser de la fenêtre du bas. (Si vous aviez tapé C-x 1 dans la fenêtre du bas, cela aurait supprimé celle du haut. Pensez à cette commande comme "Ne garder qu'une fenêtre -- celle dans laquelle je suis") Vous n'êtes pas obligé d'afficher le même tampon dans les deux fenêtres. Si vous utilisez C-x C-f pour trouver un fichier dans une fenêtre, l'autre fenêtre ne change pas. Vous pouvez lire un fichier différent dans chaque fenêtre. Voici une autre façon d'utiliser deux fenêtres pour afficher deux choses différentes : >> Tapez C-x 4 C-f suivi du nom d'un fichier. Tapez RET. Le fichier spécifié apparaît dans la fenêtre du bas, le curseur aussi. >> Tapez C-x o pour revenir à la fenêtre du haut, et C-x 1 pour supprimer la fenêtre du bas. * NIVEAUX D'EDITION RECURSIFS ----------------------------- Parfois, vous allez vous retrouver dans ce qui s'appelle un "niveau d'édition récursif". Ceci est indiqué par des crochets dans la ligne de mode, qui encadrent les parenthèses autour du nom du mode majeur. Par exemple, vous verriez [(Fundamental)] au lieu de (Fundamental). Pour sortir du niveau d'édition récursif, tapez ESC ESC ESC. C'est une commande générale d'échappement. Vous pouvez aussi l'utiliser pour éliminer les fenêtres en excès, et pour sortir du minibuffer. >> Tapez M-x pour aller dans le minibuffer; puis tapez ESC ESC ESC pour en sortir. Vous ne pouvez pas utiliser C-g pour sortir d'un niveau d'édition récursif car C-g est utilisé pour annuler les commandes et les arguments A L'INTERIEUR d'un niveau d'édition récursif. * TROUVER PLUS D'AIDE --------------------- Dans ce tutoriel, nous avons essayé de vous fournir juste assez d'informations pour vous permettre de prendre Emacs en main. Il y a tellement de choses dans Emacs qu'il serait impossible de toutes les décrire ici. Cependant, il est possible que vous soyez désireux d'en apprendre plus sur Emacs tant ses fonctionnalités sont multiples et utiles. Emacs fournit des commandes pour lire la documentation associée à chaque commande. Ces commandes d'aide commencent toutes par le caractère C-h, qui s'appelle le caractère d'aide (Help). Pour utiliser les fonctions d'aide, tapez C-h, puis un caractère spécifiant le type d'aide que vous désirez. Si vous êtes vraiment perdu, tapez C-h ? et Emacs vous dira les types d'aide dont il dispose. Si vous avez tapé C-h et décidez que vous n'avez finalement pas besoin d'aide, tapez C-g pour l'annuler. (Certains sites changent la signification du caractère C-h. Ils ne devraient vraiment pas imposer cela à tous leurs utilisateurs, vous avez donc une bonne raison de vous plaindre à votre administrateur système. En attendant, si C-h n'affiche pas un message d'aide en bas de l'écran, essayez la touche F1 ou M-x help RET) La commande d'aide la plus simple est C-h c. Tapez C-h, le caractère c, et la séquence de caractères d'une commande; Emacs affichera alors une description très courte de la commande en question. >> Tapez C-h c C-p. Le message devrait ressembler à : C-p runs the command previous-line (qui signifie : C-p lance la commande previous-line) Cela vous donne le "nom de la fonction". Les noms des fonctions sont utilisés principalement pour personnaliser et étendre Emacs. Mais comme les noms de fonction sont choisis de manière à indiquer ce que la fonction fait, ils peuvent aussi servir de très courte documentation -- suffisante pour vous rappeler les commandes que vous avez déjà apprises. Les commandes utilisant plusieurs caractères comme C-x C-s ou v sont aussi autorisées après C-h c. Pour obtenir plus d'informations sur une commande, utilisez C-h k au lieu de C-h c. >> Tapez C-h k C-p. Cela affiche la documentation de la fonction, ainsi que son nom, dans une fenêtre Emacs. Quand vous avez fini de la lire, tapez C-x 1 pour vous débarasser du texte d'aide. Vous n'êtes pas obligé de le faire immédiatement, vous pouvez éditer votre texte en vous référant à l'aide, puis taper C-x 1. Voici quelques autres options utiles de C-h : C-h f Décrit une fonction. Vous devez saisir le nom de la fonction. >> Essayez de taper C-h f previous-line RET. Cela affiche toutes les informations dont Emacs dispose à propos de la fonction qui implémente la commande C-p. C-h a A propos de... Tapez un mot-clé et Emacs vous affichera une liste des commandes qui contiennent ce mot-clé. Ces commandes peuvent toutes être invoquées avec M-x. Pour certaines commandes, vous verrez à côté une séquence de caractères qui exécute la même commande. >> Tapez C-h a file RET. Cela affiche une liste de toutes les commandes M-x avec "file" dans leur nom. Vous verrez des caractères de commandes comme C-x C-f affichés en regard de la commande correspondante, find-file par exemple. >> Tapez C-M-v pour faire défiler la fenêtre d'aide. Faites cela plusieurs fois. >> Tapez C-x 1 pour supprimer la fenêtre d'aide. * CONCLUSION ------------ Rappelez-vous, pour quitter Emacs, utilisez C-x C-c. Pour retourner dans un shell (interprète de commandes) temporairement, afin de pouvoir revenir dans cet Emacs après, utilisez C-z. Ce tutoriel est prévu pour être compréhensible par tous les nouveaux utilisateurs, donc si vous avez trouvé que quelquechose manque de clarté, ne vous morfondez pas dans votre coin - plaignez-vous ! CONDITIONS ---------- Ce tutoriel descend d'une longue lignée de tutoriels Emacs qui a commencé avec celui écrit par Stuart Cracraft pour l'Emacs original. [ je laisse la version anglaise originale de ce charabia juridique. En gros, vous avez le droit de copier librement ce tutoriel tant que vous autorisez la personne à qui vous l'avez copié à faire de même. Si vous voulez le modifier, lisez la notice ci-dessous en anglais ] Cette version du tutoriel, comme GNU Emacs, est copyrightée. Des copies peuvent en être distribuées sous certaines conditions : This version of the tutorial, like GNU Emacs, is copyrighted, and comes with permission to distribute copies on certain conditions: Copyright (c) 1985, 1996 Free Software Foundation Permission is granted to anyone to make or distribute verbatim copies of this document as received, in any medium, provided that the copyright notice and permission notice are preserved, and that the distributor grants the recipient permission for further redistribution as permitted by this notice. Permission is granted to distribute modified versions of this document, or of portions of it, under the above conditions, provided also that they carry prominent notices stating who last altered them. Les conditions pour copier Emacs lui-même sont plus complexes, mais dans le même esprit. Veuillez lire le fichier COPYING et ensuite donnez des copies d'Emacs à vos amis. Aidez à éradiquer l'obstructionnisme logiciel (la "propriété" logicielle) en utilisant, écrivant et partageant le logiciel libre ! Traduction française par Aymeric `stack' Vincent