我的.emacs
(define-key evil-normal-state-map "\M-j" (lambda () (interactive) (evil-next-line 5)))
使文件中的导航更容易。例如,使用M-j
我会在下面的5行,所以我不必按j
5次。我为所有hjkl
做同样的事情。麻烦的是这个命令污染了邪恶(点)中的最后一次重复,所以让我说我替换给定行中的一个单词,然后我做M-j
来改变一个单词5以下几行。如果我按.
,它将跳过下面的另外5行,而不是像在Vim中那样替换该单词。如果我使用hjkl
中的任何一个,它将不会污染上次重复。如何才能使我的功能不会污染上次重复?
编辑:我刚刚注意到\M-j
和\M-k
实际上并没有发生,只有\M-h
和\M-l
,所以这个问题更加陌生。两者都定义为:
(define-key evil-normal-state-map "\M-h" '(lambda () (interactive) (evil-backward-char 5)))
(define-key evil-normal-state-map "\M-l" '(lambda () (interactive) (evil-forward-char 5)))
答案 0 :(得分:1)
只需用defun说:(defun my-5-lines-down...)
替换lambda然后(evil-declare-motion 'my-5-lines-down)
在邪恶(可能是vim?)中,动作不算是可重复的,所以这应该可以解决问题。或者,如果您想控制跳转列表,则可以使用evil-define-motion
而不是defun。请参阅documentation以定义动作。