Emacs多键盘快捷键

时间:2013-03-30 00:53:30

标签: emacs key-bindings

我正在尝试创建组合键绑定。

以下是一个例子:

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

(编辑:感谢Stefan指出\ C-x和\ C-f之间的空格。)

然而,这将我带到一个随机文件,describe-key说明了这一点:

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(查找文件),而不必将'find-file作为函数本身输入。

换句话说;我不想要这个:

(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")

然后,如果我输入“x f”,它将表示“\ C-x C-f”又名查找文件。 这样我就不必写出所有可能的组合键。

2 个答案:

答案 0 :(得分:3)

"\C-x \C-f"有3个元素:C-xSPCC-f。你可能并不认为那个空间会在那里。

答案 1 :(得分: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。您在同一表单中混合使用kbd和非kbd语法也有些奇怪。