为什么elisp功能不起作用(正如我所期望的那样)?

时间:2011-03-16 13:37:10

标签: emacs lisp elisp

我想写一些会在emacs中移回一个窗口并绑定到C-x S-o

的内容
(global-set-key [C-x S-o] '(other-window -1))

当我加载包含它的.emacs时,某些内容会中断,我的所有滚动条都会重新出现(之前已被禁用),而C-x S-O的功能与C-x o完全相同。

修复会很好,但我也很感激解释为什么它不起作用。

3 个答案:

答案 0 :(得分:6)

您无法像global-set-key中那样直接调用带参数的函数。它应该是这样的:

(global-set-key [C-x S-o] (lambda() (interactive) (other-window -1)))

以匿名互动形式包装您想要的功能。

答案 1 :(得分:2)

你搞砸了关键向量,我相信你必须使用一个没有参数的函数名来完成这项工作:

(global-set-key "\C-xO" 'my-other-window)

(defun my-other-window ()
  (interactive)
  (other-window -1)
  )

有关详细信息,请参阅manual

(info "(emacs)Init Rebinding")

答案 2 :(得分:1)

您的代码存在两个问题:

  1. 你需要interactive表格中你绑定一个键(它也值得阅读wiki
  2. 最好使用kbd来读取您想要的密钥绑定,例如(global-set-key (kbd "C-x O") '...)