将键序列绑定到Emacs中的命令

时间:2017-04-18 17:56:07

标签: emacs keyboard-shortcuts

我想将键序列C-tab绑定到indent-rigidly。我在M-x local-set-key之后以交互方式执行此操作。但我希望每次启动Emacs时都应用它。为此,我在init.el文件中添加了以下行:

(global-set-key (kbd "C-tab") (indent-rigidly))

(如Urvashi Khandelwal, Neural Text Summarization 所述)

然而,它不起作用。上面一行中的“local-set-key”也不起作用。 “C-TAB”也行不通。错误消息是:

<C-tab> is undefined

问题在哪里以及如何解决?

3 个答案:

答案 0 :(得分:3)

需要引用该命令。以下是等效的(并且应该有效):

(global-set-key (kbd "C-<tab>") 'indent-rigidly)
(global-set-key (kbd "C-<tab>") (quote indent-rigidly))

答案 1 :(得分:1)

准确传递您在错误消息中看到的关键描述kbd"<C-tab>"

(global-set-key (kbd "<C-tab>") 'indent-rigidly)

M-x global-set-key可让您直接点击键序列,而不知道如何描述它。 C-h k后跟关键序列会向您显示Emacs如何描述它 - 在这种情况下,它会向您显示<C-tab>

然而,事实证明(kbd "C-<tab>")(kbd "<C-tab>")返回相同的内容:[C-tab]。所以你可能还有其他一些问题。

C-h k告诉你什么,当你按下你想要的键序列时?当你使用emacs -Q(没有初始化文件)启动Emacs时,你会看到同样的事情吗?

[顺便说一下,如果你不想因为Emacs使用尖括号(完全不必要)来进行关键描述而烦恼并且感到困扰,你可以使用库naked.el而不用它们:< strong> (naked "C-tab") = (kbd "<C-tab>") = (kbd "C-<tab>")。]

答案 2 :(得分:0)

正确的代码是:

{{1}}

或:

{{1}}