如果在grep-find中设置,则Emacs使用变量

时间:2015-07-30 07:38:43

标签: emacs grep elisp

如果设置了变量,我正在寻找一种始终从特定位置启动我的grep-find的方法。我想的是:

  1. 从/ home / user / mycode /
  2. 启动emacs
  3. 打开文件,例如: /家庭/用户/ mycode的/ A / B / C /
  4. 从/ home / user / mycode /
  5. 运行grep-find

    我知道如果我先打开/ home / user / mycode /目录,然后运行grep-find,它就可以了,但我希望将它存储为变量。 (如果没有设置变量,只需从当前位置进行搜索就可以了)

    我的grep-find看起来像这样:

    (setq grep-find-command "find . '(' -type f ')' -print0 | xargs -0 -e grep -n -e ") 
    

1 个答案:

答案 0 :(得分:1)

在我看来,你会从弹丸中受益。

它完全符合您的需求。它有一个递归的grep命令,它从父目录启动(它也可以使用git-grep或ag,比grep快很多),它提供了更多。您可以同时处理多个项目(射弹很聪明)。

你可以在这里查看射弹:https://github.com/bbatsov/projectile

可通过MELPA

获取

如果您不想使用它(或类似的替代方案),我建议在这样的自定义函数中包装递归grep命令:

(defun rgrep-at-repo-base (...)
  (interactive)
  (with-temp-buffer
    (while (and (not (file-exists-p ".git/"))
                (not (equal "/" default-directory)))
      (cd ".."))
    (rgrep ...)))

您应该在哪里更改从当前目录中查找代码库的逻辑(示例适用于git repos)并设置您需要的参数(如果有)