2017-02-01 41 views
1

我使用Colemak键盘布局和传统的Vim'hjkl'不舒服。在我的.vimrc中,我添加了以下内容,用'neio'代替'hjkl'(,反之亦然)。Emacs邪恶模式 - 如何重映射'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 

如果可能,我该如何在Emacs中用Spacemacs做到这一点?

回答

2

这里的hjkl如何在约束:

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

你可以把类似的行用自己的钥匙放在​​到任何你想要的钥匙方向绑定。您还需要重新绑定hjkl,假设您不希望它们留在原始方向绑定中。

编辑:用neio更换hjkl我相信你需要解除绑定ioevil-normal-state-map

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

我首先在'init.el'中添加了变更的'hjkl'和'neio',但这并没有奏效。然后,我恢复了'init.el'中的更改并直接在'evil-maps.el'中更改了密钥。同样的结果。其他映射似乎可行,但'我'和'o'仍然不能用于移动。不管怎么说,还是要谢谢你! – lillemets

+1

@lillemets看我的编辑是否有帮助。 –

1

您也可以在.spacemacs这些变化。我找不到 evil-maps.el,但FAQ建议在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

等一下!这很糟糕。现在你不能在“i”中使用插入状态。你打算怎么做,总是使用append状态“a”。 ?尼斯Colemak议案,但似乎有一个小问题。 –

+2

这个重新映射也是由evil-colemak-basics包处理的。 https://github.com/syl20bnr/spacemacs/pull/7178 –

+0

不完全,但它接近:邪恶colemak基础使用变化:保持箭头“hnei”,并旨在“肌肉记忆兼容性”。 –

1

在QWERTY hjklhnei在Colemak键盘,不neio。我明白了为什么你可能想要使用neio,因为它将所有箭头都放在你的手指下方(而不是将位置向左移动),但这不一定是件好事:向下/向上(经常使用jk)并使用两个最强的手指。

qwerty hjkl(colemak hnei)实际上是非常符合人体工程学的,所以对我来说在使用colemak时保持这一点很有意义。当然,解除多年肌肉记忆是另一个坚持它的理由。

保持hnei导航和明智地处理后果正是我用我的evil-colemak-basics包实现的。你可能想看看它的文档,因为它有关于设计的大量文章。也许你甚至会最终使用它。 :)

+1

公平点。我最近自己也得出了同样的结论:只要上/下有手指,就不需要手指上所有的箭头。我可能会尝试一下'hnei'。 – lillemets