【问题标题】:Use 'execute-extended-command' from Evil command mode (M-x is undefined)在 Evil 命令模式下使用“执行扩展命令”(M-x 未定义)
【发布时间】:2015-02-24 18:43:23
【问题描述】:

我刚刚开始尝试使用 emacs。作为一个 Vim 用户,我不想在不先安装 evil-mode 的情况下使用它。

但是,evil-mode 似乎破坏了“执行扩展命令”(M-x) 的 emacs 键绑定。

我真的不关心这个键绑定,我注意到我可以从邪恶的命令模式调用例如“列表包”,它工作得很好。 我现在唯一缺少的是命令模式下的 TAB 自动完成,例如键入“list-”TAB,然后它将显示或迭代可用的命令。 邪恶模式有可能吗?

或者最终有没有一种简单的方法来修复这个键绑定?

我正在使用:

  • debian 杰西
  • GNU Emacs 24.4.1

编辑:

我的 .emacs 文件:

(require 'package)
(push '("marmalade" . "http://marmalade-repo.org/packages/")
    package-archives )
(push '("melpa" . "http://melpa.milkbox.net/packages/")
    package-archives)

(add-to-list 'load-path "~/.emacs.d/evil")
(require 'evil)
(evil-mode 1)

(define-key evil-normal-state-map [escape] 'keyboard-quit)
(define-key evil-visual-state-map [escape] 'keyboard-quit)
(define-key minibuffer-local-map [escape] 'minibuffer-keyboard-quit)
(define-key minibuffer-local-ns-map [escape] 'minibuffer-keyboard-quit)
(define-key minibuffer-local-completion-map [escape] 'minibuffer-keyboard-quit)
(define-key minibuffer-local-must-match-map [escape] 'minibuffer-keyboard-quit)
(define-key minibuffer-local-isearch-map [escape] 'minibuffer-keyboard-quit)

我尝试添加 Modifier-x

(global-set-key (kbd "C-x") 'execute-extended-command)

和 Alt-x

(global-set-key (kbd "A-x") 'execute-extended-command)

但是这些尝试并没有修复键绑定,所以我决定使用超级键

(global-set-key (kbd "s-x") 'execute-extended-command)

【问题讨论】:

    标签: emacs evil-mode


    【解决方案1】:

    修复键盘绑定非常简单 - 只需将此行添加到您的 .emacs 文件(或在暂存缓冲区中对其进行评估):

    (global-set-key (kbd "< put your key combination here >") 'execute-extended-command)
    

    您可以使用reference from ErgoEmacs 了解如何为kbd 功能提供组合键。

    IMO 最好使用标准 Emacs 方式运行命令 - 使用 evil-mode 命令模式处理与邪恶相关的事情,并使用 M-x/execute-extended-command 与 Emacs 一起工作。

    【讨论】:

    • 非常感谢。我认为您关于使用标准 Emacs 绑定的观点是相关的......但是,邪恶模式中肯定存在错误,因为您的建议仅适用于 super-x, (global-set-key (kbd "sx") 'execute-扩展命令)
    • @Mitzh,您可以通过按C-h k M-x(即Ctrl+H,然后k,然后Alt+X)来检查绑定到M-x 的命令 - 也许,它正在干扰邪恶或您可能已安装的其他插件。
    • 再次感谢。现在我绝对相信 evil-mode 导致键绑定被窃听......因为它高兴地报告“M-x 运行命令 execute-extended-command..”。并且绑定到 "s-x, , , M-x"
    • 仍然说 M-x 对我来说是未定义的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-19
    • 2020-05-05
    • 1970-01-01
    相关资源
    最近更新 更多