20653ddee5
Last-change: ignore this commit
581 lines
26 KiB
XML
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>Emacs</title>
|
||
</head>
|
||
<body>
|
||
|
||
<h1>GNU Emacs : 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 ?</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
|
||
« Editing MACroS ». 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. Stallman, qui est
|
||
la réécriture du Emacs originel.</p>
|
||
|
||
<div class="attention">Ce tutorial est consacré à GNU Emacs
|
||
(accessible en lançant simplement « emacs » à
|
||
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 <a name="com">commandes</a> 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 : appuyez sur
|
||
<code>Ctrl</code> et, en gardant la touche enfoncée, appuyez sur
|
||
<code>c</code>. <code>M-g</code> signifie : 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 : 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 : <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 : 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 : 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 : <code>M-g <nombre n></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
|
||
« info » 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 « Manipuler plusieurs buffers en
|
||
mê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ê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 :</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 </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 :</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 « GNU
|
||
Emacs »), la « ligne de mode » (<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 « modes ». Le mode par défaut est appelé
|
||
« 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 é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 « fill »
|
||
signifie qu'emacs va aller à la ligne dès que c'est nécessaire. Le
|
||
mode « overwrite » 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
|
||
« tampon ») 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> : c'est un buffer sans fichier
|
||
associé. <code>*Help*</code> est un autre exemple de buffer non
|
||
associé : 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 :
|
||
<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> : 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) « <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 é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
|
||
« flèches », 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-<</code></td><td><code>M-></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
|
||
« marque » 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
|
||
« 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>É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
|
||
« coller » 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.) : 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 « poru » au lieu de
|
||
« pour ». 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 « 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 ê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 !). 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 « Quit » 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 « <em lang="en">(Shell command succeeded with
|
||
no output)</em> ». 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 : 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
|
||
« date ». 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
|
||
<nombre></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
|
||
<nombre></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
|
||
« anticonstitutionnellement » à plusieurs
|
||
reprises. La deuxième fois, tapez simplement
|
||
« anti » puis <code>M-/</code>. Emacs complètera
|
||
tout seul. Si d'autres mots commençant par
|
||
« anti » 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> !</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 : Marie-Lan Nguyen, avec
|
||
l'aide de Josselin Noirel, Luc Habert et David Madore. Dernière
|
||
modification le <date value="$Date: 2007-07-17 10:03:28 $"/></div>
|
||
|
||
</body>
|
||
</html>
|