emacs 是否有相当于 jetbrains 的 "find action by name" 和 Atom 的命令面板?

Does emacs have an equivalent to jetbrains' "find action by name" and Atom's Command Palette?

这些 IDEs/editors 中的这些 "find any command" 对话框使新功能和键盘快捷键更容易被发现。

Emacs 有等效项吗? M-x 有点工作,但它缺少键绑定注释的提示,并且与这些情况相比,自动完成也不那么流畅。

是 - apropos-command,绑定到 C-h a。来自帮助页面:

Show commands (interactively callable functions) that match PATTERN. PATTERN can be a word, a list of words (separated by spaces), or a regexp (using some regexp special characters). If it is a word, search for matches for that word as a substring. If it is a list of words, search for matches for any two (or more) of those words.

其他帮助命令也非常有用 - C-g ? 可以全部查看。与apropos-command类似的还有:describe-key C-h k,描述绑定到一个键序列的函数; describe-variable C-h v,这应该是显而易见的;和 describe-bindings C-h b,其中列出了所有当前定义的键。

M-x 可以更好地完成:

您需要从 MELPA 安装 counsel 包并绑定命令:

(global-set-key (kbd "M-x") 'counsel-M-x)

如您所见,为每个绑定命令列出了键绑定。这 查询是一个正则表达式(因此初始 ^),空格是野生的(即 .*)。 此外,如果你从 MELPA 安装 smex 包,你最喜欢的 命令将列在其他匹配命令之前;这是 在 Emacs 会话中记住(在 ~/.smex_items 文件中)。

以下是一些类似的命令:

(global-set-key (kbd "<f1> f") 'counsel-describe-function)
(global-set-key (kbd "<f1> v") 'counsel-describe-variable)
(global-set-key (kbd "<f1> l") 'counsel-load-library)

另请注意,额外的迷你缓冲区面需要此设置:

(setq ivy-display-style 'fancy)