在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
,它将输入发送到evil-mode命令行:
https://github.com/magnars/.emacs.d/blob/master/site-lisp/evil/evil-ex.el#L554
但是这个功能似乎不再可用了 .
1 回答
如果您的意思是绑定组合键
按下并释放g
按下并释放/
按下并释放r
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/")))