Emacs错误:按键序列M-x g以非前缀键M-x开头。

16
我在.emacs中有以下代码:(global-set-key (kbd "M-x g") 'gnus),以便使用按键绑定M-x g启动Gnus。但是我得到了错误: 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,而例如使用M-x R启动R则不太直观(与同时使用M-x + 1 letter不同)。
1个回答

25

按键M-x已经绑定到命令execute-extended-command,然后会要求你提供要执行的命令的名称(在你的情况下是gnus)。

由于R命令只有一个字符长,看起来M-x R是一个按键序列,但实际上不是:它是M-x后跟在小型缓冲区中输入R,然后必须按下RET键才能验证输入。

简而言之:

  • 您无法设置以M-x开头的按键序列,因为该按键已经绑定到命令,因此不是前缀(不像C-c,它什么都不做,只等待您输入另一个键,但应保留用于特定模式的绑定)。
  • 标准做法是继续使用M-x gnus启动gnus或将其重新绑定到完全不同的键(如果您需要非常快速,例如可以使用其中一个F1-F12键)。
  • 如果您真的想要有一个M-x +字母绑定,可以定义一个一字母别名以将其与gnus命令关联起来,如下所示:
    (defalias 'g 'gnus)

3
第四个选项是清除M-x并将其作为前缀键:https://dev59.com/JHNA5IYBdhLWcg3wSrua (但是,由于M-x是Emacs的核心按键之一,在这种情况下这可能不是一个好主意。) - idbrii

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接