tuteurs.ens.fr/unix/editeurs/emacs.tml

582 lines
26 KiB
Text
Raw Normal View History

2003-03-04 14:10:33 +01:00
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE html
PUBLIC "-//ENS/Tuteurs//DTD TML 1//EN"
"tuteurs://DTD/tml.dtd">
<html>
<head>
<title>Emacs</title>
2003-03-04 14:10:33 +01:00
</head>
<body>
<h1>GNU Emacs&nbsp;: tutorial</h1>
2003-03-05 00:51:40 +01:00
<p>Ce tutorial est destin<69> aux gens souhaitant se familiariser avec
2003-03-04 14:10:33 +01:00
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
2003-03-05 00:51:40 +01:00
href="&url.tuteurs;internet/forum/">documentation <20> ce sujet</a>. Un
<a href="emacs_memo.html">aide-m<>moire des principales commandes</a>
d'emacs est <20>galement disponible.</p>
2003-03-04 14:10:33 +01:00
<h2>G<>n<EFBFBD>ralit<69>s</h2>
<h3>Qu'est-ce qu'Emacs&nbsp;?</h3>
<p>Emacs est un <20>diteur de texte tr<74>s puissant, qui est <20>galement
capable de beaucoup d'autres choses (invoquer une commande shell,
envoyer ou recevoir du courrier <20>lectronique, lire les news, se
transformer en psy, et m<>me faire le caf<61> selon certaines mauvaises
langues). En contrepartie, Emacs est assez lourd (beaucoup plus en
tout cas que l'<27>diteur standard d'UNIX, vi) et souvent <20>sot<6F>rique.</p>
<p>Emacs date de 1975. Il a <20>t<EFBFBD> <20>crit par Richard M. Stallman qui
<EFBFBD>tait alors au MIT. Emacs a <20>t<EFBFBD> con<6F>u <20> l'origine comme un ensemble de
macros pour un TECO, un vieil <20>diteur de texte. Emacs veut donc dire
&#171;&nbsp;Editing MACroS&nbsp;&#187;. Par la suite, plusieurs
versions d'Emacs ont <20>t<EFBFBD> d<>velopp<70>es, mais la version la plus r<>pandue
reste GNU Emacs (alias FSF Emacs), celle de M.&nbsp;Stallman, qui est
la r<><72>criture du Emacs originel.</p>
<div class="attention">Ce tutorial est consacr<63> <20> GNU Emacs
(accessible en lan<61>ant simplement &#171;&nbsp;emacs&nbsp;&#187; <20>
l'ENS) dans sa fonction d'<27>diteur de textes. Il ne faut pas confondre
GNU Emacs et XEmacs. Ce ne sont pas deux versions du m<>me programme
mais, malgr<67> les ressemblances, deux programmes diff<66>rents.</div>
<p>Emacs est principalement utilis<69> sous les syst<73>mes de type UNIX,
mais il existe <20>galement pour MS-DOS ou Windows.</p>
<h3>Format des commandes emacs</h3>
<p>Les <a name="com">commandes</a> d'emacs utilisent les touches
<code>Control</code> (souvent abr<62>g<EFBFBD> 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><3E>chap</code>). Comme
les commandes sont assez complexes, on utilise des
abr<EFBFBD>viations. Ainsi, <code>C-c</code> signifie&nbsp;: appuyez sur
<code>Ctrl</code> et, en gardant la touche enfonc<6E>e, appuyez sur
2003-03-04 14:10:33 +01:00
<code>c</code>. <code>M-g</code> signifie&nbsp;: appuyez sur la touche
<code>Meta</code> et, en gardant la touche enfonc<6E>e, sur
<code>g</code>.</p>
<div class="attention">Si vous utilisez <code>ESC</code> <20> 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<6E>e d'un caract<63>re vers la
droite)... Taper des commandes complexes d'emacs requiert parfois un
peu de doigt<67>. Si vous vous <20>tes tromp<6D> de commande, vous pouvez
annuler avec <code>C-_</code> (cf. ci-dessous la gestion des
erreurs).</p>
<p>Derni<6E>re pr<70>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<69>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<6D>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<69> d'avoir une aide en ligne importante. Pour
y acc<63>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 <20> 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<6E>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<6E>tre. Tapez alors
<code>M-g</code>. Emacs ouvre en 2 la fen<65>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
<EFBFBD> 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<63>s aux r<>pertoires
&#171;&nbsp;info&nbsp;&#187; qui contiennent de l'aide sur diff<66>rents
programmes, parmi lesquels emacs. Cette commande vous envoie
directement sur la rubrique emacs. On navigue entre les fichiersgr<67>ce
<EFBFBD> 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<EFBFBD>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<65>tre. Pour lancer emacs dans votre
terminal, utilisez l'option <code>-nw</code>. Cette option est
particuli<EFBFBD>rement pratique lorsque vous souhaitez travailler <20> distance
sur un fichier qui est sur votre compte clipper, par exemple, mais
elle vous privera de certaines possibilit<69>s (les menus d<>roulants et
les boutons, par exemple). Si vous souhaitez travailler sur un fichier
pr<EFBFBD>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<65>tre d'emacs, vous pourrez voir un certain
nombre d'informations qui d<>pendent de la version d'emacs qui est
install<EFBFBD>e. <20> la date o<> cette documentation est <20>crite, c'est la
version 21.2.1 qui est install<6C>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<6E>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<66>rences entre config conscrit et config standard.</div>
<p><3E> l'heure actuelle, emacs ressemble <20> ceci&nbsp;:</p>
<div class="illustration"><img src="emacs.png" alt="[Image de la
fen<EFBFBD>tre d'emacs]"/></div>
<p>Tout d'abord, vous voyez en haut de la fen<65>tre des menus d<>roulants
(File, Edit, Options, Buffers, Tools, Help), et en-dessous quelques
ic<EFBFBD>nes. Il est commode au d<>part d'utiliser menus d<>roulants et
ic<EFBFBD>nes, mais il ne faut pas en abuser. C'est en apprenant les
raccourcis claviers que vous exploiterez au maximum les possibilit<69>s
d'emacs et que vous serez plus efficaces. Remarquez aussi en bas de la
fen<EFBFBD>tre ce qu'on appelle le mini-buffer, qui sert <20> 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<70>cieuses
indications telles que le nom du fichier en cours d'<27>dition, le mode
majeur et le(s) mode(s) mineur(s) dans lequel vous vous trouvez
(cf. ci-dessous sur les modes d'emacs), <20>ventuellement le num<75>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 <20>ditez. Ce sont
ses &#171;&nbsp;modes&nbsp;&#187;. Le mode par d<>faut est appel<65>
&#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 <20>ditez un
fichier, emacs choisit son mode en fonction de l'extension du fichier
en question. Par exemple, si vous <20>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 <20>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 <20> l'int<6E>rieur
d'un mode majeur. Par exemple, le mode &#171;&nbsp;fill&nbsp;&#187;
signifie qu'emacs va aller <20> la ligne d<>s que c'est n<>cessaire. Le
mode &#171;&nbsp;overwrite&nbsp;&#187; signifie qu'il va <20>crire
par-dessus les caract<63>res d<>j<EFBFBD> tap<61>s au lieu de les ins<6E>rer. Le mode
majeur et le(s) mode(s) mineur(s) dans lesquels vous vous trouvez sont
indiqu<EFBFBD>s dans la ligne de mode.</p>
<h3>Fichiers et buffers</h3>
<p>Tout d'abord, un rappel d'ordre g<>n<EFBFBD>ral. Les <20>diteurs de texte
n'<27>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 <20>ditent. Quand vous
sauvegardez, l'<27>diteur retransf<73>re les contenus du buffer dans votre
fichier. Si vous quittez l'<27>diteur sans sauvegarder, le buffer est
d<EFBFBD>truit et votre fichier demeure donc intact. C'est pourquoi, quand on
lance emacs sans argument, il ouvre un buffer appel<65>
<code>*scratch*</code>&nbsp;: c'est un buffer sans fichier
associ<EFBFBD>. <code>*Help*</code> est un autre exemple de buffer non
associ<EFBFBD>&nbsp;: c'est l'aide en ligne.</p>
<p>Que vous ayez lanc<6E> emacs tout court ou en lui demandant d'ouvrir
un fichier, vous pouvez ins<6E>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 <20> emacs, ou encore le faire une fois emacs
lanc<EFBFBD>. 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<70>ter le nom du fichier puis
d'appuyer sur <code>Entr<74>e</code>, puis emacs cr<63>e un nouveau buffer
qui porte le nom du fichier que vous voulez <20>diter. <20> noter que si
vous jonglez entre plusieurs buffers, appuyer sur la fl<66>che vers le
haut apr<70>s un <code>C-x C-f</code> vous donne acc<63>s <20> l'historique de
tous les fichiers d<>j<EFBFBD> ouverts par ce moyen.</p>
<div class="encadre">Si vous voulez ouvrir un fichier qui existe d<>j<EFBFBD>,
il vous suffit de taper les premi<6D>res lettres de son nom puis
d'appuyer sur <code>TAB</code>. Emacs essaiera de compl<70>ter le nom de
fichier pour vous. C'est ce qu'on appelle la compl<70>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<65>trage, c'est-<2D>-dire la
capacit<EFBFBD> d'emacs <20> couper sa fen<65>tre en deux (ou plus) pour vous
permettre d'avoir plusieurs buffers en regard. Pour ouvrir un deuxi<78>me
buffer, tapez <code>C-x 2</code> (la fen<65>tre se coupe en 2
horizontalement dans ce cas, si vous pr<70>f<EFBFBD>rez un d<>coupage vertical,
utilisez <code>C-x 3</code>). Pour passer d'un buffer <20> l'autre,
faites <code>C-x o</code>. Pour faire dispara<72>tre le buffer o<> se
trouve votre curseur, tapez <code>C-x 0</code>. Pour faire dispara<72>tre
l'autre c'est <code>C-x 1</code>.</p>
<p>Le multi-fen<65>trage est une fonctionnalit<69> tr<74>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<6E>rer un fichier</h3>
<p>D<>placez votre curseur jusqu'<27> l'endroit o<> vous souhaitez ins<6E>rer
un autre fichier. Puis tapez <code>C-x i</code> (<code>M-x
insert-file</code>). Emacs suit la m<>me proc<6F>dure qu'avec <code>C-x
C-f</code>&nbsp;: il vous demande quel fichier ins<6E>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<63> et indique <20>
l'<27>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 <20>crit le
contenu du buffer dans un fichier qui n'est pas n<>cessairement celui
associ<EFBFBD> au buffer. <code>C-x C-w</code> peut <20>tre pratique pour <20>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 <20>dit<69>
un ou des buffers que vous n'avez pas sauvegard<72>(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'<27>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<EFBFBD>tre avec le m<>me buffer et le curseur exactement o<> vous l'aviez
laiss<EFBFBD>. Si vous <20>tes en mode graphique, <code>C-z</code> minimise la
fen<EFBFBD>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<74>s
facilement dans votre fichier. Ils peuvent remplacer les touches
&#171;&nbsp;fl<66>ches&nbsp;&#187;, certes, mais plus encore vous
permettre d'<27>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<72>re</th>
<th>Vers l'avant</th>
2003-03-04 14:10:33 +01:00
</tr><tr>
<td>caract<63>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<63>res, vous pouvez utiliser les touches
<code>delete</code> ou <code>backspace</code> de votre
clavier. <20>videmment, vous pouvez aussi utiliser des commandes pour
faire ce travail. <code>C-d</code> efface le caract<63>re sur lequel se
trouve le curseur. <code>M-d</code> efface la suite d'un mot <20> partir
de l'endroit o<> se trouve le curseur (pour que le mot entier soit
effac<EFBFBD>, 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
<EFBFBD> partir de la position du curseur. Pour effacer la ligne enti<74>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<63>re
sur lequel est le curseur.</td></tr>
<tr><td>M-d</td><td>M-x kill-word</td><td>Efface le mot <20> partir du
curseur.</td></tr>
<tr><td>M-backspace</td><td>M-x backward-kill-word</td><td>Efface le
mot pr<70>c<EFBFBD>dent.</td></tr>
<tr><td>C-k</td><td>M-x kill-line</td><td>Efface la ligne <20> partir du
curseur</td></tr>
<tr><td>_</td><td>M-x kill-paragraph</td><td>Efface le paragraphe <20>
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 <20>
la souris (par exemple vous utilisez <code>emacs -nw</code>), vous
pouvez utilisez le syst<73>me de marquage d'emacs. On place une
&#171;&nbsp;marque&nbsp;&#187; au d<>but du texte <20> s<>lectionner avec
<code>C-espace</code>. Ensuite, d<>placez le curseur jusqu'<27> la fin du
texte <20> 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><3E>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<63>re isol<6F>), 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 <20>t<EFBFBD> effac<61> (que ce soit
une seule grosse suppression ou plusieurs suppressions d'affil<69>e) avec
<code>C-y</code>. Pour couper <20> proprement parler, il faut utiliser
<code>C-w</code> (ou <code>M-x kill-region</code>).</p>
<p><3E> 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<6E>re
chose <20> avoir <20>t<EFBFBD> copi<70>e ou coup<75>e, mais si vous voulez coller quelque
chose coup<75> ou coll<6C> pr<70>c<EFBFBD>demment, utilisez <code>M-y</code>
apr<EFBFBD>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<63>e. Pour une
recherche vers le d<>but du fichier, c'est <code>C-r</code>. Avec
emacs, il est <20>galement possible de faire des recherches en utilisant
des expression r<>guli<6C>res (avec des m<>tacaract<63>res comme ., *, ?, $,
etc.)&nbsp;: taper <code>C-M-s</code>. Pour aller <20> l'occurence
suivante du mot ou de l'expression correspondant <20> votre recherche
(simple ou avec une expression r<>guli<6C>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<6C>res d'emacs
est un peu particuli<6C>re.</div>
<p>De m<>me, pour les remplacements, emacs vous offre deux
possibilit<EFBFBD>s. Pour remplacer simplement un mot ou une expression,
tapez <code>M-%</code>. Pour faire un remplacement <20> partir d'une
expression r<>guli<6C>re, c'est <code>M-x
query-replace-regexp</code>. Dans les deux cas, une fois qu'emacs aura
trouv<EFBFBD> la premi<6D>re occurrence correspondant <20> 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<70>s avoir
effectu<EFBFBD> ou pas le remplacement, emacs passera <20> l'occurrence
suivante. Pour faire de mani<6E>re automatique le remplacement sur la
suite du fichier, r<>pondez <code>!</code>. Pour abandonner le
remplacement demand<6E>, appuyez sur <code>ESC</code>.</p>
<h3>Formater</h3>
<p>Quand vous <20>tes en mode <code>Fill</code> (regardez votre ligne de
mode), emacs coupe naturellement les lignes de la meilleure mani<6E>re
possible pour lui. Mais au fur et <20> mesure de l'<27>dition de votre
fichier, vous pouvez vous retrouver avec des lignes tr<74>s courtes et
d'autres trop longues. Une commande tr<74>s utile est <code>M-q</code>
qui r<>arrange le texte d'un paragraphe de mani<6E>re harmonieuse.</p>
<p>Vous pouvez <20>galement changer la longueur des lignes. Par exemple,
pour fixer <20> 20 caract<63>res la longueur des lignes, tapez <code>C-u 20
C-x f</code>.</p>
<h3>Changements de casse</h3>
<p>Emacs poss<73>de des commandes sp<73>ciales pour les probl<62>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<6D>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 <20> partir
de l'endroit o<> se trouve le curseur, pour changer le mot entier, il
faut donc se placer sur sa premi<6D>re lettre.</p>
<h3>Permutations</h3>
<p>Comme beaucoup de gens, vous faites des fautes de frappe qui sont
souvent dues <20> 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<73>de des commandes qui peuvent
r<EFBFBD>soudre votre probl<62>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 <20>tes tromp<6D> et que vous souhaitez revenir <20> l'action
pr<EFBFBD>c<EFBFBD>dente, tapez <code>C-x u</code> (ou <code>C-_</code>, plus facile
<EFBFBD> taper). Vous pouvez revenir en arri<72>re ainsi jusqu'<27> l'ouverture de
votre session emacs. Attention, <code>C-_</code> ne s'applique qu'<27>
une modification du buffer. Ainsi, on ne peut pas annuler le
d<EFBFBD>placement du curseur ou une op<6F>ration de copier.</p>
<div class="attention">Si vous tapez <code>C-_</code> par erreur, la
m<EFBFBD>me touche peut servir <20> faire un redo (c'est-<2D>-dire un undo
d'undo&nbsp;!). Pour cela, il vous suffit de faire un d<>placement
quelconque du curseur (pour <20>viter de continuer la s<>quence d'undo
commenc<EFBFBD>e) et de retaper <code>C-_</code>. Dans certains cas, les
<code>C-_</code> en s<>rie et imbriqu<71>s peuvent avoir des cons<6E>quences
<EFBFBD>tonnantes.</div>
<p>Pour revenir carr<72>ment <20> l'<27>tat o<> <20>tait votre fichier au moment o<>
vous l'avez sauvegard<72> pour la derni<6E>re fois, tapez <code>M-x
revert-buffer</code>.</p>
<div class="encadre">Pour annuler une commande que vous <20>tes en train
de taper (mais que vous n'avez pas encore lanc<6E>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<65>cuter une commande shell depuis emacs, par
exemple pour compiler le fichier tex que vous <20>tes en train
d'<27>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<74>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<65>tre en deux et
vous donne la sortie de la commande.</p>
<p>Pour ex<65>cuter une commande shell puis ins<6E>rer le r<>sultat de cette
commande dans le buffer, tapez plut<75>t <code>C-u
M-!</code>. Exemple&nbsp;: vous souhaitez ins<6E>rer dans votre fichier
la date exacte. Tapez <code>C-u M-!</code>, puis emacs vous demande
quelle commande vous souhaitez ex<65>cuter. R<>pondez
&#171;&nbsp;date&nbsp;&#187;. Emacs ins<6E>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<70>cis<69>ment *Shell*, avec la commande <code>M-x
shell</code>. Attention, ce terminal ne traite pas les s<>quences
d'<27>chappement, pour cela il faut plut<75>t faire <code>M-x term</code>
2003-04-29 16:45:21 +02:00
qui lance *terminal*.</p>
2003-03-04 14:10:33 +01:00
<h3>Arguments num<75>riques</h3>
<p>Emacs permet de r<>p<EFBFBD>ter autant de fois qu'on le souhaite le m<>me
caract<EFBFBD>re ou la m<>me commande gr<67>ce <20> <code>C-u
&lt;nombre&gt;</code>. Ainsi, <code>C-u 50 C-p</code> permet de
r<EFBFBD>p<EFBFBD>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<6E>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<70>tion de mots d<>j<EFBFBD> tap<61>s</h3>
<p><code>M-/</code> vous permet de compl<70>ter un mot en cours de
frappe. Admettons que vous <20>criviez un article de droit
constitutionnel et que vous deviez tapez
&#171;&nbsp;anticonstitutionnellement&nbsp;&#187; <20> plusieurs
reprises. La deuxi<78>me fois, tapez simplement
&#171;&nbsp;anti&nbsp;&#187; puis <code>M-/</code>. Emacs compl<70>tera
tout seul. Si d'autres mots commen<65>ant par
&#171;&nbsp;anti&nbsp;&#187; apparaissent d<>j<EFBFBD> dans le buffer, taper
de nouveau <code>M-/</code> permet de cycler entre tous les mots
possibles.</p>
<h3>Psychanalyse</h3>
<p>On pr<70>tend qu'emacs sait aussi faire le caf<61>, 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<74>mement configurable. Pour modifier quelque chose <20>
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<EFBFBD> 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<6E>re
modification le 2003-03-04</div>
</body>
</html>