如果我想创建一个自定义键组合来运行命令,有没有预留给此功能的键盘快捷方式?我常常觉得很难决定要覆盖哪个快捷键,因为我不确定哪些命令是不能被覆盖的,以及我将来可能安装的插件会尝试设置哪些命令。
我建议使用unbound,它就是为这种情况而制作的。
在将其包含到您的Emacs配置中后,键入以下内容将列出可能未绑定的按键以供自定义:
M-x describe-unbound-keys
它要求一个复杂度级别(我通常只使用5)的关键组合,取决于您感兴趣的按键绑定是多么方便(较少选项)或外奇(更多选项)。
你可以重新定义任何东西,但惯例是使用C-c l
(其中l
是任何字母)。
作为用户,您可以重新定义任何键; 但通常最好坚持由C-c后跟一个字母(���写或小写)组成的键序列。这些键已“保留给用户”,因此它们不会与任何正确设计的Emacs扩展冲突。功能键F5到F9也保留给用户。 如果您重新定义其他键,则您的定义可能会被某些扩展或主模式覆盖,这些扩展或主模式会重新定义相同的键。
就个人而言,我尝试在绑定键中找到空缺以滑入我的自定义内容,通常有足够的空缺供我找到合理的内容。另外,我通常将自定义键绑定限定在次要模式或主模式键映射中,并尽可能避免使用global-set-key
。这有助于保持键映射中的空隙。
例如,我在minibuffer-local-map
中覆盖了C-r
,以更改minibuffer中的路径为“已解析”路径名。 因此,虽然C-r
在全局范围内被绑定到'isearch-reverse
,但我在minibuffer中不会错过该绑定(如果我开始在minibuffer中向前搜索,则可用)。
另一个例子是我写了something,它会杀死所有文件名与当前缓冲区相匹配的其他缓冲区。 C-x k
是 'kill-buffer'
,而幸运的是,C-x K
对我的'kill-other-buffers-of-this-file-name'
来说是空闲的,我喜欢它因为它是原始键绑定的轻微变化。这是一个全局设置,但我确实希望这个功能在全局范围内可用。
C-c
或者 C-c C-k
前缀约定的提及:http://www.gnu.org/software/emacs/manual/html_node/emacs/Keymaps.html#Keymaps。 - ntc2(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)
不,如果是你的配置,你可以将任何命令映射到任何你想要的键上。
如果你正在创建自己的模式或库,请选择尚未被占用的按键绑定。