如何在emacs邪恶模式下保持M-x的传统绑定

时间:2013-10-18 16:19:40

标签: emacs elisp evil-mode

我试图在邪恶的正常模式下将execute-extended-command绑定到M-x。 我目前有

;; evil mode
(require 'evil)
(evil-mode 1)

(define-key evil-normal-state-map "M-x" 'execute-extended-command)

在我的.emacs文件中,但是键绑定不起作用。我试过替换

"M-x"

"\M-x"

(kbd "M-x")

但不起作用。我也尝试将它添加到evil.el和evil-maps.el。

2 个答案:

答案 0 :(得分:1)

我不知道你的绑定有什么问题。您可以使用Emacs自己的global-set-key作为全局内容,如果您计划一些特殊的内容,例如插入模式,您可以稍后覆盖它,如下所示:

 ;; this works, just tested. My evil is 1.0-dev from github.
 (global-set-key (kbd "M-x") 'smex)
 (define-key evil-insert-state-map (kbd "M-x") 'execute-extended-command)

在绑定中有修饰键时使用(kdb "")宏。但是无论内容如何,​​您都可以始终使用宏。这些是例如用法。如有疑问,请将密钥包装在(kdb )

 (global-set-key (kbd "M-x") 'smex)
 (global-set-key (kbd "M-X") 'smex-major-mode-commands)
 ;;(global-set-key (kbd "M-x") 'execute-extended-command)

 (define-key evil-normal-state-map ",d" 'volatile-kill-buffer)
 (define-key evil-normal-state-map ",b" 'ido-switch-buffer)
 (define-key evil-normal-state-map ",s" 'ispell-word)

 (define-key evil-normal-state-map (kbd "C-x g") 'magit-status)
 (define-key evil-insert-state-map (kbd "C-f") 'my-expand-file-name-at-point)
 (define-key evil-insert-state-map (kbd "C-x C-l") 'my-expand-lines)

 (define-key minibuffer-local-map (kbd "C-w") 'backward-kill-word)
 (define-key evil-normal-state-map (kbd ",ff") 'ido-find-file)

答案 1 :(得分:1)

经过长时间的研究,并在irc上的#emacs和#evil-mode频道的帮助下,结果证明我的emacs已被破坏。这是来自http://emacs.naquadah.org/的快照我在另一个emacs版本(来自debian jessies repos)上尝试了所有这些并且它工作正常。