如果我想创建一个自定义组合键来运行命令,是否有为此保留的键盘快捷键?我总是发现很难决定要覆盖哪个快捷方式,因为我不确定哪些命令不应该覆盖,以及我将来可能安装的命令插件将尝试设置.
我建议使用未绑定.它是为这种情况而制作的.
在emacs配置中需要它之后,键入以下内容将列出可用于自定义的未绑定密钥:
M-x describe-unbound-keys
它要求复杂程度(我通常只使用5)用于组合键,具体取决于您感兴趣的键绑定的方便程度(较少选项)或深奥(更多选项).
你可以重新定义任何东西,但约定是使用C-c l
(在哪里l
是任何字母).
作为用户,您可以重新定义任何键; 但通常最好坚持使用C-c 后跟字母(大写或小写)组成的键序列.这些密钥是"为用户保留的",因此它们不会与任何正确设计的Emacs扩展冲突.功能键F5通F9 也保留了用户.如果重新定义其他键,则某些扩展或重新定义相同键的主要模式可能会覆盖您的定义.
就个人而言,我试图在键绑定中找到一个漏洞来放弃我的自定义 - 而且通常我可以找到合理的东西.此外,我通常将自定义键绑定设置为辅助模式或主模式键映射的本地,并global-set-key
尽可能避免使用.这有助于保持键盘图中的漏洞.
例如,我推翻C-r
在minibuffer-local-map
在迷你更改为"已解决"的路径名的路径.因此,虽然C-r
是全球约束'isearch-reverse
,但我不会错过迷你缓冲区内的绑定(如果我开始在迷你缓冲区中向前搜索,它就变得可用).
另一个例子是我写了一些东西杀死了文件名与当前缓冲区文件名匹配的所有其他缓冲区. C-x k
是的'kill-buffer
,幸运的C-x K
是我的自由'kill-other-buffers-of-this-file-name
,我喜欢它,因为它是原始键绑定的轻微变化.这是一个全局设置,但我确实希望全局可用的功能.