我想寫的東西,會在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