Chapitre 9. GNU/Emacs

Configurer Emacs
Les commandes de bases
Les fonctions avancées

Emacs (prononcer imacs) est un logiciel à part dans le monde du libre : c'est un puissant logiciel, qui a comme principal tâche d'éditer des textes, comme le fait Vi(m). Mais il sait également lire son courrier éléctronique, bavarder sur IRC, regarder ses images... En un mot, Emacs sait tout faire, il se limite juste à votre imagination ! Il y a une grande rivalité entre les utilisateurs d'Emacs et de Vi. Emacs est critiqué par ses détracteurs pour être une usine à gaz, d'être complexe...(ce qui n'est pas vrai) Pourquoi Emacs alors ? Simplement parce que une seule et unique application vous permet de tout faire ! A vous d'essayer et de choisir.

Figure 9.1. GNU Emacs

GNU Emacs

Configurer Emacs

Emacs est différent des autres éditeurs de textes parce qu'il est à la fois un éditeur, et aussi un interpréteur de LISP. Sous ce nom, se cache un puissant langage qui permet de faire ce que l'on veut avec le programme. Vous pouvez programmer vous même vos propre fonctions pour Emacs !

Installation

# apt-get install emacs21

Configuration

Ensuite, mettons les fichiers de configuation d'Emacs :

% tar zxvf ~/config/emacs.tar.gz ~/

ou si vous n'avez pas suivi la formation depuis le début :

% wget http://formation-debian.via.ecp.fr/fichiers-config/emacs.tar.gz
% tar zxvf emacs.tar.gz ~/

On peut enfin lancer Emacs :

% emacs&

Les commandes de bases

  • RET : frappe de la touche ENTREE

  • DEL : frappe de la touche Suppr

  • SPC : frappe de la touche Espace

  • C-x : frappe de la touche Ctrl et de la touche x simultanément

  • M-x : frappe de la touche Shift puis de la touche x

  • M-x commande : frappe de la toucheShift puis de la touche x, puis tapper commande>

Si vous voyez qu'Emacs n'en fait qu'a sa tête, appuyez sur C-g, ce qui remet à zéro l'opération en cours.

Edition de fichiers

  • Quitter Emacs : C-x C-c

  • Ouvrir (Créer) un fichier : C-x C-f

  • Insérer un fichier au niveau du curseur : C-x i

  • Suspendre Emacs : C-z

  • Ouvrir un autre fichier à la place : C-x C-v

  • Sauvegarder un fichier : C-x C-s

  • Sauvegarder sous un autre nom : C-x C-w

Navigation dans un fichier

  • Avancer d'un caractère : C-f

  • Reculer d'un caractère : C-b

  • Monter d'une ligne : C-p

  • Descendre d'une ligne : C-n

  • Avancer d'un mot : M-f

  • Reculer d'un mot : ESC b

  • Aller au début de la ligne : C-a

  • Aller en fin de ligne : C-e

  • Avancer d'un écran : C-v

  • Reculer d'un ecran : M-v

  • Aller au début d'un fichier : M-<

  • Aller à la fin du fichier : M->

Manipulation du texte

  • Supprimer un caractère : C-d

  • Supprimer le caractère après : Suppr

  • Supprimer un mot : M-d

  • Supprimer une ligne : C-k

Note

Sous Emacs, vous devez marquer dans une région le texte que vous voulez supprimer/copier/coller. Une région est entre ce que vous voulez supprimer/copier/coller, et la fin de ce que vous voulez supprimer/copier/coller.

  • Marquer une région : C-SPC

  • Supprimer la région de texte : C-w

  • Couper une région : C-y

  • Coller une région : M-w

  • Annuler le dernier changement : C-x u

  • Annuler tous les changements depuis la dernière fois que vous avez enregistré : M-x revert-buffer RET

  • Fixe la région autour du paragraphe courant (déplace le point au début, et la marque à la fin) : M-h

  • Fixe la région autour du buffer entier : C-x h

Le registres

Les registres d'Emacs sont des espaces mémoires où l'utilisateur peut enregistrer du texte ou une position de texte, et les rappeler plus tard. Un registre est reconnu suivant une lettre.

  • Sauvegarder la position du point dans le registre m : C-x r SPC m

  • Déplace le point à la position du registrer m : C-x r j m

  • Copie la région dans le registre m : C-x r s m

  • Insère le texte du registre m : C-x r i m

Recherche de texte

  • Recherche en avant : C-s

  • Recherche en arrière : C-r

  • Arrêt de la recherche: RET

  • Rechercher et remplacer par : M-%

  • Remplacer et aller à l'autre occurence SPC

  • Ne pas remplacer et aller à l'autre occurence : n

  • Remplacer et en arrêter là : .

Les buffers sous Emacs

Les buffers sont une zone mémoire où Emacs stocke les fichiers édités. Ils permettent la manipulation de plusieurs fichiers avec un seul et unique Emacs.

  • Aller à un buffer spécifié : C-x b

  • Afficher la liste des buffers : C-x C-b

  • Supprimer le buffer spécifié : C-x k

Les fenêtres sous Emacs

Sous Emacs, on peut diviser son écran pour afficher plusieurs buffers. On peut ainsi travailler, naviguer entre les buffers sous une seule et unique fenêtre.

  • Ferme la fenêtre actuelle : C-x 0

  • Supprimer toutes les fenêtres, sauf sur laquelle on est : C-x 1

  • Créer deux fenêtres, horizontalement : C-x 2

  • Créer deux fenêtres, verticalament : C-x 3

  • Passer d'une fenêtre à une autre : C-x o

Les fonctions avancées

Emacs n'est pas juste un simple éditeur de texte. Il est capable aussi d'afficher vos images, de jouer de la musique, de bavarder sur IRC, d'être un excellent client de mails et de news, un complement idéal à vos document LaTeX ...

En un mot, Emacs peut tout faire !

Les thèmes

Sous Emacs, tout est configurable, et les couleurs n'échappent pas à la règle. Heureusement, pour éviter d'avoir à redéfinir les couleurs de chaque élément ou mot-clef à la main (il y en a énormément !), vous pouvez utiliser des thèmes. Vous pouvez vous faire une idée des thèmes disponibles à cette adresse.

Dans le fichier de configuration d'Emacs : ~/.emacs, le choix du thème se trouve des lignes 101 à 106. Il suffit de décommenter la ligne correspondante au color-theme que vous désirez comme ceci :

;; Theme

;;(color-theme-rotor)
;;(color-theme-arjen)
(color-theme-blue-mood)
;;(color-theme-andreas)

Dans ce cas, le thème utilisé sera blue-mood.

Emacsclient

# apt-get install emacsclient

Emacs est très puissant, mais cette puissance a un inconvénient : il prend plusieurs secondes à se lancer. Il n'est donc pas très agréable de le lancer à chaque fois que l'on souhaite éditer un fichier. D'autre part, souvent, vous travaillez en console, et ça vous embête de devoir réécrire le chemin absolu du fichier que vous souhaitez éditer alors qu'il est dans le répertoire courant dans votre console.

Heureusement, il y a une solution : Emacsclient. Ce programme permet d'ouvrir un fichier dans Emacs depuis un terminal. Pour l'utiliser, vous devez décommenter la ligne 64 du fichier de configuration .emacs comme ceci :

(server-start)

Ensuite, dans une console, il suffit juste de taper :

% emacsclient -n fichier

et le fichier « fichier » sera ouvert dans Emacs. Si vous vous servez régulièrement de Emacsclient, il peut etre plus pratique d'ajouter dans votre .zshrc l'alias :

# emacsclient
alias e='emacsclient -n'

et il suffira alors de taper :

% e fichier

pour ouvrir le fichier « fichier » dans emacs.

Le navigateur d'images

Emacs permet aussi de naviguer dans ses répertoires d'images. Pour pouvoir l'utiliser pleinement, il faut tout d'abord installer le paquet imagemagick :

# apt-get install imagemagick

Puis taper la commande suivante : M-x thumbs-show-all-from-dir

Note

Vous pouvez tabulez pour automatiser la saisie, comme en console.

Spécifiez le répertoire que vous voulez naviguer, et validez par RET

Lecteur de musique

# apt-get install mpg123-el

Pour que vous puissiez utiliser mpg123 sous Emacs, il faut décommenter la ligne 40 du fichier de configuration ~/.emacs comme ci-dessous :

;; Mode mpg123-el
(require 'mpg123)

puis lancer mpg123 par la combinaison : M-x mpg123

Spécifier le répertoire que vous voulez naviguer, et valider par RET. Donner le réportoire où est stockée votre musique, et valider par RET. Emacs joue pour vous !

Le client IRC

# apt-get install erc

Pour que vous puissiez utiliser erc, il faut décommenter la ligne 36 du fichier de configuration ~/.emacs comme ci-dessous :

;; Mode IRC pour emacs
(require 'erc)
(require 'erc-nick-colors)

Maintenant, imaginons que vous vouliez rejoindre le chan #test sur Freenode. Sous Emacs, il faut faire :

  • M-x erc-select

  • rentrer « irc.freenode.net » dans le champ « IRC server »,

  • rentrer « ircd » dans le champ « IRC port »,

  • rentrer votre nick (pseudo) dans le champ « Nickname »,

  • et enfin, si vous vous êtes déjà enregistrés sur freenode, rentrez votre mot de passe, sinon, appuyez juste sur RET

Vous êtes maintenant connectés sur Freenode. Pour rejoindre le chan #test, vous avez le choix :

  • soit à la main, en tapant :

    ERC> /join #test
    
  • soit avec le raccourci clavier C-c C-j puis en rentrant « #test » dans le champ « Join channel ».

Pour quitter le chan, le raccourci est C-c C-p, ce qui est équivalent à :

ERC> /part

Chaque fois que vous voulez rejoindre un nouveau chan, un nouveau buffer est ouvert. Pour changer de chan, il suffit donc juste de changer de buffer avec le raccourci C-c b. Pour que la liste des buffers ne contienne que les buffers concernant erc, il faut taper C-c C-b.

Note

Astuce : Avec le raccourci C-c SPC, vous rejoignez le buffer dont l'activité non constatée est la plus ancienne (typiquement, les chans où on a parlé que vous n'avez pas lu). C'est extrêmement pratique !

Voici quelques lignes à ajouter dans le fichier .emacs pour automatiser certaines actions :

  • Pour rejoindre les chans #test et #test2 de Freenode ainsi que le chan #test de irc.netrusk.net automatiquement lorsque l'on se connecte au serveur irc, il suffit d'ajouter dans le .emacs :

      (require 'erc-autojoin)
    (erc-autojoin-mode 1)
    (setq erc-autojoin-channels-alist
              '(("irc.freenode.net" "#test" "#test2")
                ("irc.netrusk.net" "#test")))
    
  • Pour beeper sur les mots « debian » et « emacs » :

    (require 'erc-match)
    (setq erc-keywords '("debian" "emacs"))
    (erc-match-mode)
    
  • Que tout le monde ait le plaisir de savoir qui vous êtes :

    (setq erc-user-full-name "Prénom Nom")
    (setq erc-email-userid "pseudo@machine")
    
  • Pour enregistrer les logs des conversations dans le fichier ~/.irclogs

    (setq erc-log-insert-log-on-open nil)
    (setq erc-log-channels t)
    (setq erc-log-channels-directory "~/.irclogs/")
    (setq erc-save-buffer-on-part t)
    (setq erc-hide-timestamps nil)
    

Envoyer/Recevoir des messages éléctroniques

TODO

Lecture des News

TODO

AucTex : le module LaTeX pour Emacs

Même si Emacs dispose d'un mode LaTeX par défaut, celui-ci est extrêmement rudimentaire. Au contraire, grâce au module AucTeX, Emacs devient l'environnement idéal pour faire du LaTeX. À chaque ouverture d'un nouveau fichier .tex, Emacs vous demande interactivement la classe de votre document, les packages que vous souhaitez utiliser ainsi que leurs options.

Pour les gros projets, il est souvent nécessaire de découper le fichier source en un fichier maître et plusieurs petits fichiers esclaves. Grâce à AucTeX, vous pouvez dire pour chaque fichier esclave qui est son maître, et lorsque vous lancerez sa compilation, ce sera le fichier maître qui sera compilé.

Il y a également un bon nombre de raccourcis clavier. En voici certains :

  • pour ouvrir un nouvel environnenent : C-c C-e,

  • pour fermer l'environnement en cours : C-c ],

  • pour ajouter un nouvel \item : C-c C-j,

  • pour lancer la compilation/visualisation/conversion du fichier maître : C-c C-c,

  • pour commenter/décommenter une région : C-c ;,

  • pour insérer une macro : C-c RET,

  • pour accéder à la documentation d'AucTeX : C-c TAB,

  • pour accéder à Texdoc : C-c ?.