具体来说,我想更改 Emacs-Helm 的键绑定。当我运行时helm-find-files
,如果我点击C-z
一个目录,你可以跳转到选定的目录。我想将此行为更改为Tab
. 我知道绑定到的动作C-z
是helm-execute-persistanet-action
. 我可以通过这样做来实现这一点,(global-set-key (kbd "<tab>") 'helm-execute-persistanet-action)
但这将捕获所有其他tab
操作。我只想在我进去的时候tab
跑步helm-execute-persistanet-action
helm-find-files
3 回答
我认为您正在寻找的是定义键。表达式应如下所示: (define-key helm-mode-map [tab] 'a-command)
您可以尝试围绕 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 ?(反之亦然)
首先,找出您想要更改键绑定的缓冲区中处于活动状态的主要模式。您可以使用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)))