如果我想创建自定义组合键来运行命令,是否有为此保留的键盘快捷键?我总是觉得很难决定要覆盖哪个快捷方式,因为我不确定哪些命令不应该覆盖,以及我将来可能安装的命令插件将尝试设置。
答案 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)
不,您可以将任何命令映射到您感觉的任何键,如果它是您的配置。
如果您正在创建模式或库,请选择尚未进行的键绑定。