我正在尝试创建组合键绑定。
以下是一个例子:
(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”又名查找文件。 这样我就不必写出所有可能的组合键。
答案 0 :(得分:3)
"\C-x \C-f"
有3个元素:C-x
,SPC
和C-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
语法也有些奇怪。