我的 .emacs
中有以下行
(定义键邪恶正常状态映射“\M-j”(lambda()(交互式)(邪恶下一行5)))
这使得文件中的导航更加容易。例如,使用 M-j
我会转到下面 5 行,因此我不必按 j
5 次。我对所有 hjkl
都做同样的事情。问题是这个命令污染了 Evil 中的最后一个重复(点),所以假设我替换了给定行中的一个单词,然后我执行 M-j
进行更改下面5行一个字。如果我按 .
,它会跳到下面另外 5 行,而不是像 Vim 中那样替换单词。如果我使用任何 hjkl
,它不会污染最后的重复。我该如何做才能使我的函数不会污染最后的重复?
编辑:我刚刚注意到,它实际上并没有发生在 \M-j
和 \M-k
上,而只发生在 \M-h
和 \M-l
,所以问题就更奇怪了。两者都定义为:
(定义键邪恶正常状态映射“\M-h”'(lambda()(交互式)(邪恶向后字符5)))
(定义键邪恶正常状态映射“\M-l”'(lambda()(交互式)(邪恶转发字符5)))
最佳答案
只需用 defun 替换 lambda:(defun my-5-lines-down...)
,然后 (evil-declare-motion 'my-5-lines-向下)
在邪恶(可能还有 vim?)的情况下, Action 不算是可重复的,所以这应该可以解决问题。或者,如果您想控制跳转列表,您可以使用 evil-define-motion
而不是 defun 。请参阅documentation用于定义运动。
关于vim - Emacs 邪恶 "repeat"(点)行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26519331/