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>
|
2003-05-01 20:42:45 +02:00
|
|
|
|
<title>Emacs</title>
|
2003-03-04 14:10:33 +01:00
|
|
|
|
</head>
|
|
|
|
|
<body>
|
|
|
|
|
|
|
|
|
|
<h1>GNU Emacs : 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 ?</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
|
|
|
|
|
« Editing MACroS ». 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. 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 « emacs » <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>
|
|
|
|
|
|
2003-05-01 20:42:45 +02:00
|
|
|
|
<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 : 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 : 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 : 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 : <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 : 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 : 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 : <code>M-g <nombre n></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
|
|
|
|
|
« info » 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 « Manipuler plusieurs buffers en
|
|
|
|
|
m<EFBFBD>me temps »).</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 :</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 :</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 </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 :</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 « GNU
|
|
|
|
|
Emacs »), la « ligne de mode » (<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 « modes ». Le mode par d<>faut est appel<65>
|
|
|
|
|
« fondamental », 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 « fill »
|
|
|
|
|
signifie qu'emacs va aller <20> la ligne d<>s que c'est n<>cessaire. Le
|
|
|
|
|
mode « overwrite » 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
|
|
|
|
|
« tampon ») 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> : c'est un buffer sans fichier
|
|
|
|
|
associ<EFBFBD>. <code>*Help*</code> est un autre exemple de buffer non
|
|
|
|
|
associ<EFBFBD> : 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 :
|
|
|
|
|
<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> : 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) « <em lang="en">Wrote
|
|
|
|
|
/users/00/litt/toto/maitrise.tex</em> ». 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 : 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
|
|
|
|
|
« fl<66>ches », 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>
|
2003-04-27 12:11:35 +02:00
|
|
|
|
<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-<</code></td><td><code>M-></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
|
|
|
|
|
« marque » 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
|
|
|
|
|
« point »). 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
|
|
|
|
|
« coller » 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.) : 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 « poru » au lieu de
|
|
|
|
|
« pour ». 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 « poru »,
|
|
|
|
|
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 !). 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 « Quit » 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 « <em lang="en">(Shell command succeeded with
|
|
|
|
|
no output)</em> ». 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 : 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
|
|
|
|
|
« date ». 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
|
|
|
|
|
<nombre></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
|
|
|
|
|
<nombre></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
|
|
|
|
|
« anticonstitutionnellement » <20> plusieurs
|
|
|
|
|
reprises. La deuxi<78>me fois, tapez simplement
|
|
|
|
|
« anti » puis <code>M-/</code>. Emacs compl<70>tera
|
|
|
|
|
tout seul. Si d'autres mots commen<65>ant par
|
|
|
|
|
« anti » 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> !</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 : 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>
|