Emacs:用于注释行的自定义函数和键绑定

Emacs: custom function and keybinding for commenting out line

几个小时以来,我一直在尝试一些东西并查看其他答案,但我无法弄清楚如何使自定义功能和键绑定工作......这绝对令人气愤。

为了测试的目的我写了这个函数

(defun my/cmmt ()
  ""
  (interactive)
  (move-beginning-of-line 1)
  (comment-region 1))

(global-set-key (kbd "\C-o")
        'my/cmmt)

有 2 个问题,我希望将它绑定到 C-m 但随后出现错误:

symbol's value as variable is void: C-m

这是什么意思?

而且,它所做的只是将光标移动到行首,而不是将其注释掉。为什么?

编辑

(defun my/cmmt ()
  ""
  (interactive)
  (comment-region
   (line-beginning-position)
   (line-end-position)
          )
  )

(global-set-key (kbd "C-o")
        'my/cmmt)

现在的错误是:

symbol's function definition is void: \,

(kbd "C-o") 不是 (kbd "\C-o")

您混淆了两种指定键的方法 -- (kbd "C-o")"\C-o" 是等效的。

我建议使用 kbd,只需输入 C-hk keys 了解要传递给 kbd 的内容以指定键序列 keys。例如:当您键入 C-hkC-o 时,Emacs 会告诉您 C-o 是表示那个键序列,所以 "C-o" 是你必须传递给 kbd.

评论不起作用的原因是 (comment-region 1) 无效。你应该看到一个错误。它需要 两个 个必需的参数。详见C-hfcomment-region