Emacs:如何选择好的自定义键绑定?

Ian*_*non 10 keyboard-shortcuts emacs

我是一个Emacs的初学者,我想开始添加像常见任务的一些全球性的自定义键绑定replace-stringreplace-regex等不默认有他们。我想做出好的选择,我看到了几个问题:

  • 查看我的所有选项- 如何查看我经常使用的所有模式中未绑定的所有键?

  • 兼容性/约定- 是否有通用的非官方绑定或通用的“用户空间”键来开始个人自定义绑定?

  • 其他问题- 还有什么我应该考虑的吗?

Tre*_*son 9

尝试在 SO 上查看此问题:是否为自定义命令保留了任何 emacs 键组合?

关于查看可用内容,有unbound图书馆(请参阅上述问题的第一个答案)。

一个约定(从我对那个问题的回答中摘取)是:

你可以重新定义任何东西,但约定是使用 C-c l(wherel是任何字母)。

作为用户,您可以重新定义任何键;但通常最好坚持由C-c 后跟一个字母(大写或小写)组成的键序列。这些密钥是“为用户保留的”,因此它们不会与任何设计合理的 Emacs 扩展冲突。功能键F5通过F9也是为用户保留的。如果您重新定义某个其他键,您的定义可能会被某些重新定义相同键的扩展或主要模式覆盖。

请记住,各种(主要和次要)模式中的键绑定是不同的,因此一个缓冲区中可用的内容不一定在另一个缓冲区中可用。并使您的键绑定尽可能处于最本地化的级别。例如,如果功能做了一个一行代码,不要让一个全球性的键绑定它,它在适当的键盘映射(定义c++-mode-mapruby-mode-map等等)。

就您的具体任务而言,您是否注意到:

  • M-% 又名 query-replace
  • C-M-% 又名 query-replace-regexp

此外,当您搜索(C-sC-M-s(和相反的变体))时,您可以键入M-%(或C-M-%)直接输入query-replacequery-replace-regexp),并使用搜索字符串作为替代对象...非常方便。