在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)))
它将在正常和视觉模式下工作,但不在visual line(即大写V)模式下工作。
我是Emacs的新手,来自Vim。
查看源代码,让我们这样做:
(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)
如果您有
(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)
...
)
以取代CCD_ 7+CCD_。
来源:https://bitbucket.org/lyro/evil/issues/395/cant-use-evil-next-line-in-a-script-in-a