我想写的东西,会在Emacs向后移动一个窗口,并绑定到C-x S-o
为什么elisp函数不起作用(就像我期望的那样)?
(global-set-key [C-x S-o] '(other-window -1))
当我加载的.emacs方含吧,东西坏了,我所有的滚动条重新出现(前面已经禁用)和C-x S-O
的功能与C-x o
完全相同。
一个修复会很好,但我也很感激为什么它不起作用的解释。
我想写的东西,会在Emacs向后移动一个窗口,并绑定到C-x S-o
为什么elisp函数不起作用(就像我期望的那样)?
(global-set-key [C-x S-o] '(other-window -1))
当我加载的.emacs方含吧,东西坏了,我所有的滚动条重新出现(前面已经禁用)和C-x S-O
的功能与C-x o
完全相同。
一个修复会很好,但我也很感激为什么它不起作用的解释。
你搞砸的关键载体,我相信你必须使用一个单一的函数名,不带参数,使这项工作:
(global-set-key "\C-xO" 'my-other-window)
(defun my-other-window()
(interactive)
(other-window -1)
)
有关详细信息,请参阅manual:
(info "(emacs)Init Rebinding")
您不能直接调用带有参数的函数,如global-set-key
。它应该是这样的:
(global-set-key [C-x S-o] (lambda() (interactive) (other-window -1)))
它以一种匿名交互形式包装你想要的功能。
如果需要更多信息,请参见[绑定键的命令](http://www.gnu.org/s/emacs/manual/html_node/elisp/Key-Binding-Commands.html)和[ Key Lookup](http://www.gnu.org/s/emacs/manual/html_node/elisp/Key-Lookup.html); Emacs Lisp手册;后一页告诉你什么样的事情可以作为'global-set-key'的参数给出。 – dfan 2011-03-16 13:52:11
如果你使用关键矢量,它应该是[?\ C-x?\ O]我认为。 – Tyler 2011-03-16 14:13:45
这实际上不起作用。它和我做的一样。但是,我从Tyler的回答中将关键描述更改为“\ C-xO”,这一切都很好。 – Squidly 2011-03-16 18:34:12
有两个问题与您的代码:
(global-set-key (kbd "C-x O") '...)
出于某种原因,我认为lisp有咖喱。 – Squidly 2011-03-16 20:01:13
@MrBones这不是关于currying,这是关于Emacs需要绑定到某个键的东西。 'interactive' – 2011-04-06 21:12:21