建议在描述问题的时候尽量使用函数名

每次打开 spacemacs 相关帖子的时候,看着一堆快捷键云里雾里,我也许大概能猜到是在讲什么,但毕竟不知道每个快捷键确切绑定的函数。

你今天写下的快捷键,很可能明天就变了,这在 spacemacs 是经常发生的,也是必然的,因为 spacemacs 的功能增/减频繁,势必需要调整快捷键。

所以,为了让帖子对后来的人具有参考意义,请尽量使用函数名描述问题/操作。当然,那些几十年都没改变过的经典快捷键是可以放心使用的。

任何时候,知道了函数名,也就知道了快捷键,反过来不一定成立。

5 个赞

我不用 Spacemacs,所以碰见只写按键的情况就一点头绪都没有。除了手写,也可以根据自己需求,写个命令专门做这件事情,比如:

(defun chunyang-format-key-as-markdown (key)
  (interactive "kkey: ")
  (when-let* ((command (key-binding key))
              (markdown (format "<kbd>%s</kbd> (`%s`)"
                                (key-description key) command)))
    (kill-new markdown)
    (message "Saved to kill-ring: %s" markdown)
    markdown))

然后运行这个命令,输入 M-! 的话就会得到:M-! (shell-command)。


我觉得常常甚至可以忽略按键,只写命令名称。如 M-x shell-command。我甚至都不是很待见快捷键这回事,我的态度是:

  • 能不设置就不设置
  • 能不用就不用
  • 不刻意记忆,如果记住了也只是因为用多了
  • 忘了就忘了,这甚至都不见得完全是件坏事

我之所以用 Emacs 一点儿都不是因为快捷键。

2 个赞

确实如此。 写函数名字更好交流

非 spacemacs 用户,不过道理非常赞成,主要靠 smex 和 alias 过日子 —— 有些命令太长了还是有点懒得敲 :sweat_smile:

我的快捷键也很少,很多键都还空闲着。那种除了 prefix 之外还要敲 3、4 个键的快捷键,不仅不快捷,也是记忆负担。

借你的函数我封装一个直接替选中内容的:

(defalias 'format-key-as-markdown 'chunyang-format-key-as-markdown)

(defun replace-key-with-markdown (beg end)
  (interactive "r")
  (when-let* ((key (kbd (string-trim (buffer-substring-no-properties beg end) "`" "`")))
              (mkd (format-key-as-markdown key)))
    (delete-region beg end)
    (insert mkd)))