Open3

ripgrep+fzf+batcatで高速にgrepし、絞り込み、シンタックスハイライト表示する

cat2151cat2151

3行で説明

  • grep、もっと高速に検索したいですよね。そこでripgrep。爆速です。
  • grep結果、fzfで絞り込みつつ、batcatでシンタックスハイライトしたいですよね。
  • をやりたくてLLMに投げてみたところ、ハルシネーションで失敗連発。やっと成功したので共有します。
cat2151cat2151

Linux bash

  • ripgrep, fzf, batcatをインストールしてください
  • .bash_profile等に、以下のように記述してください
  • 「rgf 検索ワード」で検索できて、fzfで絞り込み、batcatでプレビューできます
  • シンボリックリンクディレクトリも検索対象にしています。外したい場合は--followを外してください
rgf() {
rg "$1" --follow --line-number --no-heading |
fzf --delimiter : --preview '
file={1}
line={2}
half=$((FZF_PREVIEW_LINES / 2))
start=$((line - half))
(( start < 1 )) && start=1
end=$((start + FZF_PREVIEW_LINES - 1))
batcat --style=numbers --color=always --line-range ${start}:${end} --highlight-line ${line} "$file"
'
}
cat2151cat2151

ENTERキーで、選んだ行をVSCodeで開くバージョン

  • 末尾付近の1行を、awk | xags code へのリダイレクトに書き換えるだけです
rgf() {
rg "$1" --follow --line-number --no-heading |
fzf --delimiter : --preview '
file={1}
line={2}
half=$((FZF_PREVIEW_LINES / 2))
start=$((line - half))
(( start < 1 )) && start=1
end=$((start + FZF_PREVIEW_LINES - 1))
batcat --style=numbers --color=always --line-range ${start}:${end} --highlight-line ${line} "$file"
' | awk -F: '{print $1 ":" $2}' | xargs code -g
}