是否为自定义命令保留了任何emacs组合键?

时间:2009-07-17 16:38:34

标签: emacs elisp

如果我想创建自定义组合键来运行命令,是否有为此保留的键盘快捷键?我总是觉得很难决定要覆盖哪个快捷方式,因为我不确定哪些命令不应该覆盖,以及我将来可能安装的命令插件将尝试设置。

4 个答案:

答案 0 :(得分:26)

我建议使用unbound。它是为这种情况而制作的。

在emacs配置中需要它后,键入以下内容将列出可能的自定义未绑定密钥:

M-x describe-unbound-keys

它要求复杂程度(我通常只使用5)用于组合键,具体取决于您感兴趣的键绑定的方便程度(较少选项)或深奥(更多选项)。

答案 1 :(得分:21)

您可以重新定义任何内容,但convention is to use C-c l(其中l是任何字母)。

  

作为用户,您可以重新定义任何键;   但通常最好坚持使用钥匙   由 C-c 组成的序列   后面跟着一封信(上面或下面   案件)。这些键是“保留的   用户,“所以他们不会与之发生冲突   任何设计合理的Emacs扩展。   功能键 F5 F9   也保留给用户。如果你   重新定义其他一些关键,你的   定义可能会被覆盖   某些扩展或主要模式   它重新定义了相同的密钥。

就个人而言,我试图在键盘绑定中找到一个漏洞来放弃我的自定义 - 而且通常我可以找到合理的东西。此外,我通常将自定义键绑定设置为次要模式或主模式键映射的本地,并尽可能避免使用global-set-key。这有助于在关键图中保留漏洞。

例如,我在C-r中覆盖minibuffer-local-map,将迷你缓冲区中的路径更改为“已解决”路径名。因此,C-r全局绑定到'isearch-reverse时,我不会错过迷你缓冲区内的绑定(如果我开始在迷你缓冲区中向前搜索,它就变得可用了。)

另一个例子是我写了something,它杀死了文件名与当前缓冲区文件名匹配的所有其他缓冲区。 C-x k'kill-buffer,幸运的是C-x K对我的'kill-other-buffers-of-this-file-name是免费的,我喜欢它,因为它与原始的键绑定略有不同。这是一个全局设置,但我确实希望全局可用的功能。

答案 2 :(得分:3)

还要记住,如果要将相关任务组合在一起,或者只是想最大限度地利用特定的易于类型,所有保留序列都可以简单地用作前缀绑定 Cc < letter> 序列。

例如,我使用 C-c m 作为我想要快速访问的一些magit(和相关)功能的前缀。 e.g:

(global-set-key (kbd "C-c m m") 'magit-status)
(global-set-key (kbd "C-c m l") 'magit-key-mode-popup-logging
(global-set-key (kbd "C-c m b") 'mo-git-blame-current)

当然, C-c m C-h 然后显示我在该前缀下的所有绑定。

答案 3 :(得分:-4)

不,您可以将任何命令映射到您感觉的任何键,如果它是您的配置。

如果您正在创建模式或库,请选择尚未进行的键绑定。