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 tutorial de tuteurs.
Vous connaissez déjà la commande M-/
qui permet de
compléter un mot en cours de frappe (sinon, voir le tutorial. Dans le même genre, emacs gère les
abréviations.
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. »
Essayons un peu. Tapez M-x abbrev-mode
pour basculer
dans le mode « abbreviation » (Cf. la mode line). 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 C-x ail
. Pour les
abréviations globales (qui s'appliquent à tous les modes), c'est
C-x aig
. Tapez ensuite la version développée, puis
appuyez sur ENTER
. Dorénavant, dans cette session, à
chaque fois que vous taperez « ENS », emacs
développera en « École Normale supérieure. »
Pour sortir du mode abréviation, tapez M-x
kill-all-abbrevs
.
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.
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 ~/.abrev
et que l'on souhaite sauvegarder ce
fichier à chaque fois. D'abord, on crée le fichier
.abrev
, vide pour l'instant.
sas ~ $ touch .abrev
Puis on indique dans son .emacs
:
(setq-default abbrev-mode t) (read-abbrev-file "~/.abrev") (setq save-abbrevs t)
Quittez puis relancez emacs tout seul, « Abbrev » figurera dans la
mode line. Suivez la procédure décrite
ci-dessus : on tape l'abréviation, puis C-x aig
ou
C-x ail
, l'abréviation développée, puis
Enter
. Répétez l'opération autant de fois que souhaité
pour constituer votre liste d'abréviations. Ensuite, on sauvegarde
cette liste : M-x write abbrev-file
puis
Enter
. Emacs vous demande alors le nom de votre fichier,
tapez donc ~/.abrev
puis Enter
.
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.
Pour effacer une abréviation, tapez M-x edit-abbrevs
qui lance l'éditeur d'abréviations (pour simplement voir la liste,
c'est M-x list-abbrevs
). Ladite liste ressemble à
ceci :
(global-abbrev-table) "gwb" 1 "George W. Bush" "usa" 1 "États-Unis" "pour" 1 "pour"
Entre parenthèses, emacs vous dit qu'il s'agit d'abréviations globales
(si elles avaient été locales, vous auriez vu
(text-mode-abbrev-table)
, ou
(fundamental-mode-abbrev-table)
, 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, utilisez une
commande standard pour effacer la ligne en question, C-k
par exemple, puis sauvegardez.
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.
Commande | Commande complète | Action |
---|---|---|
C-x r m Enter |
_ | Pose un bookmark à l'endroit où se trouve le point |
C-x r m <nom> Enter |
M-x bookmark-set | Pose un bookmark et lui donne un nom |
_ | M-x bookmark-delete <nom> | Détruit le bookmark <nom> |
C-x r b <nom> | M-x bookmark-jump | Aller au bookmark <nom> |
C-x r l | M-x bookmark-list | Lister tous les bookmarks |
_ | M-x bookmark-file | Sauve les bookmarks |
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 cp
, rm
ou encore mv
sous UNIX. Tout cela, grâce à Dired (DIRectory EDitor)...
Commençons par demander à Emacs de lire un répertoire. Par exemple, le
répertoire armoire/
de tuteurs.
sas ~ $ emacs ~tuteurs/armoire
On obtient alors le résultat suivant, similaire à ce que vous aurait
donné un ls -la
sur le même répertoire :
/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
Vous pouvez vous déplacer dans Dired à l'aide de la touche
n
, de la barre d'espace ou encore de
C-n
. Pour éditer un fichier, appuyez sur
e
. Pour simplement jeter un coup d'œil au fichier,
v
demande à emacs d'afficher le fichier dans un buffer en
lecture seule appelé « View ». On quitte ce buffer avec un simple
q
.
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 (C-x C-f <répertoire>
).
Le mécanisme est identique que celui pour effacer un buffer dans la
liste des buffers (C-x C-b
). Placez votre curseur sur la
bonne ligne puis tapez sur d
. Un « D » apparaît alors sur
la ligne, tout à gauche :
/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
Pour aller plus rapidement, #
marque comme à effacer tous
les fichiers d'auto-save (ceux dont le nom commence et finit par des
#, précisément) et ~
, tous les fichiers de backup (dont
le nom finit en ~). Pour enlever la marque d'effacement d'un fichier,
appuyez sur u
(comme « undelete »).
Quand vous avez fini, et que vous souhaitez vraiment détruire les
fichiers, tapez x
. Emacs vous demandera de confirmer la
destruction des fichiers marqués.
Pour copier, tapez C
(ou M-x
dired-do-copy
) sur le fichier à copier. Emacs vous demande
alors le nom du nouveau fichier. Pour renommer, même principe en
tapant R
(ou M-x dired-do-move
).
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.
Commande | Nom complet | Action | Équivalent UNIX |
---|---|---|---|
e | _ | Éditer le fichier | emacs |
R | M-x dired-do-rename | Renommer le fichier | cp |
C | M-x dired-do-copy | Renommer le fichier | mv |
d | M-x dired-do-delete | Marquer pour l'effacement | rm |
~ | _ | Marquer pour l'effacement tous les fichiers de backup | rm *~ |
# | _ | Marquer pour l'effacement tous les fichiers d'autosave | rm *# |
u | _ | Enlever la marque d'effacement | _ |
+ | M-x dired-create-directory | Créer un répertoire | mkdir |
M | M-x dired-do-chmod | Changer les droits d'accès | chmod |
G | M-x dired-do-chgrp | Changer le groupe | chgrp |
O | M-x dired-do-chown | Changer le propriétaire du fichier | chown |
S | M-x dired-do-symlink | Faire un lien symbolique | ln -s |
H | M-x dired-do-hardlink | Faire un lien dur | ln |
Z | M-x dired-do-compress | Compresse un fichier (avec gunzip) | gzip |
Vous pouvez également lire des pages de man directement dans
emacs, grâce à la commande M-x man
. Appuyez sur
Enter
, 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 :
Manual entry: test I
Ce qui vous donne :
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---------------------
Il est plus facile de lire une page de man dans emacs qu'en
invoquant la commande man
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 C-g
...
Ce qu'on appelle time stamp ici, c'est la date précise d'un événement. Emacs permet d'insérer automatiquement des time stamps, typiquement pour indiquer la date de dernière modification d'un fichier.
Par exemple, pour insérer automatiquement la date à chaque sauvegarde
du fichier, commencez par écrire dans votre .emacs
:
(add-hook 'write-file-hooks 'time-stamp)
Ensuite, dans votre fichier, indiquez dans les 8 premières lignes :
Time-stamp: <>
Lors de votre prochaine sauvegarde, emacs indiquera la date entre les <> :
Time-stamp: <2003-07-27 22:18:53 monlogin>
Comme vous le voyez, par défaut la date est indiquée au format année-mois-jour, suivie de votre login. À chaque fois que vous sauvegarderez ce fichier, emacs mettra à jour la date.
Non, je rigole...