Emacs

From Lea Linux
Jump to navigation Jump to search


Utilisation d'emacs

Utilisation d'emacs
par Fred
Emacs est un éditeur qui peut tout faire (mettre en couleur vos sources, gérer vos mails, browser internet, lancer des commandes) et même l'édition de fichier texte ;).
NDJCC : Où vous comprendrez bientôt pourquoi on surnomme cet éditeur Escape-Meta-Alt-Control-Shift ;)

Introduction

L'objectif de ce document n'est pas de faire de vous un pro d'emacs, mais plutôt de vous montrer que le monstre qu'est emacs n'est finalement pas si complexe que cela d'utilisation pour peu que l'on connaisse quelques fonctions élémentaires. Cette présentation sera donc fort sommaire. Évidement il faut fournir un petit effort de mémorisation.
Mais, vous allez me dire : "Pourquoi utiliser emacs, alors que mes autres éditeurs sont plus simples ?" D'abord parce qu'emacs est présent sur presque toutes les plates-formes (MS DOS, Windows, Unix, Linux et même d'autres). Ensuite parce qu'il fonctionne aussi bien en mode texte qu'en mode graphique. Enfin parce que vous êtes allergique à la puissance brutale de vi ! (emacs se prononce émax ...)

L'écran d'emacs

L'écran d'emacs (que ce soit un terminal ou une fenêtre) se divise en (au moins) quatre parties :

  • la première ligne de l'écran qui constitue un menu. Celui n'est utile que sous X. (vous pouvez quand même l'appeler en mode terminal par F10, mais son fonctionnement est loin d'être intuitif).
  • la dernière ligne de l'écran appelée mini-buffer dans laquelle on tape des commandes
  • le reste de l'écran qui présente le texte en train d'être édité. Cette zone peut elle-même être divisée en plusieurs zones. Chacune des zones est suivie d'une ligne présentant les caractéristiques de ce qui est présent dans cette zone.

Les commandes

Quand vous utiliserez emacs, il vous arrivera de faire des erreurs dans l'entrée d'une commande, pour abandonner celle-ci tapez deux fois la touche <Echap>.
Dans presque toutes les combinaisons de touches, vous pouvez remplacer l'appui sur Alt par une pression de Echap.

Avec emacs, la plupart des commandes sont entrées avec les modificateurs Ctrl ou/et Alt. Le nombre de commandes disponibles dans emacs étant bien plus important que deux fois le nombre de touches du clavier (même s'il n'est heureusement pas nécessaire de les connaître toutes pour utiliser emacs confortablement), il faut utiliser ces modificateurs d'une façon légèrement différente de celle d'autres logiciels.

Pour les commandes simples, c'est « simple » : vous tapez le modificateur avant la touche de « fonction » et en la maintenant appuyée vous appuyez sur la touche de « fonction ».

Exemple : pour utiliser la commande d'effacement de ligne (qui est : Ctrl+k) vous appuyez sur Ctrl, et en maintenant Ctrl appuyée vous appuyez sur k, puis vous lâchez les deux touches.

Pour les commandes complexes, un exemple vaut mieux qu'un long discours :
Pour annuler une série de changements dans une région, la commande est : Ctrl+u Ctrl+x u, cela signifie que vous devez taper :

Ctrl+u, lâchez les touches (au moins le 'u'), puis :
Ctrl+x, lâchez les touches, puis :
u

Le curseur

Pour déplacer dans emacs, c'est simple : on utilise les touches fléchées (haut pour aller en haut, etc. ;). Les combinaisons de touches peuvent aussi être utilisées. Notez que les combinaisons précédées de Alt ont une portée plus grande (généralement sur des mots) que celles précédées par Ctrl.

Vous disposez également des combinaisons suivantes :

Combinaison de touche
Effet
Combinaison de touche
Effet
Ctrl+a
Début de ligne
Ctrl+e
Fin de ligne
Ctrl+f
Un caractère à droite (Forward)
Alt+f
Un mot à droite
Ctrl+b
Un caractère à gauche (Backward)
Alt+b
Un mot à gauche
Ctrl+n
Une ligne en bas (Next)
Ctrl+p
Une ligne en haut (Previous)
Ctrl+<
Début de ligne
Ctrl+>
Fin de ligne (nécessite shift)

Effacer du texte

Combinaison de touche
Effet
Combinaison de touche
Effet
<DEL>
Efface le caractère avant le curseur
Alt+<DEL>
Efface jusqu'au début du mot précédant le curseur
Ctrl+d
Efface le caractère après le curseur
Alt+d
Efface jusqu'à la fin du mot suivant le curseur
Ctrl+k
Efface la ligne sous le curseur (Kill)
Alt+k
Efface jusqu'à la fin du texte
Ctrl+x u
Annule le dernier changement
Ctrl+_ (souligné)
Annule le dernier changement
Ctrl+u Ctrl+x u
Annule une série de changement dans cette région
Ctrl+x Ctrl+o
Efface les lignes blanches suivant le curseur
Alt+z <CHAR>
Efface jusqu'à la prochaine occurrence du caractère <CHAR>

Gestion des fichiers

Combinaison de touche
Effet
Combinaison de touche
Effet
Ctrl+x Ctrl+f <NOM>
Ouvre (ou crée s'il n'existe pas) le fichier <NOM>
Ctrl+x Ctrl+r <NOM>
Ouvre un fichier en interdisant les changements
Ctrl+x 4 f <NOM>
Ouvre (ou crée s'il n'existe pas) le fichier <NOM> dans une autre [#fenetres fenêtre] (partage l'écran)
Ctrl+x 5 f <NOM>
Ouvre (ou crée) le fichier <NOM> dans un autre cadre (ne partage pas l'écran)
Ctrl+x Ctrl+s
Sauve le fichier sous son nom (Save)
Ctrl+x s
Permet de sauvegarder tous les fichiers ouverts (après confirmation de l'utilisateur)
Ctrl+x Ctrl+w
Sauve le fichier sous un autre nom (Write)
Ctrl+x b
Permet d'afficher un autre fichier déjà ouvert

Attention :

Pour créer un nouveau fichier ne lancez pas emacs sans paramètre. Lancez le en précisant un nom de fichier inexistant ; il sera créé par emacs. Ou lancez emacs sans paramètre, puis ouvrez un fichier inexistant.

Histoires d'encodage : Lorsque l'on fait de la programmation, on arrive tôt ou tard à des problèmes d'encodage de fichiers. Avec Emacs, on peut facilement redéfinir l'encodage d'un fichier pour en changer l'encodage par exemple.

Voici la solution : c-x RET f

Ensuite le prompt accepte la completion donc iso-8859-15 ou utf-8 a vous de jouer.

Répétition de commande

Vous pouvez préciser à emacs de répéter une commande plusieurs fois. Pour cela vous devez la précéder d'un des préfixes suivants :

Combinaison de touche
Effet
Ctrl+u <NOMBRE> <COMMANDE>
Répète <COMMANDE> <NOMBRE> fois
Ctrl+u <COMMANDE>
Répète <COMMANDE> quatre fois

Vous pouvez également dire à emacs de répéter la dernière commande en tapant :

Ctrl+x z

à la suite de la dite commande. Exemple :

Ctrl+u 20 Ctrl+d (efface 20 caractères) Ctrl+x z z (efface encore 20 (premier z) + 20 (second z) caractères supplémentaires).

Les régions

Création des régions

Dans d'autres éditeurs, on peut sélectionner du texte avec le curseur (par exemple en maintenant la touche <shift> enfoncée). On peut évidement sélectionner du texte avec emacs, mais il ne fonctionne pas exactement comme peut s'y attendre l'utilisateur d'autres éditeurs. Dans emacs la zone sélectionnée est toujours définie entre une marque déposée par l'utilisateur et la position précédant le curseur (plus précisément entre la position du curseur et la position précédant celle-ci). Ainsi, pour définir une région, vous déposez une marque (voir ci-dessous) à une extrémité de la région, puis vous déplacez le curseur à l'autre extrémité.

Alors comment déposer cette marque ?

Ctrl+<espace>

ou

Ctrl+@

Attention : la marque est invisible ! Pour voir où elle se trouve, utilisez :

Ctrl+x Ctrl+x

qui échange la position du curseur avec la position de la marque. Utilisez-la une seconde fois pour revenir à la position précédente.

Attention : c'est un échange effectif : la marque devient la position du curseur !

Attention : à partir du moment ou vous avez posé la marque, il existe toujours une région !

Copier/Couper/Coller

Combinaison de touche
Effet
Combinaison de touche
Effet
Ctrl+w
Efface la région et la dépose dans le buffer (idem couper)
Alt+w
Copie la région dans le buffer
Ctrl+y
Colle (Yank) le texte précédemment coupé
Alt+y
Colle tous les textes précédemment coupés
Ctrl+Alt+w
Ajoute la région à la région déjà présente dans le buffer

Modification des régions

Combinaison de touche
Effet
Combinaison de touche
Effet
Ctrl+x Ctrl+u
Met la région en majuscule (Uppercase)
Ctrl+x Ctrl+l
Met la région en minuscule (Lowercase)
Ctrl+x <TAB>
Indente la région

Régions rectangulaires

Combinaison de touche
Effet
Ctrl+x r k
Coupe la région rectangulaire
Ctrl+x r d
Efface la région rectangulaire (pas dans le buffer)
Ctrl+x r y
Colle la région rectangulaire précédemment coupée
Ctrl+x r t <RET> chaîne <RET>
Ajoute « chaîne » au début de toute les ligne de la région rectangulaire

Les fenêtres d'emacs

Les fenêtres au sens d'emacs, ne sont pas celles que l'on a l'habitude de voir : elles ne peuvent pas se recouvrir ! Si vous voulez utilisez emacs avec des fenêtres qui se recouvrent, il faut voir du côté des cadres (frame) que je ne décrirais pas ici.
Les fenêtres d'emacs sont des zones rectangulaires qui divise la fenêtre (au sens X Window) d'emacs verticalement ou horizontalement.

Pour diviser l'écran d'emacs en deux fenêtres et les manipuler, il faut utiliser :

Combinaison de touche
Effet
Ctrl+x 2
pour couper horizontalement en 2 la fenêtre où se trouve le curseur
Ctrl+x 3
pour couper verticalement en 2 la fenêtre où se trouve le curseur
Ctrl+x o (other)
pour changer de fenêtre active
Ctrl+x 1
pour ne garder que la fenêtre du curseur
Ctrl+x 4 Ctrl+f <NOM>
pour ouvrir un fichier dans une autre fenêtre
Ctrl+x 4 d <NOM>
pour afficher le contenu d'un répertoire dans une autre fenêtre
Ctrl+x 5 2
pour ouvrir une nouvelle fenêtre avec le contenu du buffer courant

Quelques modes et fonctions d'Emacs

par POINT dumur CHEZ free POINT fr Hélène

A l'attention de ceux qui utilisent ce "couteau suisse" et qui ne parlent pas un mot de Lisp !.

Généralités

Un mode d'Emacs est schématiquement, une fonction, qui serait appelée à chaque chargement d'un fichier donné, ou automatiquement au lancement d'Emacs. Dans ce cas, une ligne sera rajoutée dans le fichier de configuration .emacs.

On pourrait aussi parler de bibliothèque, de librairies, qui sont ajoutées au programme principal pour en augmenter les fonctionnalités.

Cette "fonction" se présente comme un fichier .el écrit en Lisp, (parfois d'une archive de plusieurs fichiers), qui sera copié dans un sous-répertoire donné où Emacs pourra aller le lire et l'utiliser.

Que fait-on avec ce fichier (cette archive) une fois téléchargée ?

  1. S'il s'agit d'un fichier seul (c'est le cas le plus simple)
    • copier ce fichier dans le sous-répertoire adéquat /usr/share/emacs/site-lisp/ par exemple
    • lire les commentaires au début du fichier, qui vous fourniront pas mal d'indications sur les modalités d'utilisation et d'installation du programme.

On peut aussi, pour des raisons de rapidité et d'efficacité, compiler le programme, avec l'instruction M-x byte-compile-file NOM-DU-FICHIER RET, ou, en mode Dired avec B sur le nom du fichier, mais ce n'est pas du tout obligatoire.

N.B. Si vous ne savez pas où mettre le fichier .el, regardez où sont les autres fichiers .el dans votre arborescence... ou, si vous voulez le mettre ailleurs, il ne faudra pas oublier de rajouter dans le .emacs une ligne qui ressemblerait à ça (à adapter à chaque cas personnel) (setq load-path (cons "/home/helen/softs/" load-path))

Une fois ceci fait, il suffira de rajouter une ligne au .emacs (et de relancer Emacs, bien sûr) pour pouvoir utiliser cette nouvelle fonction.

  1. S'il s'agit d'une archive (.tar.gz)
    • Décompresser l'archive selon la méthode habituelle/li>
    • Lire les fichiers README et INSTALL. Dans ce dernier, vous trouverez toutes les indications pour l'installation des différents fichiers requis. La plupart du temps, il suffira d'exécuter les commandes ./configure, make et make install pour que l'installation soit effective.
    • Enfin, bien sûr, on rajoutera les options de configuration dans le .emacs, comme vu ci-dessus.

Ecouter des mp3

Emacs est un fantastique éditeur de textes, mais parfois, en travaillant avec lui, on peut avoir envie d'écouter de la musique, et ceci, sans avoir à utiliser un autre programme. La fonction mpg123.el est faite pour ça !

Il faut bien sûr avoir sur son disque dur le programme mpg123, qui est fourni avec la plupart des distributions, ou qui peut être téléchargé et installé sans difficultés (voir la logithèque de Léa), la fonction mpg123.el en sera le front end.

  • Une fois récupéré le fichier mpg123.el, le copier dans le sous-répertoire /usr/share/emacs/site-lisp/
  • puis, ouvrir son .emacs, et rajouter la ligne : (autoload 'mpg123 "mpg123" "A Front-end to mpg123" t)

La fonction autoload permet de dire à Emacs qu'une fonction existe, et dans quel fichier. Il se chargera ensuite de charger le fichier en question au premier appel de cette fonction.

  • Relancer Emacs, pour que le changement de configuration soit pris en compte. (ou simplement taper M-x load-file RET ~/.emacs, ce qui a pour effet d'évaluer le fichier, c'est à dire lire les indications qu'il contient )
  • Ensuite, taper M-x mpg123 RET. Il vous sera demandé le chemin du fichier (ou du sous-répertoire dans lequel sont les fichiers) à écouter et « let's listen the music ! » comme il est conseillé dans le minibuffer.

A ce niveau là, on se trouve devant une fenêtre à partir de laquelle on va pouvoir piloter son écoute musicale avec une vingtaine d'options (réglage du son, choix des pistes, pause, retour en arrière, avance, etc...) il suffit de lire et de choisir la touche à taper ! Et bien sûr, personne ne vous empêche de continuer votre travail dans une autre fenêtre !

On peut écouter aussi ses .ogg, puisque le front end fonctionne aussi avec ogg123 (voir la logithèque de Léa).

Corriger ses fautes d'orthographe à la volée

Ispell est un correcteur orthographique bien connu. Pour l'utiliser en langue française, il est recommandé d'adjoindre à son .emacs la ligne suivante :

(setq ispell-dictionary "francais")

On l'appelera ensuite avec M-x ispell-buffer, ou ispell-region selon ce que l'on souhaite. Mais si on veut qu'au fur et à mesure de la frappe, les fautes soient signalées ? Flyspell est fait pour ça !

Si vous n'avez pas déjà flyspell.el dans votre distribution, vous pouvez le télécharger à l'INRIA. Ensuite, vous rajouterez (setq flyspell-default-dictionary "francais") dans votre .emacs, afin de pouvoir l'appeler quand vous en aurez besoin, et avoir un dictionnaire français.

Trois façons de l'utiliser

On peut simplement taper M-x flyspell-mode RET pour activer le mode de correction à la volée.

Bien entendu, on peut aussi automatiser son chargement en ajoutant

(autoload 'flyspell-mode "flyspell" "On-the-fly spelling checker." t)

au .emacs, ce qui le rendra opérationnel à chaque lancement d'Emacs (mais ce n'est pas forcément souhaitable, à vous de voir..).

Enfin, on peut l'appeler à volonté, en lui affectant une touche : par exemple, après avoir rajouté dans le .emacs

;; Pour que F2 lance flyspell
(global-set-key [f2] 'flyspell-mode)

en tapant F2 on lancera le mode de correction automatique.

Flyspell changera la couleur du mot mal orthographié, ou inconnu de son dictionnaire. Un appui sur le bouton du milieu de la souris fera apparaître un menu contextuel qui permet, soit de corriger le mot, en utilisant un de ceux qui sont proposés, soit de l'ajouter au dictionnaire, soit de l'accepter pour cette session ou pour ce buffer uniquement. Les doublons seront marqués d'une autre couleur.

À noter que Flyspell est très pratique en édition LaTeX puisqu'il sait reconnaître les balises TeX et ne pas s'y arrêter. On peut rajouter

(add-hook 'LaTeX-mode-hook 'flyspell-mode)

à cet effet.

Editer ses scripts POV confortablement

Les scripts POV-ray sont de simples fichiers texte, et bien entendu, un simple éditeur de texte permet de les éditer, donc Emacs le peut ! Mais il peut faire beaucoup plus aussi... On voudrait avoir une coloration syntaxique agréable, bien pratique pour corriger un script et le mettre au point, avoir des indentations automatiques, et aussi lancer le rendu des images sans avoir à ouvrir une seconde fenêtre où on ouvrira un shell ( M-x shell ou eshell selon les habitudes de chacun) pour lancer la commande adéquat. pov-mode.el le fait !

L'installation de ce fichier est identique à ce qui a été vu plus haut, il sera copié à l'endroit où Emacs pourra le retrouver. Ensuite, c'est tout simple, il suffit d'ouvrir un fichier avec l'extension .pov pour bénéficier des avantages de ce mode. Ne pas oublier toutefois d'ajouter ces quelques lignes dans le .emacs :

(autoload 'pov-mode "pov-mode.el" "PoVray scene file mode" t) (add-hook 'pov-mode-hook 'turn-on-font-lock) pour la coloration syntaxique.

Ensuite, sans quitter le buffer actif, un simple C-c C-c (avec choix possible quant à la qualité, la définition, etc..) lancera le rendu..

Plus de détails sur le site : http://www.acc.umu.se/~woormie/povray/.

Avoir des scripts php/html lisibles...

Emacs a de nombreux modes pour faire de la programmation en de nombreux langages. Comme pour POV, ils permettent les indentations, la coloration syntaxique, etc... et sont spécifiques au langage choisi (C, lisp, php, html).

Donc, si on édite un fichier .php, il suffit d'avoir php-mode.el et au lancement d'un fichier .php, les fonctionnalités incluses dans ce mode seront immédiatement actives. De même, avec html pour lequel il existe plusieurs modes.

Toutefois, si on édite un fichier html, dans lequel il y a des lignes de php, par exemple, la coloration syntaxique "s'emmêle les pieds", ce que comprend un mode, l'autre l'interprète mal, et le résultat devient bien difficile à lire... C'est là que mmm-mode (ou multi mode, mmm étant l'abréviation de multi major modes) est indispensable.

Ce mode pourra soit être appelé à la demande, soit automatiquement lors du lancement d'Emacs, et dans ce cas, à l'ouverture d'un fichier d'extension .php, il sera opérationnel.

mmm-mode s'installe de façon tout à fait standard : décompresser l'archive, lire le fichier INSTALL, taper successivement :

./configure
make
make install

Normalement, les fichiers doivent être arrivés au bon endroit de l'arborescence pour être trouvés par Emacs.. ensuite, il suffira d'une ligne (require 'mmm-mode) pour que tout soit opérationnel.

À ce niveau, dans votre script html, vous verez vos lignes php surlignées d'une couleur différente, les instructions seront aussi colorisées, etc.. et vous n'aurez plus d'excuse pour générer des erreurs !!!

Plus de renseignements sur le site d'XEmacs.

Bien entendu, si les couleurs ne vous plaisent pas, vous avez tout loisir de les personnaliser, mais là, ça n'a plus rien à voir avec notre sujet, et pourrait faire l'objet d'un autre article.

Visualiser des images

Le mode thumbs permet d'afficher dans un buffer les vignettes des images contenues dans un sous répertoire
Il utilise les fonctionnalités du programme Convert d'ImageMagick (qu'il est donc indispensable d'avoir installé)
Il fonctionne en mode Dired

Installation

  1. Télécharger le mode thumbs.el ICI
  2. Copier ce fichier là où se trouvent les autres .el, par exemple :
    /usr/share/emacs/site_lisp/thumbs.el
  3. Rajouter dans son .emacs :
    (autoload 'thumbs-show-all-from-dir "thumbs" "Preview images in a directory." t)

Fonctionnement

<key>CTRL h m</key>
permet d'afficher l'aide
<key>CTRL t a</key>
ouvre un buffer contenant toutes les images du sous-répertoire courant
<key>CTRL t m</key>
ouvre un buffer contenant les seules images marquées auparavant par la commande m (du mode Dired)
<key>RETURN</key>
sur la vignette active ouvre l'image agrandie dans un buffer

Ensuite, à partir de cette image, quelques raccourcis permettent d'effectuer rapidement et simplement des tâches de base :

touche action remarque
<key>q</key> thumbs-kill-buffer
<key>s</key> thumbs-save-current-image
<key>r</key> thumbs-resize-interactive il est alors demandé la largeur et la hauteur en pixel
<key>e</key> thumbs-emboss-image choisir un nombre impair entre 3 et 31
<key>></key> thumbs-rotate-right
<key><</key> thumbs-rotate-left
<key>+</key> thumbs-resize-image-size-up
<key>-</key> thumbs-resize-image-size-down
<key>next</key> thumbs-next-image
<key>prior</key> thumbs-previous-image

D'autres manipulations sont possibles en utilisant les commandes complètes : (utiliser la complétion M-x thumbs... pour le voir toutes et les lancer)

thumbs-backward-line thumbs-dired thumbs-dired-show-all
thumbs-find-image-at-point-other-window thumbs-find-thumb thumbs-forward-line
thumbs-mark thumbs-modify-image thumbs-negate-image
thumbs-set-image-at-point-to-root-window thumbs-set-root thumbs-show-name
thumbs-delete-images thumbs-dired-setroot thumbs-dired-show-marked
thumbs-find-image-at-point thumbs-forward-char thumbs-monochrome-image
thumbs-show-all-from-dir thumbs-view-image-mode


A noter qu'il n'y a pas de raccourci clavier d'origine pour les modes monochrome, et négatif, par exemple, comme e pour emboss.

Pour utiliser l'option modify-image, il est nécessaire de connaître les modifications possibles.. et d'en savoir les paramètres... donc, de connaître les commandes de l'outil Convert d'ImageMagick !


Conclusion

Un mode d'Emacs rapide, facile à mettre en oeuvre, un outil très utile quand Emacs est votre principal environnement de travail. Voir immédiatement les photos (images) contenues dans un sous-répertoire, les redimensionner, ou les retourner, sans avoir à ouvrir une autre application est bien pratique. Par contre, pour effectuer des manipulations précises et poussées sur des images, il est préférable d'utiliser autre chose, Gimp par exemple.




@ Retour à la rubrique Administration système

@ Retour à la rubrique Logiciels

Cette page est issue de la documentation 'pré-wiki' de Léa et a été convertie avec HTML::WikiConverter. Elle fut créée par Frédéric Bonnaud le 12/05/2000.

Copyright

Copyright © 12/05/2000, Frédéric Bonnaud

Creative Commons License
Creative Commons Attribution iconCreative Commons Share Alike icon
Ce document est publié sous licence Creative Commons
Attribution, Partage à l'identique 4.0 :
https://creativecommons.org/licenses/by-sa/4.0/