Me suis trompée de fichier à committer tout à l'heure on dirait... C'est
donc une collec d'astuces pour les utilisateurs avertis d'emacs. Complétable ad lib.
This commit is contained in:
parent
a7071fd9bd
commit
b5122d35a1
1 changed files with 490 additions and 0 deletions
490
unix/editeurs/super_emacs.html
Normal file
490
unix/editeurs/super_emacs.html
Normal file
|
@ -0,0 +1,490 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>Emacs avancé</title>
|
||||
<link rel="stylesheet" href="../../tuteurs.css" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<div class="navigation">
|
||||
<h1>Tuteurs informatique<br /><a href="mailto:tuteurs@clipper.ens.fr">tuteurs@clipper</a></h1>
|
||||
<hr />
|
||||
<ul class="menu">
|
||||
<li>
|
||||
<a href="../../meta/charte_graphique.html">Utiliser ce site</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="../../actualite.html">Actu et stages</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="../../docs/">Docs à imprimer</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="../../meta/plan_site.html">Plan du site</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="/search.html">Rechercher</a>
|
||||
</li>
|
||||
</ul>
|
||||
<hr />
|
||||
<ul class="arbre">
|
||||
<li>
|
||||
<a href="../../">Les tuteurs</a>
|
||||
<ul class="arbre">
|
||||
<li>
|
||||
<a href="../" />
|
||||
<ul class="arbre">
|
||||
<li>
|
||||
<a href="./">Éditeurs</a>
|
||||
<ul class="arbre">
|
||||
<li>
|
||||
<a href="cercles.html">7 Cercles</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="emacs.html">Tutorial emacs</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="emacs_memo.html">Emacs : aide-mémoire</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="super_emacs.html" class="actuel">Emacs avancé</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="vim.html">Vim</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<hr />
|
||||
<ul class="menu">
|
||||
<li>
|
||||
<a href="/">Serveur des élèves</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="http://www.ens.fr/">ENS</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="http://www.spi.ens.fr/">SPI</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="corps">
|
||||
<h1>Aller plus loin avec GNU Emacs</h1>
|
||||
<div class="sommaire">
|
||||
<ul>
|
||||
<li>
|
||||
<a href="#s1">Abréviations</a>
|
||||
<ul>
|
||||
<li>
|
||||
<a href="#s1_1">Principe</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#s1_2">Correction d'orthographe à la volée</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#s2">Bookmarks</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#s3">Histoires de répertoires (Dired)</a>
|
||||
<ul>
|
||||
<li>
|
||||
<a href="#s3_1">Effacer un fichier</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#s3_2">Copier et renommer</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#s3_3">Récapitulons</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#s4">Lire les pages de man</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#s5">Emacs comme shell de login</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<p>Cette page contient une collection d'astuces pour l'utilisateur
|
||||
déjà rompu à GNU Emacs. Si vous êtes débutant et souhaitez vous
|
||||
initier à Emacs, allez plutôt voir le <a href="../../unix/editeurs/emacs.html">tutorial</a> de
|
||||
tuteurs.</p>
|
||||
<h2>
|
||||
<a name="s1">Abréviations</a>
|
||||
</h2>
|
||||
<h3>
|
||||
<a name="s1_1">Principe</a>
|
||||
</h3>
|
||||
<p> Vous connaissez déjà la commande <code>M-/</code> qui permet de
|
||||
compléter un mot en cours de frappe (sinon, voir le <a href="emacs.html">tutorial</a>. Dans le même genre, emacs gère les
|
||||
abréviations.</p>
|
||||
<p>Le mode mineur « abbreviation » vous permet,
|
||||
comme son nom l'indique, de définir des abréviations qu'emacs se
|
||||
chargera de développer au cours de l'édition du fichier. Par exemple,
|
||||
vous pouvez définir l'abréviation ENS qui se développera en
|
||||
« École Normale supérieure. »</p>
|
||||
<p>Essayons un peu. Tapez <code>M-x abbrev-mode</code> pour basculer
|
||||
dans le mode « abbreviation » (Cf. la <em lang="en">mode line</em>). Tapez ensuite l'abréviation de votre choix
|
||||
(pour des raisons évidentes, ne choisissez pas un mot existant). Si
|
||||
vous souhaitez des abréviations locales (limitées au mode dans lequel
|
||||
vous vous trouvez), tapez ensuite <code>C-x ail</code>. Pour les
|
||||
abréviations globales (qui s'appliquent à tous les modes), c'est
|
||||
<code>C-x aig</code>. Tapez ensuite la version développée, puis
|
||||
appuyez sur <code>ENTER</code>. Dorénavant, dans cette session, à
|
||||
chaque fois que vous taperez « ENS », emacs
|
||||
développera en « École Normale supérieure. »</p>
|
||||
<p>
|
||||
Pour sortir du mode abréviation, tapez <code>M-x
|
||||
kill-all-abbrevs</code>.
|
||||
</p>
|
||||
<h3>
|
||||
<a name="s1_2">Correction d'orthographe à la volée</a>
|
||||
</h3>
|
||||
<p>On peut s'en servir pour faire comme dans MS Word et définir une
|
||||
liste de mots sur lesquels on fait tout le temps des coquilles. Genre
|
||||
« teh » pour « the » ou « poru » pour « pour ». Il suffit de dire à
|
||||
Emacs que ce sont des abréviations pour qu'il les remplace au vol par
|
||||
le mot orthographié correctement.</p>
|
||||
<p> Commençons par indiquer à emacs que l'on souhaite utiliser le mode
|
||||
abréviation par défaut, que l'on a un fichier d'abréviations qui
|
||||
s'appelle <code>~/.abrev</code> et que l'on souhaite sauvegarder ce
|
||||
fichier à chaque fois. D'abord, on crée le fichier
|
||||
<code>.abrev</code>, vide pour l'instant.</p>
|
||||
<pre><span class="prompt">clipper ~ $</span> touch .abrev
|
||||
</pre>
|
||||
<p> Puis on indique dans son <code>.emacs</code> : </p>
|
||||
<pre>
|
||||
(setq-default abbrev-mode t)
|
||||
(read-abbrev-file "~/.abrev")
|
||||
(setq save-abbrevs t)
|
||||
</pre>
|
||||
<p> Quittez puis remancez emacs tout seul, « Abbrev » figurera dans la
|
||||
<em lang="en">mode line</em>. Suivez la procédure décrite
|
||||
ci-dessus : on tape l'abréviation, puis <code>C-x aig</code> ou
|
||||
<code>C-x ail</code>, l'abréviation développée, puis
|
||||
<code>Enter</code>. Répétez l'opération autant de fois que souhaité
|
||||
pour constituer votre liste d'abréviations. Ensuite, on sauvegarde
|
||||
cette liste : <code>M-x write abbrev-file</code> puis
|
||||
<code>Enter</code>. Emacs vous demande alors le nom de votre fichier,
|
||||
tapez donc <code>~/.abrev</code> puis <code>Enter</code>.</p>
|
||||
<p>
|
||||
Par la suite, pour ajouter de nouvelles abréviations, contentez-vous
|
||||
de les définir comme indiqué ci-dessus, emacs vous demandera si vous
|
||||
voulez sauvegarder votre fichier d'abréviations. Il suffira de
|
||||
répondre oui.
|
||||
</p>
|
||||
<p>Pour effacer une abréviation, tapez <code>M-x edit-abbrevs</code>
|
||||
qui lance l'éditeur d'abréviations (pour simplement voir la liste,
|
||||
c'est <code>M-x list-abbrevs</code>). Ladite liste ressemble à
|
||||
ceci :
|
||||
</p>
|
||||
<pre>
|
||||
(global-abbrev-table)
|
||||
|
||||
"gwb" 1 "George W. Bush"
|
||||
"usa" 1 "États-Unis"
|
||||
"poru 1 "pour"
|
||||
</pre>
|
||||
<p>
|
||||
Entre parenthèses, emacs vous dit qu'il s'agit d'abréviations globales
|
||||
(si elles avaient été locales, vous auriez vu
|
||||
<code>(text-mode-abbrev-table)</code>, ou
|
||||
<code>(fundamental-mode-abbrev-table)</code>, etc.). La colonne de
|
||||
gauche affiche les abréviations proprement dites, la seconde colonne
|
||||
est la cuisine interne d'emacs, la colonne de droite contient les
|
||||
abréviations développées. Pour effacer une abréviation, utiliser une
|
||||
commande standard pour effacer la ligne en question, <code>C-k</code>
|
||||
par exemple, puis sauvegardez.
|
||||
</p>
|
||||
<div class="attention">Attention, n'essayez pas d'ajouter à la main de
|
||||
nouvelles lignes à la liste. Effacer est la seule opération sûre.
|
||||
</div>
|
||||
<h2>
|
||||
<a name="s2">Bookmarks</a>
|
||||
</h2>
|
||||
<p>Vous connaissez les bookmarks (alias « signets » pour Netscape ou
|
||||
« favoris » pour Internet Explorer) dans un navigateur. Eh bien dans
|
||||
emacs, il y en a aussi. Ils jouent très exactement le rôle de
|
||||
marque-pages : vous pouvez ainsi retrouver exactement l'endroit
|
||||
où vous en étiez d'une session à l'autre.
|
||||
</p>
|
||||
<table class="tableau">
|
||||
<tr>
|
||||
<th>Commande</th>
|
||||
<th>Commande complète</th>
|
||||
<th>Action</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>C-x r m <code>Enter</code></td>
|
||||
<td>_</td>
|
||||
<td>Pose un bookmark à
|
||||
l'endroit où se trouve le point</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>C-x r m <nom> <code>Enter</code></td>
|
||||
<td>M-x
|
||||
bookmark-set</td>
|
||||
<td>Pose un bookmark et lui donne un nom</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>_</td>
|
||||
<td>M-x bookmark-delete <nom></td>
|
||||
<td>Détruit le bookmark <nom></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>C-x r b <nom></td>
|
||||
<td>M-x bookmark-jump</td>
|
||||
<td>Aller au
|
||||
bookmark <nom></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>C-x r l</td>
|
||||
<td>M-x bookmark-list</td>
|
||||
<td>Lister tous les bookmarks</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>_</td>
|
||||
<td>M-x bookmark-file</td>
|
||||
<td>Sauve les bookmarks</td>
|
||||
</tr>
|
||||
</table>
|
||||
<h2>
|
||||
<a name="s3">Histoires de répertoires (Dired)</a>
|
||||
</h2>
|
||||
<p>
|
||||
Emacs vous permet d'agir sur vos répertoires : regarder le
|
||||
contenu d'un répertoire, effacer des fichiers, les renommer, les
|
||||
copier, etc. Bref, tout ce que vous faites d'ordinaire avec les
|
||||
commandes <code>cp</code>, <code>rm</code> ou encore <code>mv</code>
|
||||
sous UNIX. Tout cela, grâce à Dired (DIRectory EDitor)...
|
||||
</p>
|
||||
<p>
|
||||
Commençons par demander à Emacs de lire un répertoire. Par exemple, le
|
||||
répertoire <code>armoire/</code> de tuteurs.
|
||||
</p>
|
||||
<pre><span class="prompt">clipper ~ $</span> emacs ~tuteurs/armoire
|
||||
</pre>
|
||||
<p>
|
||||
On obtient alors le résultat suivant, similaire à ce que vous aurait
|
||||
donné un <code>ls -la</code> sur le même répertoire :
|
||||
</p>
|
||||
<pre>
|
||||
/users/staffs/tuteurs/armoire:
|
||||
used 8 available 222601
|
||||
drwxr-xr-x 3 tuteurs 512 Jan 8 02:30 .
|
||||
drwxr-xr-x 30 tuteurs 2560 Apr 1 20:06 ..
|
||||
drwxr-xr-x 2 tuteurs 512 Jan 8 02:32 affiche
|
||||
-rw-r--r-- 1 tuteurs 1334 Oct 14 2002 inventaire.txt
|
||||
-rw-r--r-- 1 tuteurs 954 Nov 14 11:24 livres.txt
|
||||
</pre>
|
||||
<p> Vous pouvez vous déplacer dans Dired à l'aide de la touche
|
||||
<code>n</code>, de la barre d'espace ou encore de
|
||||
<code>C-n</code>. Pour éditer un fichier, appuyez sur
|
||||
<code>e</code>. Pour simplement jeter un coup d'œil au fichier,
|
||||
<code>v</code> demande à emacs d'afficher le fichier dans un buffer en
|
||||
lecture seule appelé « View ». On quitte ce buffer avec un simple
|
||||
<code>q</code>.
|
||||
</p>
|
||||
<div class="attention">Avant toutes choses, attention : dans
|
||||
Dired, vous travaillez directement sur vos fichiers, pas par
|
||||
l'intermédiaire d'un buffer. Quand vous effacez un fichier, c'est
|
||||
définitif.
|
||||
</div>
|
||||
<p>
|
||||
Autre remarque : si vous modifiez le contenu de votre directoire
|
||||
en dehors de Dired (par exemple, en suspendant emacs pour revenir au
|
||||
shell), il faudra relancer Dired pour prendre en compte les
|
||||
modifications du disque (<code>C-x C-f <répertoire></code>).
|
||||
</p>
|
||||
<h3>
|
||||
<a name="s3_1">Effacer un fichier</a>
|
||||
</h3>
|
||||
<p>Le mécanisme est identique que celui pour effacer un buffer dans la
|
||||
liste des buffers (<code>C-x C-b</code>). Placez votre curseur sur la
|
||||
bonne ligne puis tapez sur <code>d</code>. Un « D » apparaît alors sur
|
||||
la ligne, tout à gauche :</p>
|
||||
<pre>
|
||||
/users/staffs/tuteurs/armoire:
|
||||
used 8 available 222601
|
||||
drwxr-xr-x 3 tuteurs 512 Jan 8 02:30 .
|
||||
drwxr-xr-x 30 tuteurs 2560 Apr 1 20:06 ..
|
||||
D drwxr-xr-x 2 tuteurs 512 Jan 8 02:32 affiche
|
||||
-rw-r--r-- 1 tuteurs 1334 Oct 14 2002 inventaire.txt
|
||||
D -rw-r--r-- 1 tuteurs 954 Nov 14 11:24 livres.txt
|
||||
</pre>
|
||||
<p>
|
||||
Pour aller plus rapidement, <code>#</code> marque comme à effacer tous
|
||||
les fichiers d'auto-save (ceux dont le nom commence et finit par des
|
||||
#, précisément) et <code>~</code>, tous les fichiers de backup (dont
|
||||
le nom finit en ~). Pour enlever la marque d'effacement d'un fichier,
|
||||
appuyez sur <code>u</code> (comme « <em lang="en">undelete</em> »).
|
||||
</p>
|
||||
<p>
|
||||
Quand vous avez fini, et que vous souhaitez vraiment détruire les
|
||||
fichiers, tapez <code>x</code>. Emacs vous demandera de confirmer la
|
||||
destruction des fichiers marqués.
|
||||
</p>
|
||||
<h3>
|
||||
<a name="s3_2">Copier et renommer</a>
|
||||
</h3>
|
||||
<p> Pour copier, tapez <code>c</code> (ou <code>M-x
|
||||
dired-do-copy</code>) sur le fichier à copier. Emacs vous demande
|
||||
alors le nom du nouveau fichier. Pour renommer, même principe en
|
||||
tapant <code>r</code> (ou <code>M-x dired-do-move</code>).</p>
|
||||
<h3>
|
||||
<a name="s3_3">Récapitulons</a>
|
||||
</h3>
|
||||
<p> Dired vous permet de faire quasiment toutes les opérations sur
|
||||
fichier ou répertoire que les commandes UNIX standard. Le tableau
|
||||
suivant récapitule des points déjà expliqués et vous présente d'autres
|
||||
possibilités. </p>
|
||||
<table class="tableau">
|
||||
<tr>
|
||||
<th>Commande</th>
|
||||
<th>Nom complet</th>
|
||||
<th>Action</th>
|
||||
<th>Équivalent UNIX</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>e</td>
|
||||
<td>_</td>
|
||||
<td>Éditer le fichier</td>
|
||||
<td>emacs</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>r</td>
|
||||
<td>M-x dired-do-rename</td>
|
||||
<td>Renommer le
|
||||
fichier</td>
|
||||
<td>cp</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>c</td>
|
||||
<td>M-x dired-do-copy</td>
|
||||
<td>Renommer le
|
||||
fichier</td>
|
||||
<td>mv</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>d</td>
|
||||
<td>M-x dired-do-delete</td>
|
||||
<td>Marquer pour
|
||||
l'effacement</td>
|
||||
<td>rm</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>~</td>
|
||||
<td>_</td>
|
||||
<td>Marquer pour l'effacement tous les fichiers de
|
||||
backup</td>
|
||||
<td>rm *~</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>#</td>
|
||||
<td>_</td>
|
||||
<td>Marquer pour l'effacement tous les fichiers
|
||||
d'autosave</td>
|
||||
<td>rm *#</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>u</td>
|
||||
<td>_</td>
|
||||
<td>Enlever la marque d'effacement</td>
|
||||
<td>_</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>M</td>
|
||||
<td>M-x dired-do-chmod</td>
|
||||
<td>Changer les droits
|
||||
d'accès</td>
|
||||
<td>chmod</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>G</td>
|
||||
<td>M-x dired-do-chgrp</td>
|
||||
<td>Changer le
|
||||
groupe</td>
|
||||
<td>chgrp</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>O</td>
|
||||
<td>M-x dired-do-chown</td>
|
||||
<td>Changer le propriétaire du
|
||||
fichier</td>
|
||||
<td>chown</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>S</td>
|
||||
<td>M-x dired-do-symlink</td>
|
||||
<td>Faire un lien
|
||||
symbolique</td>
|
||||
<td>ln -s</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>H</td>
|
||||
<td>M-x dired-do-hardlink</td>
|
||||
<td>Faire un lien
|
||||
dur</td>
|
||||
<td>ln</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Z</td>
|
||||
<td>M-x dired-do-compress</td>
|
||||
<td>Compresse un fichier (avec
|
||||
<a href="../../unix/archives.html">gunzip</a>)</td>
|
||||
<td>gzip</td>
|
||||
</tr>
|
||||
</table>
|
||||
<h2>
|
||||
<a name="s4">Lire les pages de man</a>
|
||||
</h2>
|
||||
<p>Vous pouvez également lire des pages de man direcetement dans
|
||||
emacs, grâce à la commande <code>M-x man</code>. Appuyez sur
|
||||
<code>Enter</code>, puis emacs vous demandera quelle page de man vous
|
||||
souhaitez lire. Par défaut, il s'agit du mot sur lequel est placé
|
||||
votre curseur. Vous pouvez également spécifier la section dans
|
||||
laquelle se trouve la page recherchée. Par exemple, vous recherchez la
|
||||
page de man du test, célèbre distraction normalienne, qui se trouve
|
||||
dans la section I : </p>
|
||||
<pre>
|
||||
Manual entry: test I
|
||||
</pre>
|
||||
<p>
|
||||
Ce qui vous donne :
|
||||
</p>
|
||||
<pre>
|
||||
Misc. Manual Pages TEST(I)
|
||||
|
||||
NAME
|
||||
test - distraction normalienne
|
||||
|
||||
DESCRIPTION
|
||||
Le test est une distraction spécifiquement normalienne. Le
|
||||
test consiste à dire ou faire quelque chose avec l'intention
|
||||
de tirer de son interlocuteur une réaction précise. Si
|
||||
cette réaction se produit effectivement, on dira « test »,
|
||||
--11:%%-F1 *Man test I* { page 1 of 1} (Man)--L1--Top---------------------
|
||||
</pre>
|
||||
<p> Il est plus facile de lire une page de man dans emacs qu'en
|
||||
invoquant la commande <code>man</code> dans le shell. Seul
|
||||
inconvénient : vous ne pouvez pas interrompre emacs pendant qu'il
|
||||
est en train de mouliner à la recherche de la page de man demandée,
|
||||
pas même avec <code>C-g</code>... </p>
|
||||
<h2>
|
||||
<a name="s5">Emacs comme shell de login</a>
|
||||
</h2>
|
||||
<p>
|
||||
Non, je rigole...</p>
|
||||
<div class="metainformation">Auteur : Marie-Lan Nguyen. Dernière
|
||||
modification : 2003-04-29
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
Loading…
Reference in a new issue