如何将helm-do-grep-1绑定到emacs中的密钥?

时间:2015-02-04 08:25:12

标签: emacs emacs-helm

我正在使用以下内容。

(global-set-key [f9] 'helm-do-grep-1)

但是当我按f9时,它会抱怨错误的类型参数。我只是希望它的行为像“C-u C-c h g”一样递归grep。但输入这么多钥匙很无聊。

更新: 我需要递归grep。 helm-do-grep以非递归模式运行。

2 个答案:

答案 0 :(得分:1)

您可以使用

(global-set-key [f9] 
  (lambda ()
    (interactive)
    (let ((current-prefix-arg 't))
      (call-interactively 'helm-do-grep))))

UPD。如果您有兴趣:带有kbd序列的版本

(global-set-key [f9]
  (lambda ()
   (interactive)
     (let ((minibuffer-message-timeout 0))
                (execute-kbd-macro (read-kbd-macro "C-u C-c h g C-x Q"))))

在此处查看 C-x Q 的定义https://stackoverflow.com/a/28435402/1937596

答案 1 :(得分:1)

正如错误消息已指出,函数helm-do-grep-1有一个参数:https://github.com/emacs-helm/helm/blob/master/helm-grep.el#L810

您可能想要的是将f9绑定到helm-do-grep,并使用正确的参数调用helm-do-grep-1https://github.com/emacs-helm/helm/blob/master/helm-grep.el#L1129

(global-set-key [f9] 'helm-do-grep)

<强>更新

(global-set-key [f5]
                (lambda ()
                  (interactive)
                  (call-interactively (key-binding (kbd "C-c h g")))))

在这种情况下,您使用helm-do-grep调用<f5>,使用C-u <f5>调用递归方法。但是,这种方法取决于您的键绑定。