我在.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来启动都相反)

最佳答案

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

由于R是一个只有一个字符长的命令,因此看起来M-x R是键序列,但不是:它是M-x,然后在小缓冲区中输入R,您必须按RET来验证输入。

简而言之:


您不能设置以Mx开头的键序列,因为该键已经绑定到命令,因此不是前缀(与Cc不同,Cc不会执行任何操作,只是等待您键入另一个键,但应保留给特定于当前键的绑定模式)。
执行操作的标准方法是继续使用M-x gnus启动gnus或将其重新绑定到完全不同的键(如果您需要非常快的话)(例如,可以使用F1-F12键之一)
如果您确实希望使用M-x +字母绑定,则可以为命令gnus定义一个字母的别名,如下所示:


    (defalias 'g 'gnus)

09-25 20:36