0

具体来说,我想更改 Emacs-Helm 的键绑定。当我运行时helm-find-files,如果我点击C-z一个目录,你可以跳转到选定的目录。我想将此行为更改为Tab. 我知道绑定到的动作C-zhelm-execute-persistanet-action. 我可以通过这样做来实现这一点,(global-set-key (kbd "<tab>") 'helm-execute-persistanet-action)但这将捕获所有其他tab操作。我只想在我进去的时候tab跑步helm-execute-persistanet-actionhelm-find-files

4

3 回答 3

2

我认为您正在寻找的是定义键。表达式应如下所示: (define-key helm-mode-map [tab] 'a-command)

于 2013-04-14T07:49:19.723 回答
1

您可以尝试围绕 helm-find-files 函数提出建议,以在 helm-find-files 中声明一个变量,然后使用 define-key 在 helm keymap 中绑定 tab 键。如果设置了 in-helm-find,那么您可以调用您想要的函数,否则使用 keymap 查找来调用全局映射中的函数。

建议http://www.gnu.org/software/emacs/manual/html_node/elisp/Around_002dAdvice.html#Around_002dAdvice Helm Keymap https://github.com/emacs-helm/helm/blob/master/helm.el# L101 Keymap lookup 给定一个 emacs 命令名,你将如何找到 key-bindings ?(反之亦然)

于 2013-04-16T13:22:11.447 回答
1

首先,找出您想要更改键绑定的缓冲区中处于活动状态的主要模式。您可以使用C-h v major-mode,或查看您的模式行。

然后,local-set-key仅通过将一些代码放入模式挂钩中来为该主要模式创建绑定。我对 helm 不熟悉,但假设主模式被称为helm-mode,它有一个钩子helm-mode-hook,你要绑定的命令被称为helm-do-something

(add-hook 'helm-mode-hook
    (lambda () (local-set-key [tab] 'helm-do-something)))
于 2013-04-18T08:04:01.983 回答