7

在 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

但该功能似乎不再可用。

4

1 回答 1

7

如果您的意思是绑定组合键

  1. 按下并释放 g
  2. 按下并释放 /
  3. 按下并释放 r

你的字符串kdb应该是"g / r".

Emacs 不像 vim 那样基于击键,但击键只是执行功能的一种手段。因此,在正常模式下按下k不会执行该功能k(如在 vim 中),但self-insert-char. 这意味着您不会将组合绑定g / r到等于其他一些击键,而是调用任意函数。而 evil 定义了一个evil-ex函数,它完全按照您的意愿执行(实际上,它就是您:在正常模式下按下时调用的确切函数)。

未经测试,但它应该工作

(define-key evil-normal-state-map (kbd "g / r") (lambda () (evil-ex "%s/")))

于 2013-12-07T23:34:36.137 回答