【问题标题】:How to keep traditional binding on M-x in emacs evil mode如何在 emacs 邪恶模式下保持 M-x 上的传统绑定
【发布时间】:2013-10-18 16:19:39
【问题描述】:

我正在尝试以邪恶的正常模式将 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。

【问题讨论】:

  • 那么您是否特别希望在插入模式下将其他内容映射到M-x

标签: emacs elisp evil-mode


【解决方案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)

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-18
      • 2012-05-01
      • 1970-01-01
      • 2016-07-17
      • 2023-04-11
      • 2012-12-27
      相关资源
      最近更新 更多