Emacs邪恶的键绑定与邪恶的视觉状态地图无法正常工作

时间:2014-09-11 14:30:11

标签: vim emacs

在Vim中,我有这个用于导航的键绑定:noremap <M-j> 5j。这将适用于普通视觉视觉线模式。

我希望在Emacs中有相同的行为,所以我做了:

(define-key evil-visual-state-map "\M-j" '(lambda () (interactive) (evil-next-line 5)))

(define-key evil-motion-state-map "\M-j" '(lambda () (interactive) (evil-next-line 5)))

它可以在正常视觉模式下工作,但不能在视觉线模式下工作(即大写 V )。

我是Emacs的新手,来自Vim。

2 个答案:

答案 0 :(得分:2)

查看来源,让我们这样做:

(evil-define-motion myevil-next-visual-line (count)
"Move the cursor COUNT screen lines down, or 5."
:type exclusive
  (let ((line-move-visual t))
  (evil-line-move (or count 5))))

(define-key evil-visual-state-map "\M-j" 'myevil-next-visual-line)

答案 1 :(得分:0)

如果你有

(defun godown() (interactive) (evil-next-line 5)) (define-key evil-visual-state-map "\M-j" 'godown)

然后您可以添加

(evil-declare-motion 'godown)

或者你可以使用

(evil-define-motion godown () (interactive) ... )

替换defun + evil-declare-motion组合。

来源:https://bitbucket.org/lyro/evil/issues/395/cant-use-evil-next-line-in-a-script-in-a