【问题标题】:Emacs - How can I find the code to use with kbd to identify a given key sequenceEmacs - 我如何找到与 kbd 一起使用的代码来识别给定的键序列
【发布时间】:2016-06-13 23:42:55
【问题描述】:

我最近是emacs用户,当我绑定一个有趣的快捷方式时,例如:

(defun toggle-comment-on-line ()
  "comment or uncomment current line"
  (interactive)
  (comment-or-uncomment-region (line-beginning-position) (line-end-position)))

(global-set-key (kbd "\s /") 'toggle-comment-on-line)

我想使用 cmd+"/" 来调用这个乐趣,但这不起作用。搜索了几个小时没有任何帮助

问题是:

在哪里可以找到可用于 emacs 的 kbd 文档,我可以从键盘搜索符号映射?例如,'/' 在 kbd 中代表什么。

【问题讨论】:

标签: emacs


【解决方案1】:

要找到传递给 kbd 的参数,您只需询问 Emacs。

键入 C-hk(即describe-key),然后输入您感兴趣的键,Emacs 会告诉您要传递给kbd 的内容。

例如当我输入 C-hk 然后 Ctrl+xspace Emacs 告诉我:

C-x SPC runs the command rectangle-mark-mode [...]
  • 这告诉我C-x SPC 是 Emacs 引用 Ctrl+xspace 的方式
  • 因此,我使用 (kbd "C-x SPC") 在 elisp 中使用该键序列。

在您的情况下,键入 C-hk 后跟 cmd+/,然后使用 Emacs 告诉您的任何内容。

您也可以使用 C-hc(即describe-key-briefly)在回显区查看答案。

【讨论】:

  • 直观答案,告诉我底部的钥匙
【解决方案2】:

“/”不需要特殊的转义序列。但是,您的修饰键需要不同的语法。因为听起来你有一个 Apple 键盘,所以你可能正在寻找的语法是:

(global-set-key (kbd "s-/") 'toggle-comment-on-line)

's'(小写)用于“超级”。如果您希望将其绑定到“控制”,请使用C-/

在 emacs 中查找内容的建议:

在 emacs 中,您可以使用 describe function 查找任何函数的文档。输入C-h f 然后kbd 然后<Enter>

然后您可以了解kbd 函数:

kbd 是 `subr.el' 中编译的 Lisp 函数。

(kbd 键)

将 KEYS 转换为内部 Emacs 密钥表示。键应该是 用于保存键盘宏的格式的字符串常量(请参阅 `edmacro-mode')。

点击 edmacro-mode 的链接了解语法的详细说明。

【讨论】:

  • S 是 Shift。 s 是超级。
  • edmacro-mode describe 有点“TLDR”,我也按照你的答案进行了测试,这是一个答案,但不够直观。
猜你喜欢
  • 2012-10-30
  • 1970-01-01
  • 1970-01-01
  • 2021-09-26
  • 1970-01-01
  • 2011-03-19
  • 2013-09-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多