エディター側でなくCLI側でgit grepするのはいろんなオプションを渡せて便利だ。たとえば --and
や --or
でいろんな条件で絞り込んだり、-C
オプションで周辺の行も一緒に見ることもできる。
一方でCLI側でのgit grepでは、エディター側をさっと開きにくいという問題がある。そこで、git grepの結果をfzfでさらに絞り込んだ上で選択するとすぐにエディターで開けると便利そうと感じ、git-grep-fzfというコマンドを作ってみた。
使ってみている様子はこんな感じ。grepした後にfzfで絞り込んで該当行をエディターで開いている。https://github.com/golang/go に対してgit-grep-fzf Sorted
している様子。
また、git grepに渡せるオプションはこのコマンドに渡すことができるので、複数条件で絞り込んで周辺行を見ながら開くことも可能だ。 git-grep-fzf -e slices --and -e Sorted -C 3
としている様子。
実装は以下のコードの通り。僕はCursorというエディターを使っているためcursor
コマンドを呼び出しているが、VS Codeならcode
コマンドを使えば同じことができる。
https://github.com/shibayu36/config-file/blob/master/bin/git-grep-fzf
#!/usr/bin/env bash file=$( git grep -n --recurse-submodule --color=always $@ | fzf --ansi | # replace - with : for line numbers sed -E 's/-([0-9]+)-/:\1:/' | # cut the file path and line number cut -d: -f1-2 ) if [ -n "$file" ]; then cursor --goto $file fi
便利なのでご利用ください。