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

时间:2016-04-12 11:41:38

标签: emacs key-bindings

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

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

(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: \,

1 个答案:

答案 0 :(得分:1)

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

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

我建议使用kbd,只需输入 Ch k keys 即可学习内容传递给kbd以指定键序列 keys 。例如:当你输入 Ch k Co Emacs告诉你C-o是该键序列的表示,所以{{1你必须传递给"C-o"

评论无效的原因是因为kbd无效。你应该看到一个错误。它需要两个必需的参数。有关详细信息,请参阅 C-h f (comment-region 1)