2017-02-01 5 views
1

J'utilise la disposition de clavier Colemak et les Vim 'hjkl' classiques ne sont pas confortables. Dans mon .vimrc j'ai ajouté ce qui suit pour remplacer 'hjkl' avec 'neio' (et et vice versa).Emacs Evil mode - Comment remapper 'hjkl'?

noremap n h 
noremap e j 
noremap i k 
noremap o l 

noremap h n 
noremap j e 
noremap k i 
noremap l o 

noremap N H 
noremap E J 
noremap I K 
noremap O l 

noremap H N 
noremap J E 
noremap K I 
noremap L O 

Si possible, comment puis-je faire cela dans Emacs avec Spacemacs?

Répondre

2

Voilà comment hjkl sont liés à :

(define-key evil-motion-state-map "h" 'evil-backward-char) 
(define-key evil-motion-state-map "j" 'evil-next-line) 
(define-key evil-motion-state-map "k" 'evil-previous-line) 
(define-key evil-motion-state-map "l" 'evil-forward-char) 

Vous pouvez mettre des lignes similaires avec vos propres clés dans votre init.el pour lier les directions à clés selon que vous voulez. Vous devrez également relier hjkl, en supposant que vous ne souhaitiez pas les laisser à leurs liaisons de direction d'origine.

EDIT: pour remplacer hjkl avec neio je crois que vous aurez besoin de délier i et o dans evil-normal-state-map:

(define-key evil-normal-state-map "i" nil) 
(define-key evil-normal-state-map "o" nil) 
+0

J'ai d'abord ajouté les 'hjkl' et 'neio' modifiés à 'init.el' mais cela n'a pas fonctionné. J'ai ensuite inversé les changements dans 'init.el' et changé les clés directement dans' evil-maps.el'. Même résultat D'autres mappages semblent fonctionner, mais 'i' et 'o' ne peuvent toujours pas être utilisés pour le mouvement. Merci quand même! – lillemets

+1

@lillemets voir si mon edit aide. –

1

Vous pouvez faire ces changements dans .spacemacs. Je ne pouvais pas trouver le evil-maps.el, mais le FAQ recommande de les changer dans user-config.

(defun dotspacemacs/user-config() 
;; colemak config 
;; Make evil-mode up/down operate in screen lines instead of logical lines 
(define-key evil-normal-state-map "i" nil) 
(define-key evil-normal-state-map "o" nil) ;;neio back,up,down,next 
(define-key evil-motion-state-map "i" 'evil-next-visual-line) 
(define-key evil-motion-state-map "e" 'evil-previous-visual-line) 
(define-key evil-motion-state-map "n" 'evil-backward-char) 
(define-key evil-motion-state-map "o" 'evil-forward-char) 
;; Also in visual mode 
(define-key evil-visual-state-map "i" 'evil-next-visual-line) 
(define-key evil-visual-state-map "e" 'evil-previous-visual-line) 
+0

attends! c'est terrible. Maintenant, vous ne pouvez pas utiliser l'état d'insertion avec "i". Qu'allez-vous faire, utilisez toujours l'état "a". ? Bon mouvement Colemak, mais semble avoir un petit problème. –

+2

Ce remappage est également géré par le paquetage evil-colemak-basics. https://github.com/syl20bnr/spacemacs/pull/7178 –

+0

pas exactement mais il se rapproche: evil-colemak-basics utilise une variante: garde "hnei" pour les flèches, et vise pour "compatibilité mémoire musculaire". –

1

hjkl dans azerty est hnei dans Colemak, non neio. Je vois pourquoi vous voudrez utiliser neio puisque cela amène toutes les flèches juste sous vos doigts (au lieu de changer de position vers la gauche), mais ce n'est pas forcément une bonne chose: down/up (jk on qwerty) sont fréquemment utilisés, et utilisez les deux doigts les plus forts.

qwerty hjkl (colemak hnei) est en fait assez ergonomique, donc pour moi, il est logique de garder cela lorsque vous utilisez colemak. et bien sûr, désapprendre de nombreuses années de mémoire musculaire est une autre raison de s'en tenir à cela.

en gardant hnei pour la navigation et faire face aux conséquences est exactement ce que j'ai réalisé avec mon package evil-colemak-basics. vous voudrez peut-être consulter sa documentation, car il a une longue description de la conception. peut-être que vous finirez même par l'utiliser. :)

+1

Fair point. Récemment, je suis arrivé à la même conclusion: pas besoin d'avoir toutes les flèches sous les doigts tant que les haut/bas sont là. Je pourrais essayer 'hnei'. – lillemets