2013-03-30 197 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