在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。
答案 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