2017-02-01 4 views
1

Ich benutze Colemak Tastaturlayout und die konventionellen Vim 'hjkl' sind nicht komfortabel. In meinem .vimrc habe ich folgendes hinzugefügt, um 'hjkl' durch 'neio' (und umgekehrt) zu ersetzen.Emacs Evil-Modus - Wie neu '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 

Wenn möglich, wie kann ich dies in Emacs mit Spacemacs tun?

Antwort

2

Hier ist, wie hjkl in gebunden sind:

(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) 

Sie ähnliche Linien mit Ihrem eigenen Schlüssel in Ihrem init.el die Richtungen zu binden setzen können zu welchem ​​Schlüssel Sie wollen. Sie müssen auch hjkl erneut binden, vorausgesetzt, Sie möchten nicht, dass sie in ihrer ursprünglichen Richtung bleiben.

EDIT: ersetzen hjkl mit neio Ich glaube, Sie werden i und o in evil-normal-state-map entbinden müssen:

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

Zuerst habe ich die geänderte 'hjkl' und 'neio' zu 'init.el' hinzugefügt, aber das hat nicht funktioniert. Ich habe dann die Änderungen in 'init.el' zurückgesetzt und die Schlüssel direkt in' evil-maps.el' geändert. Gleiches Ergebnis. Andere Abbildungen scheinen zu funktionieren, aber "ich" und "o" können immer noch nicht für die Bewegung verwendet werden. Danke trotzdem! – lillemets

+1

@lillemets sehen, ob meine Änderung hilft. –

1

Sie diese Änderungen auch in .spacemacs machen kann. Ich konnte die evil-maps.el nicht finden, aber die FAQ empfiehlt, sie in user-config zu ändern.

(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

warten! das ist fürchterlich. Jetzt können Sie den Einfügezustand nicht mit "i" verwenden. Was werden Sie tun, verwenden Sie immer Append-Zustand "a". ? Nette Colemak Bewegung, scheint aber ein kleines Problem zu haben. –

+2

Diese Neuzuordnung wird auch vom Paket bösen-colemak-basics übernommen. https://github.com/syl20bnr/spacemacs/pull/7178 –

+0

nicht genau, aber es kommt in der Nähe: Evil-Colemak-Grundlagen verwendet eine Variante: behält "Hnei" für Pfeile und zielt auf "Muskel-Gedächtnis-Kompatibilität". –

1

hjkl in QWERTY ist hnei in Colemak, nicht neio. Ich sehe, warum Sie neio verwenden möchten, da dies alle Pfeile direkt unter Ihre Finger bringt (anstatt eine Position nach links verschoben), aber das ist nicht unbedingt eine gute Sache: down/up (jk auf qwerty) werden häufig verwendet, und benutze die zwei stärksten Finger.

QWERTY hjkl (Colemak hnei) ist eigentlich ziemlich ergonomisch, für mich so es Sinn, diese zu halten macht, wenn Colemak verwenden. und natürlich viele Jahre Muskelerinnerung zu verlernen ist ein weiterer Grund, dabei zu bleiben.

Halten hnei für die Navigation und sinnvoll Umgang mit den Folgen ist genau das, was ich mit meinem evil-colemak-basics Paket erreicht habe. Vielleicht sollten Sie sich die Dokumentation ansehen, da es eine ausführliche Beschreibung des Designs enthält. vielleicht wirst du es sogar am Ende benutzen. :)

+1

Messepunkt. Ich kam vor kurzem zu dem gleichen Schluss: keine Notwendigkeit, alle Pfeile unter den Fingern zu haben, solange oben/unten da sind. Ich könnte 'hnei' versuchen. – lillemets