具体来说,我想更改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
答案 0 :(得分:2)
我认为你要找的是define-key。表达式应如下所示: (define-key helm-mode-map [tab]'a-command)
答案 1 :(得分:1)
您可以尝试围绕helm-find-files函数进行建议,以声明变量in-helm-find-files,然后使用define-key绑定helm keymap中的tab键。如果设置了in-helm-find,那么你可以调用你想要的函数,否则使用keymap查找来调用全局映射中的函数。
Advicing http://www.gnu.org/software/emacs/manual/html_node/elisp/Around_002dAdvice.html#Around_002dAdvice 头盔键盘图 https://github.com/emacs-helm/helm/blob/master/helm.el#L101 键映射查找 Given an emacs command name, how would you find key-bindings ? (and vice versa)
答案 2 :(得分: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)))