在emacs evil-mode中,如何绑定一个键序列,以便预先填充evil-mode ex命令行并定位光标?在vim中,我可以这样做:
nnoremap g/r :%s//g<left><left>
在emacs中,我尝试了这个(和几个变体):
(define-key evil-normal-state-map "g/" nil)
(define-key evil-normal-state-map (kbd "g/r")
(lambda () (interactive) (kbd ":%s/")))
它没有任何效果,我在尝试键映射后看不到任何消息。
看起来emacs曾经有一个有用的函数evil-ex-read-command
,它将输入发送到邪恶模式命令行:
https://github.com/magnars/.emacs.d/blob/master/site-lisp/evil/evil-ex.el#L554
但是这个功能似乎不再可用了。
答案 0 :(得分:6)
如果您要绑定组合键
kdb
中的字符串应为"g / r"
。
Emacs并不像vim那样基于击键,但击键只是执行函数的一种方法。因此,在正常模式下按k
不会执行函数k
(如在vim中),而是self-insert-char
。这意味着您不会将组合g / r
绑定到等于其他一些键击,而是调用任意函数。而且邪恶定义了一个evil-ex
函数,它完全符合您的要求(实际上它是确切的函数,当您在正常模式下按:
时调用它。)
未经测试但应该可以正常使用
(define-key evil-normal-state-map (kbd "g / r") (lambda () (evil-ex "%s/")))