tuteurs.ens.fr/unix/editeurs/emacs.tml
2003-04-29 14:45:21 +00:00

581 lines
26 KiB
XML

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE html
PUBLIC "-//ENS/Tuteurs//DTD TML 1//EN"
"tuteurs://DTD/tml.dtd">
<html>
<head>
<title>Tutorial emacs</title>
</head>
<body>
<h1>GNU Emacs&nbsp;: tutorial</h1>
<p>Ce tutorial est destiné aux gens souhaitant se familiariser avec
GNU Emacs. Si vous avez davantage de questions, vous pouvez les poser
sur forum dans le conti
<code>ens.forum.informatique.editeurs.emacs</code>. Pour savoir
comment poster sur forum et le lire, lisez la <a
href="&url.tuteurs;internet/forum/">documentation à ce sujet</a>. Un
<a href="emacs_memo.html">aide-mémoire des principales commandes</a>
d'emacs est également disponible.</p>
<h2>Généralités</h2>
<h3>Qu'est-ce qu'Emacs&nbsp;?</h3>
<p>Emacs est un éditeur de texte très puissant, qui est également
capable de beaucoup d'autres choses (invoquer une commande shell,
envoyer ou recevoir du courrier électronique, lire les news, se
transformer en psy, et même faire le café selon certaines mauvaises
langues). En contrepartie, Emacs est assez lourd (beaucoup plus en
tout cas que l'éditeur standard d'UNIX, vi) et souvent ésotérique.</p>
<p>Emacs date de 1975. Il a été écrit par Richard M. Stallman qui
était alors au MIT. Emacs a été conçu à l'origine comme un ensemble de
macros pour un TECO, un vieil éditeur de texte. Emacs veut donc dire
&#171;&nbsp;Editing MACroS&nbsp;&#187;. Par la suite, plusieurs
versions d'Emacs ont été développées, mais la version la plus répandue
reste GNU Emacs (alias FSF Emacs), celle de M.&nbsp;Stallman, qui est
la réécriture du Emacs originel.</p>
<div class="attention">Ce tutorial est consacré à GNU Emacs
(accessible en lançant simplement &#171;&nbsp;emacs&nbsp;&#187; à
l'ENS) dans sa fonction d'éditeur de textes. Il ne faut pas confondre
GNU Emacs et XEmacs. Ce ne sont pas deux versions du même programme
mais, malgré les ressemblances, deux programmes différents.</div>
<p>Emacs est principalement utilisé sous les systèmes de type UNIX,
mais il existe également pour MS-DOS ou Windows.</p>
<h3>Format des commandes emacs</h3>
<p>Les commandes d'emacs utilisent les touches <code>Control</code>
(souvent abrégé en <code>Ctrl</code> sur la touche) ou
<code>Meta</code> de votre clavier. Si vous n'avez pas de touche
<code>Meta</code> ou que vous ne savez pas où elle est, utilisez la
touche <code>Escape</code> (ou <code>Échap</code>). Comme les
commandes sont assez complexes, on utilise des abréviations. Ainsi,
<code>C-c</code> signifie&nbsp;: appuyez sur <code>Ctrl</code> et, en
gardant la touche enfoncée, appuyez sur
<code>c</code>. <code>M-g</code> signifie&nbsp;: appuyez sur la touche
<code>Meta</code> et, en gardant la touche enfoncée, sur
<code>g</code>.</p>
<div class="attention">Si vous utilisez <code>ESC</code> à la place de
la touche <code>Meta</code>, il faut appuyer sur
<code>ESC</code> <em>puis</em> sur l'autre touche.</div>
<p>En particulier, par exemple, <code>C-x i</code> (insertion d'un
fichier) ne fait <em>pas</em> la même chose que <code>C-x C-i</code>
(qui décale une région sélectionnée d'un caractère vers la
droite)... Taper des commandes complexes d'emacs requiert parfois un
peu de doigté. Si vous vous êtes trompé de commande, vous pouvez
annuler avec <code>C-_</code> (cf. ci-dessous la gestion des
erreurs).</p>
<p>Dernière précision&nbsp;: toutes les commandes emacs sont
accessibles en utilisant leur nom complet, qu'on peut appeler en
tapant d'abord <code>M-x</code>. Certaines d'entre elles sont
disponibles par le biais de raccourcis comme ceux cités plus
haut&nbsp;: <code>M-g</code> par exemple a pour nom complet <code>M-x
goto-line</code>. Mais beaucoup de commandes sont accessibles
seulement par un nom complet. En outre, vous pouvez parfois retrouver
une commande en passant par son nom complet (on retient mieux que
<code>M-c</code> met en majuscule la première lettre d'un mot quand on
se souvient que le c est pour <em>capitalize-word</em>).</p>
<h3>Obtenir de l'aide</h3>
<p>Emacs a la particularité d'avoir une aide en ligne importante. Pour
y accéder, lancez emacs tout seul (cf. <em lang="la">infra</em>) ou
tapez <code>C-h</code> ou encore <code>M-x help</code>.</p>
<div class="attention">Pour les utilisateurs de la config conscrits
2002, attention&nbsp;: la commande d'aide n'est plus <code>C-h</code>
mais <code>M-?</code>. Le remplacement est à faire pour toutes les
commandes d'aide qui suivent.</div>
<p><code>C-h k</code> vous permet d'obtenir des renseignements
succints sur une commande donnée. Exemple&nbsp;: vous voulez savoir ce
que fait la commande <code>M-g</code>. Tapez <code>C-h k</code>. Emacs
vous demande de décrire la commande (<em lang="en">key</em> en
anglais) que vous souhaitez connaître. Tapez alors
<code>M-g</code>. Emacs ouvre en 2 la fenêtre et vous dit qu'il s'agit
de la commande <code>goto-line</code>, qu'on l'emploie comme
ceci&nbsp;: <code>M-g &lt;nombre n&gt;</code> et qu'il s'agit d'aller
à la ligne n.</p>
<p><code>C-h t</code> lance le tutorial officiel d'emacs (en
anglais).</p>
<p><code>C-h i</code> vous donne accès aux répertoires
&#171;&nbsp;info&nbsp;&#187; qui contiennent de l'aide sur différents
programmes, parmi lesquels emacs. Cette commande vous envoie
directement sur la rubrique emacs. On navigue entre les fichiersgrâce
à des liens hypertexte. On passe de lien en lien avec <code>TAB</code>
et <code>M-TAB</code>, on suit un lien avec <code>Enter</code> et on
remonte vers le répertoire père avec <code>u</code>;</p>
<p>Pour quitter l'aide, on utilise les commandes de manipulation des
buffers (cf. ci-dessous &#171;&nbsp;Manipuler plusieurs buffers en
même temps&nbsp;&#187;).</p>
<p>Vous pouvez obtenir la liste des commandes d'emacs en tapant
<code>M-x describe-bindings</code>.</p>
<h2>Manipuler des fichiers</h2>
<h3>Lancer emacs</h3>
<p>Emacs se lance comme n'importe quel programme sous UNIX. Si vous
tapez&nbsp;:</p>
<pre><span class="prompt">clipper ~ $</span> emacs</pre>
<p>Emacs se lancera dans une fenêtre. Pour lancer emacs dans votre
terminal, utilisez l'option <code>-nw</code>. Cette option est
particulièrement pratique lorsque vous souhaitez travailler à distance
sur un fichier qui est sur votre compte clipper, par exemple, mais
elle vous privera de certaines possibilités (les menus déroulants et
les boutons, par exemple). Si vous souhaitez travailler sur un fichier
précis, tapez emacs puis le nom du fichier&nbsp;:</p>
<pre><span class="prompt">clipper ~ $</span> emacs maitrise.tex</pre>
<p>Si vous observez la fenêtre d'emacs, vous pourrez voir un certain
nombre d'informations qui dépendent de la version d'emacs qui est
installée. À la date où cette documentation est écrite, c'est la
version 21.2.1 qui est installée par défaut sur clipper. Pour savoir
quelle est votre version, tapez&nbsp;</p>
<pre><span class="prompt">clipper ~ $</span> emacs --version</pre>
<p>Les renseignements donnés ici valent pour cette version. Il est
possible que certaines choses ne fonctionnent pas avec des versions
plus vieilles.</p>
<div class="attention">Notez aussi que certaines commandes ne sont
valables que dans le cadre de la config conscrit. Ce tutorial signale
les différences entre config conscrit et config standard.</div>
<p>À l'heure actuelle, emacs ressemble à ceci&nbsp;:</p>
<div class="illustration"><img src="emacs.png" alt="[Image de la
fenêtre d'emacs]"/></div>
<p>Tout d'abord, vous voyez en haut de la fenêtre des menus déroulants
(File, Edit, Options, Buffers, Tools, Help), et en-dessous quelques
icônes. Il est commode au départ d'utiliser menus déroulants et
icônes, mais il ne faut pas en abuser. C'est en apprenant les
raccourcis claviers que vous exploiterez au maximum les possibilités
d'emacs et que vous serez plus efficaces. Remarquez aussi en bas de la
fenêtre ce qu'on appelle le mini-buffer, qui sert à emacs pour
communiquer avec vous. Lorsque vous tapez une commande, elle s'affiche
dans le mini-buffer.</p>
<p>Entre les deux se trouve, en gris sur l'image (avec &#171;&nbsp;GNU
Emacs&nbsp;&#187;), la &#171;&nbsp;ligne de mode&nbsp;&#187; (<em
lang="en">mode line</em> en anglais). Elle donne de précieuses
indications telles que le nom du fichier en cours d'édition, le mode
majeur et le(s) mode(s) mineur(s) dans lequel vous vous trouvez
(cf. ci-dessous sur les modes d'emacs), éventuellement le numéro de la
ligne où se trouve votre curseur, etc.</p>
<h3>Les modes d'emacs</h3>
<p>Emacs peut s'adapter au type de fichier que vous éditez. Ce sont
ses &#171;&nbsp;modes&nbsp;&#187;. Le mode par défaut est appelé
&#171;&nbsp;fondamental&nbsp;&#187;, il n'a pas de comportement
particulier. Il existe de nombreux modes, mais les plus important sont
le mode texte, le mode C ou encore le mode LaTeX. Quand vous éditez un
fichier, emacs choisit son mode en fonction de l'extension du fichier
en question. Par exemple, si vous éditez un fichier en
<code>.tex</code>, il se mettra automatiquement en mode LaTeX. S'il ne
peut pas déterminer quel type de fichier vous allez éditer, il se met
en mode fondamental.</p>
<p>Les modes C, texte ou LaTeX sont des modes majeurs. Il existe aussi
des modes mineurs qui peuvent s'activer ou se désactiver à l'intérieur
d'un mode majeur. Par exemple, le mode &#171;&nbsp;fill&nbsp;&#187;
signifie qu'emacs va aller à la ligne dès que c'est nécessaire. Le
mode &#171;&nbsp;overwrite&nbsp;&#187; signifie qu'il va écrire
par-dessus les caractères déjà tapés au lieu de les insérer. Le mode
majeur et le(s) mode(s) mineur(s) dans lesquels vous vous trouvez sont
indiqués dans la ligne de mode.</p>
<h3>Fichiers et buffers</h3>
<p>Tout d'abord, un rappel d'ordre général. Les éditeurs de texte
n'éditent pas directement un fichier. Ils mettent le contenu de votre
fichier dans un <em lang="en">buffer</em> (qu'on traduit parfois par
&#171;&nbsp;tampon&nbsp;&#187;) temporaire, qu'ils éditent. Quand vous
sauvegardez, l'éditeur retransfère les contenus du buffer dans votre
fichier. Si vous quittez l'éditeur sans sauvegarder, le buffer est
détruit et votre fichier demeure donc intact. C'est pourquoi, quand on
lance emacs sans argument, il ouvre un buffer appelé
<code>*scratch*</code>&nbsp;: c'est un buffer sans fichier
associé. <code>*Help*</code> est un autre exemple de buffer non
associé&nbsp;: c'est l'aide en ligne.</p>
<p>Que vous ayez lancé emacs tout court ou en lui demandant d'ouvrir
un fichier, vous pouvez insérer tout de suite du texte en tapant
directement ce que vous voulez.</p>
<h3>Ouvrir un fichier</h3>
<p>Vous pouvez ouvrir un fichier, comme nous l'avons vu, simplement en
le donnant comme argument à emacs, ou encore le faire une fois emacs
lancé. Pour cela, faites <code>C-x C-f</code> (nom complet&nbsp;:
<code>M-x find file</code>). Emacs vous demande alors quel fichier
vous voulez ouvrir. Il suffit de compléter le nom du fichier puis
d'appuyer sur <code>Entrée</code>, puis emacs crée un nouveau buffer
qui porte le nom du fichier que vous voulez éditer. À noter que si
vous jonglez entre plusieurs buffers, appuyer sur la flèche vers le
haut après un <code>C-x C-f</code> vous donne accès à l'historique de
tous les fichiers déjà ouverts par ce moyen.</p>
<div class="encadre">Si vous voulez ouvrir un fichier qui existe déjà,
il vous suffit de taper les premières lettres de son nom puis
d'appuyer sur <code>TAB</code>. Emacs essaiera de compléter le nom de
fichier pour vous. C'est ce qu'on appelle la complétion.</div>
<h3>Manipuler plusieurs buffers en même temps</h3>
<p>Avec un seul et même emacs, vous pouvez manipuler plusieurs buffers
en même temps en utilisant le multi-fenêtrage, c'est-à-dire la
capacité d'emacs à couper sa fenêtre en deux (ou plus) pour vous
permettre d'avoir plusieurs buffers en regard. Pour ouvrir un deuxième
buffer, tapez <code>C-x 2</code> (la fenêtre se coupe en 2
horizontalement dans ce cas, si vous préférez un découpage vertical,
utilisez <code>C-x 3</code>). Pour passer d'un buffer à l'autre,
faites <code>C-x o</code>. Pour faire disparaître le buffer où se
trouve votre curseur, tapez <code>C-x 0</code>. Pour faire disparaître
l'autre c'est <code>C-x 1</code>.</p>
<p>Le multi-fenêtrage est une fonctionnalité très utile d'emacs. Elle
vous permet de comparer facilement plusieurs fichiers, de faire
facilement des copier-coller depuis plusieurs fichiers vers un seul,
etc.</p>
<h3>Insérer un fichier</h3>
<p>Déplacez votre curseur jusqu'à l'endroit où vous souhaitez insérer
un autre fichier. Puis tapez <code>C-x i</code> (<code>M-x
insert-file</code>). Emacs suit la même procédure qu'avec <code>C-x
C-f</code>&nbsp;: il vous demande quel fichier insérer.</p>
<h3>Sauvegarder un fichier</h3>
<p>Si vous tapez <code>C-x C-s</code> (<code>M-x save-buffer</code>),
emacs sauvegarde le buffer dans le fichier associé et indique à
l'écran (dans le mini-buffer) &#171;&nbsp;<em lang="en">Wrote
/users/00/litt/toto/maitrise.tex</em>&nbsp;&#187;. Si vous voulez
sauvegarder vos modifications <strong>dans un autre fichier</strong>,
il faut utiliser la commande <code>C-x C-w</code>. Le nom complet,
<code>M-x write-file</code> est transparent&nbsp;: emacs écrit le
contenu du buffer dans un fichier qui n'est pas nécessairement celui
associé au buffer. <code>C-x C-w</code> peut être pratique pour éditer
un fichier que vous n'avez pas le droit de modifier.</p>
<h3>Quitter emacs</h3>
<p>Tapez <code>C-x C-c</code> pour quitter emacs. Si vous avez édité
un ou des buffers que vous n'avez pas sauvegardé(s), emacs vous
demandera s'il doit le faire avant de se fermer.</p>
<p>Si vous désirez seulement quitter emacs temporairement (pour lire
votre mail ou faire une pause dans l'édition de votre fichier), la
meilleure solution est d'utiliser <code>C-z</code> qui
<em>suspend</em> emacs sans le fermer. Dès que vous voudrez reprendre
emacs, tapez <code>fg</code> dans le shell et vous retrouverez votre
fenêtre avec le même buffer et le curseur exactement où vous l'aviez
laissé. Si vous êtes en mode graphique, <code>C-z</code> minimise la
fenêtre d'emacs.</p>
<h2>Manipuler du texte</h2>
<h3>Déplacer le curseur</h3>
<p>Les raccourcis claviers vous permettent de vous déplacer très
facilement dans votre fichier. Ils peuvent remplacer les touches
&#171;&nbsp;flèches&nbsp;&#187;, certes, mais plus encore vous
permettre d'être beaucoup plus rapide que si vous n'utilisiez que les
touches de déplacement du clavier. Leur apprentissage est un peu
laborieux mais ils vous feront gagner beaucoup de temps.</p>
<table class="tableau">
<tr>
<th>Bouger d'un(e)...</th>
<th>Vers l'arrière</th>
<th>Vers l'avant</th>
</tr><tr>
<td>caractère</td><td><code>C-b</code></td><td><code>C-f</code></td>
</tr><tr>
<td>mot</td><td><code>M-b</code></td><td><code>M-f</code></td>
</tr><tr>
<td>ligne</td><td><code>C-p</code></td><td><code>C-n</code></td>
</tr><tr>
<td>début/fin de ligne</td><td><code>C-a</code></td><td><code>C-e</code></td>
</tr><tr>
<td>phrase</td><td><code>M-a</code></td><td><code>M-e</code></td>
</tr><tr>
<td>paragraphe</td><td><code>M-{</code></td><td><code>M-}</code></td>
</tr><tr>
<td>buffer</td><td><code>M-&lt;</code></td><td><code>M-&gt;</code></td>
</tr>
</table>
<h3>Effacer</h3>
<p>Pour effacer quelques caractères, vous pouvez utiliser les touches
<code>delete</code> ou <code>backspace</code> de votre
clavier. Évidemment, vous pouvez aussi utiliser des commandes pour
faire ce travail. <code>C-d</code> efface le caractère sur lequel se
trouve le curseur. <code>M-d</code> efface la suite d'un mot à partir
de l'endroit où se trouve le curseur (pour que le mot entier soit
effacé, il faut placer le curseur au début du mot).</p>
<p>Au niveau d'une ligne, <code>C-k</code> efface le reste de la ligne
à partir de la position du curseur. Pour effacer la ligne entière, il
faut placer le curseur au début de la ligne.</p>
<table class="tableau">
<tr><th>Commande</th><th>Nom complet</th><th>Action</th></tr>
<tr><td>C-d</td><td>M-x delete-char</td><td>Efface le caractère
sur lequel est le curseur.</td></tr>
<tr><td>M-d</td><td>M-x kill-word</td><td>Efface le mot à partir du
curseur.</td></tr>
<tr><td>M-backspace</td><td>M-x backward-kill-word</td><td>Efface le
mot précédent.</td></tr>
<tr><td>C-k</td><td>M-x kill-line</td><td>Efface la ligne à partir du
curseur</td></tr>
<tr><td>_</td><td>M-x kill-paragraph</td><td>Efface le paragraphe à
partir du curseur.</td></tr>
</table>
<h3>Sélectionner</h3>
<p>On peut faire une sélection (pour couper ou copier, par exemple)
avec la souris dans emacs. Si vous ne pouvez/voulez pas sélectionner à
la souris (par exemple vous utilisez <code>emacs -nw</code>), vous
pouvez utilisez le système de marquage d'emacs. On place une
&#171;&nbsp;marque&nbsp;&#187; au début du texte à sélectionner avec
<code>C-espace</code>. Ensuite, déplacez le curseur jusqu'à la fin du
texte à sélectionner (on appelle l'endroit où est le curseur le
&#171;&nbsp;point&nbsp;&#187;). Votre sélection est faite (même si
vous ne la voyez pas).</p>
<table class="tableau">
<tr><th>Commande</th><th>Nom complet</th><th>Action</th></tr>
<tr><td>C-espace</td><td>M-x set-mark-command</td><td>Poser une
marque</td></tr>
<tr><td>C-x C-x</td><td>M-x
exchange-point-and-mark</td><td>Échanger la marque et le point</td></tr>
<tr><td>M-h</td><td>M-x mark-paragraph</td><td>Sélectionner tout le
paragraphe</td></tr>
</table>
<h3>Copier et coller</h3>
<p>Quand emacs efface quelque chose (mot, ligne, paragraphe, mais pas
un caractère isolé), il le place en mémoire (dans ce qu'en anglais on
appelle le <em lang="en">kill ring</em>). Vous pouvez ensuite
&#171;&nbsp;coller&nbsp;&#187; tout ce qui a été effacé (que ce soit
une seule grosse suppression ou plusieurs suppressions d'affilée) avec
<code>C-y</code>. Pour couper à proprement parler, il faut utiliser
<code>C-w</code> (ou <code>M-x kill-region</code>).</p>
<p>À noter que <code>M-y</code> permet de naviguer dans l'historique
du <em lang="en">kill ring</em>. <code>C-y</code> colle la dernière
chose à avoir été copiée ou coupée, mais si vous voulez coller quelque
chose coupé ou collé précédemment, utilisez <code>M-y</code>
après.</p>
<p>Pour copier quelque chose (pour le coller ensuite), sélectionner ce
qu'il faut copier puis faites <code>M-w</code>.</p>
<h3>Rechercher et remplacer</h3>
<p>Pour effectuer une recherche simple vers la fin du fichier, c'est
<code>C-s</code> suivi du mot ou de l'expression recherchée. Pour une
recherche vers le début du fichier, c'est <code>C-r</code>. Avec
emacs, il est également possible de faire des recherches en utilisant
des expression régulières (avec des métacaractères comme ., *, ?, $,
etc.)&nbsp;: taper <code>C-M-s</code>. Pour aller à l'occurence
suivante du mot ou de l'expression correspondant à votre recherche
(simple ou avec une expression régulière), tapez <code>C-s</code> ou
<code>C-r</code>. Pour annuler votre recherche, tapez
<code>C-g</code>).
</p>
<div class="attention">La syntaxe des expressions régulières d'emacs
est un peu particulière.</div>
<p>De même, pour les remplacements, emacs vous offre deux
possibilités. Pour remplacer simplement un mot ou une expression,
tapez <code>M-%</code>. Pour faire un remplacement à partir d'une
expression régulière, c'est <code>M-x
query-replace-regexp</code>. Dans les deux cas, une fois qu'emacs aura
trouvé la première occurrence correspondant à votre demande, il vous
demandera s'il doit effectuer le remplacement.</p>
<p>Répondez <code>y</code> pour remplacer cette occurrence,
<code>n</code> pour ne pas le faire. Dans ces deux cas, après avoir
effectué ou pas le remplacement, emacs passera à l'occurrence
suivante. Pour faire de manière automatique le remplacement sur la
suite du fichier, répondez <code>!</code>. Pour abandonner le
remplacement demandé, appuyez sur <code>ESC</code>.</p>
<h3>Formater</h3>
<p>Quand vous êtes en mode <code>Fill</code> (regardez votre ligne de
mode), emacs coupe naturellement les lignes de la meilleure manière
possible pour lui. Mais au fur et à mesure de l'édition de votre
fichier, vous pouvez vous retrouver avec des lignes très courtes et
d'autres trop longues. Une commande très utile est <code>M-q</code>
qui réarrange le texte d'un paragraphe de manière harmonieuse.</p>
<p>Vous pouvez également changer la longueur des lignes. Par exemple,
pour fixer à 20 caractères la longueur des lignes, tapez <code>C-u 20
C-x f</code>.</p>
<h3>Changements de casse</h3>
<p>Emacs possède des commandes spéciales pour les problèmes de casse
(vous tapez deux majuscules de suite au lieu de la majuscule initiale
suivie de minuscules, etc.). Pour mettre en majuscules la première
lettre d'un mot, tapez <code>M-c</code> (c comme <em
lang="en">capitalize</em>. Pour mettre un mot entier en majuscules,
c'est <code>M-u</code> (u pour <em lang="en">uppercase</em>). Pour le
mettre en minuscules, c'est <code>M-l</code> (l pour <em
lang="en">lowercase</em>). Emacs effectue ces transformations à partir
de l'endroit où se trouve le curseur, pour changer le mot entier, il
faut donc se placer sur sa première lettre.</p>
<h3>Permutations</h3>
<p>Comme beaucoup de gens, vous faites des fautes de frappe qui sont
souvent dues à un manque de coordination entre les doigts. Vous tapez
donc &#171;&nbsp;poru&nbsp;&#187; au lieu de
&#171;&nbsp;pour&nbsp;&#187;. Emacs possède des commandes qui peuvent
résoudre votre problème en vous permettant de permuter des lettres,
des mots, des lignes, des phrases, et même des paragraphes. Ainsi,
alors que votre curseur est sur le u de &#171;&nbsp;poru&nbsp;&#187;,
tapez <code>C-t</code> pour intervertir r et u.</p>
<table class="tableau">
<tr><th>Commande</th><th>Nom complet</th><th>Action</th></tr>
<tr><td><code>C-t</code></td><td><code>M-x
transpose-chars</code></td><td>Intervertit deux lettres</td></tr>
<tr><td><code>M-t</code></td><td><code>M-x
transpose-words</code></td><td>Intervertit deux mots</td></tr>
<tr><td><code>C-x C-t</code></td><td><code>M-x
transpose-lines</code></td><td>Intervertit deux lignes</td></tr>
<tr><td><code>_</code></td><td><code>M-x
transpose-sentences</code></td><td>Intervertit deux phrases</td></tr>
<tr><td><code>_</code></td><td><code>M-x
transpose-paragraphs</code></td><td>Intervertit deux paragraphes</td></tr>
</table>
<h2>Divers</h2>
<h3>Gestion des erreurs</h3>
<p>Si vous vous êtes trompé et que vous souhaitez revenir à l'action
précédente, tapez <code>C-x u</code> (ou <code>C-_</code>, plus facile
à taper). Vous pouvez revenir en arrière ainsi jusqu'à l'ouverture de
votre session emacs. Attention, <code>C-_</code> ne s'applique qu'à
une modification du buffer. Ainsi, on ne peut pas annuler le
déplacement du curseur ou une opération de copier.</p>
<div class="attention">Si vous tapez <code>C-_</code> par erreur, la
même touche peut servir à faire un redo (c'est-à-dire un undo
d'undo&nbsp;!). Pour cela, il vous suffit de faire un déplacement
quelconque du curseur (pour éviter de continuer la séquence d'undo
commencée) et de retaper <code>C-_</code>. Dans certains cas, les
<code>C-_</code> en série et imbriqués peuvent avoir des conséquences
étonnantes.</div>
<p>Pour revenir carrément à l'état où était votre fichier au moment où
vous l'avez sauvegardé pour la dernière fois, tapez <code>M-x
revert-buffer</code>.</p>
<div class="encadre">Pour annuler une commande que vous êtes en train
de taper (mais que vous n'avez pas encore lancée), tapez
<code>C-g</code>.</div>
<p>Emacs affichera &#171;&nbsp;Quit&nbsp;&#187; dans le mini-buffer
et abandonnera la commande en cours.</p>
<h3>Interaction avec le shell</h3>
<p>Il est possible d'exécuter une commande shell depuis emacs, par
exemple pour compiler le fichier tex que vous êtes en train
d'éditer. C'est la commande <code>M-!</code>. Emacs vous demande dans
le mini-buffer la commande que vous souhaitez lancer, et vous donne
son résultat. Si la commande s'est effectuée sans compte-rendu, emacs
vous dit&nbsp; &#171;&nbsp;<em lang="en">(Shell command succeeded with
no output)</em>&nbsp;&#187;. Sinon, il coupe sa fenêtre en deux et
vous donne la sortie de la commande.</p>
<p>Pour exécuter une commande shell puis insérer le résultat de cette
commande dans le buffer, tapez plutôt <code>C-u
M-!</code>. Exemple&nbsp;: vous souhaitez insérer dans votre fichier
la date exacte. Tapez <code>C-u M-!</code>, puis emacs vous demande
quelle commande vous souhaitez exécuter. Répondez
&#171;&nbsp;date&nbsp;&#187;. Emacs insérera le résultat de la
commande <code>date</code> directement dans le fichier, au point où se
trouve votre curseur.</p>
<p>Vous pouvez même demander un terminal dans un nouveau buffer, qui
s'appelle précisément *Shell*, avec la commande <code>M-x
shell</code>. Attention, ce terminal ne traite pas les séquences
d'échappement, pour cela il faut plutôt faire <code>M-x term</code>
qui lance *terminal*.</p>
<h3>Arguments numériques</h3>
<p>Emacs permet de répéter autant de fois qu'on le souhaite le même
caractère ou la même commande grâce à <code>C-u
&lt;nombre&gt;</code>. Ainsi, <code>C-u 50 C-p</code> permet de
répéter 50 fois la commande <code>C-p</code> et donc de remonter de 50
lignes. <code>C-u 5 !</code> vous permet d'insérer 5 points
d'exclamation.</p>
<p>Dans le cadre de commandes plus complexes, <code>C-u
&lt;nombre&gt;</code> agit comme un modificateur. On l'a vu par
exemple pour changer la taille des lignes.</p>
<h3>Complétion de mots déjà tapés</h3>
<p><code>M-/</code> vous permet de compléter un mot en cours de
frappe. Admettons que vous écriviez un article de droit
constitutionnel et que vous deviez tapez
&#171;&nbsp;anticonstitutionnellement&nbsp;&#187; à plusieurs
reprises. La deuxième fois, tapez simplement
&#171;&nbsp;anti&nbsp;&#187; puis <code>M-/</code>. Emacs complètera
tout seul. Si d'autres mots commençant par
&#171;&nbsp;anti&nbsp;&#187; apparaissent déjà dans le buffer, taper
de nouveau <code>M-/</code> permet de cycler entre tous les mots
possibles.</p>
<h3>Psychanalyse</h3>
<p>On prétend qu'emacs sait aussi faire le café, en attendant, vous
pouvez toujours vous faire psychanalyser par lui. Essayez donc
<code>M-x doctor</code>&nbsp;!</p>
<h2>Configuration d'emacs</h2>
<p>Emacs est extrêmement configurable. Pour modifier quelque chose à
sa configuration, il faut modifier le fichier <code>.emacs</code> se
trouvant dans votre répertoire personnel. Le <code>.emacs</code> de la
config conscrits 2002 contient une petite introduction au langage
utilisé ainsi qu'aux configurations de base que l'on peut faire.</p>
<div class="metainformation">Auteur&nbsp;: Marie-Lan Nguyen, avec
l'aide de Josselin Noirel, Luc Habert et David Madore. Dernière
modification le 2003-03-04</div>
</body>
</html>