emacs错误:密钥序列Mx g以非前缀密钥Mx开头

Mar*_*ert 14 emacs

我有以下代码.emacs:(global-set-key (kbd "M-x g") 'gnus)用键绑定启动Gnus M-x g.我获得:error: Key sequence M-x g starts with non-prefix key M-x.如何定义以#开头的键绑定M-x?这是一件坏事,应该避免吗?我觉得它更直观,因为"长版"是M-x gnus.C-c g例如定义它是没有问题的,但是然后你用C-c g和开始Gnus ,例如,R通过M-x R它不是非常直观(与通过两者开始相反)M-x + 1 letter

ffe*_*tte 23

密钥M-x已经绑定到命令execute-extended-command,然后命令您提供要执行的命令的名称(在您的情况下:) gnus.

由于R命令只有一个字符长,它看起来像是M-x R一个关键序列,但它不是:它M-x后面输入R迷你缓冲区,你必须点击RET验证你的输入.

简而言之:

  • 你不能设置键序列,M-x因为这个键已经绑定到一个命令,因此不是一个前缀(不像C-c,它只会等待你输入另一个键,但应保留用于特定于当前模式的绑定) .
  • 做事的标准方法是继续启动gnus使用M-x gnus或者将它重新绑定到一个完全不同的键,如果你需要非常快(例如你可以使用F1- F12键之一)
  • 如果你真的想要一个M-x + letter绑定,你可以为命令定义一个单字母别名gnus,如下所示:
    (defalias 'g 'gnus)
Run Code Online (Sandbox Code Playgroud)

  • 第四个选项是清除 Mx 并使其成为前缀键:http://stackoverflow.com/questions/1024374/how-can-i-make-cp-an-emacs-prefix-key-for-develperlysense(但是, Mx 是这样一个核心 emacs 密钥,在这种情况下它可能是一个坏主意。) (3认同)