首页 文章

emacs evil-mode中ex命令的关键映射

提问于
浏览
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

但是这个功能似乎不再可用了 .

1 回答

  • 6

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

    • 按下并释放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/")))

相关问题