Evil

De Disposition de clavier bépo
Révision datée du 7 février 2012 à 23:28 par Damien thiriet (discussion | contributions) (Page créée avec « Evil (Extensible VI Layer for emacs) est le dernier-né des émulateurs vim pour emacs, apparamment plus abouti que ses prédecesseurs. Ses principaux développeurs sont F... »)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)

Evil (Extensible VI Layer for emacs) est le dernier-né des émulateurs vim pour emacs, apparamment plus abouti que ses prédecesseurs. Ses principaux développeurs sont Frank Fischer et Vegard Oye, et le projet avance assez vite grâce à une communauté active. Une grande partie des fonctions de vim est émulée à ce jour. À la différence des autres émulateurs, evil part des fonctions emacs existantes pour se rapprocher au plus près du fonctionnement de vim. Evil utilise ainsi l’un des atouts majeurs d’emacs, son caractère modulaire. Le langage elisp offre en effet la possibilité d’ajouter un grand nombre d’extension. Avec Evil, il est ainsi possible de combiner la puissance d’emacs et l’ergonomie de vim…

Evil transforme emacs en éditeur modal, en introduisant des états (l’équivalent des modes de vim, le terme n’étant pas repris pour éviter une confusion avec les modes d’emacs, dont evil est un exemple, comme auctex, mouse-wheel, linum, key-chord etc.). Les principaux états, matérialisés par un symbole sur la barre des tâches sont: normal (N), visuel (V), insersion (I), remplacement (R), operateurs (O), motion (M) et emacs (E) — ce dernier correspondant à la desactivation de vim (evil est activé ou desactivé en tapant Ctr-z).

Il est possible de modifier la forme et la couleur du curseur en fonction des modes. Voici ce que cela donne chez moi:

;fait varier la couleur du curseur en fonction du mode
 (setq evil-normal-state-cursor '("red" box)
       evil-visual-state-cursor '("light salmon" box)
       evil-insert-state-cursor '("blue" box)
       evil-replace-state-cursor '("sienna" hbar)
       evil-emacs-state-cursor '("black" box))

Adaptation au bépo:

Voici ce qu’il faut inscrire dans son .emacs pour adapter evil au bépo. Compte tenu des variantes vim-bépo, je me contente des lignes permettant d’intervertir H,J,K,L et C,T,S,R:

;première étape: avant de réaffecter c,t,s,r en h,j,k,l, il faut retirer ces touches de l’agencement de clavier normal-state
(define-key evil-normal-state-map "c" nil)
(define-key evil-normal-state-map "C" nil)
(define-key evil-normal-state-map "s" nil)
(define-key evil-normal-state-map "S" nil)
(define-key evil-normal-state-map "r" nil)
(define-key evil-normal-state-map "R" nil)
(define-key evil-normal-state-map "j" nil)
(define-key evil-normal-state-map "J" nil)
;je redéfinis certaines fonctions pour l’état normal
(define-key evil-normal-state-map "h" 'evil-change)
(define-key evil-normal-state-map "H" 'evil-change-line)
(define-key evil-normal-state-map "T" 'evil-join)
(define-key evil-normal-state-map "l" 'evil-replace)
(define-key evil-normal-state-map "L" 'evil-replace-state)
(define-key evil-normal-state-map "k" 'evil-substitute)
(define-key evil-normal-state-map "K" 'evil-change-whole-line)

Pour en savoir plus:

Emacs wiki

Le site du projet sur gitorious