magit-grep,如何包含或排除文件扩展名?

eug*_*ene 4 git emacs grep magit

我想给magit-grep提供一些选择

使用选项foo结果运行它

git --no-pager grep -n foo
Run Code Online (Sandbox Code Playgroud)

我想给它一些选择

git --no-pager grep -n foo (options to include *.html and exclude *.py, etc)
Run Code Online (Sandbox Code Playgroud)

它不一定是magit-grep,emacs中最好的git grep解决方案是什么?


magit-的grep

(magit-define-command grep (&optional pattern)
  (interactive)
  (let ((pattern (or pattern
                     (read-string "git grep: "
                                  (shell-quote-argument (grep-tag-default))))))
    (with-current-buffer (generate-new-buffer "*Magit Grep*")
      (let ((default-directory (magit-get-top-dir)))
        (insert magit-git-executable " "
                (mapconcat 'identity magit-git-standard-options " ")
                " grep -n "
                (shell-quote-argument pattern) "\n\n")
        (magit-git-insert (list "grep" "--line-number" pattern))
        (grep-mode)
        (pop-to-buffer (current-buffer))))))
Run Code Online (Sandbox Code Playgroud)

tar*_*ius 7

我已经删除了magit-grep,因为它只是一个严重残废的版本rgrep.vc-git-grep实际上是一种改进,所以你应该使用它.(现在magit-grep被定义为vc命令的别名,以避免打扰以前使用magit变体的任何人.经典案例"通过查看其他地方已存在的内容然后删除我们的代码来添加功能":-)


Sla*_*zic 2

git-grep一种可能性是 og和的组合git-ls-files

git grep ... `git ls-files | grep -- '\.html$'`
Run Code Online (Sandbox Code Playgroud)

但只有当 的输出git-ls-files不超过系统上的最大命令行大小(在现代系统上为几个 100K)时,这才有效。