2013-03-30 289 views
0

我試圖創建一個組合鍵盤綁定。Emacs多鍵盤快捷鍵

下面是一個例子:

(define-key my-minor-mode-map (kbd "x f") "\C-x\C-f") 

(編輯:謝謝您斯特凡您指出\ Cx和\比照之間的空間)

然而,這把我帶到一個隨機文件和描述鍵說:

Macro: C-x C-f 
Keyboard macro. 

所以我不確定這意味着什麼。 似乎試圖將s綁定到C-s也不起作用(以及其他交互命令(如C-r和M-x))。

這並不工作:

(define-key my-minor-mode-map (kbd "x f") "\M-f") 

所以基本上我希望能夠不必鍵入「找到文件的函數本身運行C-X C-F(查找文件)。

換句話說;我不想要這個:

(define-key my-minor-mode-map (kbd "x f") 'find-file) 

我希望有人能幫助我這個。我的emacs知識非常有限。

在此先感謝。

完整代碼:

(defvar my-minor-mode-map (make-keymap) "my-minor-mode keymap") 
(define-key my-minor-mode-map (kbd "x f") "\C-x\C-f") 
(define-minor-mode my-minor-mode 
"My minor-mode" 

t "My minor mode" 'my-minor-mode-map) 
(defun my-minibuffer-setup-hook() 
    (my-minor-mode 0)) 
"My minor-mode" 

編輯:

什麼,甚至會更好是,如果我能做到這一點:

(define-key my-minor-mode-map (kbd "x") "\C-x") 
(define-key my-minor-mode-map (kbd "f") "\C-f") 

然後,如果我可以鍵入 「XF」,它會執行「\ Cx Cf」又名查找文件。 這樣我就不必寫出每一個可能的組合。

回答

2

我不能完全肯定,你認爲應該在這裏發生了什麼,但我懷疑你真正想要的是:

(define-key my-minor-mode-map (kbd "x f") (key-binding (kbd "C-x C-f"))) 

這是同樣的事情,你說你不想代碼使用:

(define-key my-minor-mode-map (kbd "x f") 'find-file) 

只是它基於密鑰綁定動態獲取函數。

p.s.這也有點奇怪,你用相同的形式混合使用​​和非​​語法。

+0

謝謝!這工作完美。 – Attic

3

"\C-x \C-f"有3個元素:C-x,SPCC-f。你可能並不是說那個空間就在那裏。

+0

謝謝你指出,但我仍然沒有得到他想要的結果。當我使用describe-key時,我得到:Macro:C-x C-f。當我運行它時,它將我帶到一個隨機文件。我也注意到嘗試綁定s到C-s也不起作用(以及像C-r,M-x等其他交互命令。 – Attic