イメージ
echo
という文字列があるファイルをgit grep
する- 12行目でマッチしているファイルを選ぶ
- Vimで12行目から編集開始できる
ポイント
$EDITOR
の環境変数で利用するエディタを決めるgit grep --line-number
オプションを使って、git grepで引っかかった行を読み込むようにする ( Vim を使う場合 )- git grep の結果からファイルパスをパースする
- peco を使ってインクリメンタル検索をする
スクリプト例
#!/usr/bin/env bash -eu# Usage## $ command [grep-keyword] --some-grep-option# 利用するエディタを環境変数から決めるreadonly editor=${EDITOR:-vim}# peco が入っていなければ終了するif[!$(which peco)];then
echo You need peco please install
exit
fi# git grep する# git grep には自由なオプションを渡せるようにしておく ( --line-number をのぞいて )readonly git_grep_result=$(git grep--line-number$@)# git grep のマッチ結果がなければ終了するif[-z"$git_grep_result"];then
echo No match with git grep
exit
fi# git grep の結果からpecoで検索モードに入るreadonly git_grep_select=$(echo"$git_grep_result" | peco --query="$1")# peco での選択結果がなければ終了するif[-z"$git_grep_select"];then
exit
fi# pecoで選んだ行からファイルパスをパースするreadonly filepath=$(echo"$git_grep_select" | awk-F':''{ print $1 }')# git grep の結果からファイルの行番号をパースするreadonly line_number=$(echo"$git_grep_select" | awk-F':''{ print $2 }')if[!-z"$filepath"];then# エディタが Vim なら 引っかかったファイル行番号から開くようにするif[["$editor"=~ vim ]]&&[!-z"$line_number"];then
eval"$editor" +"$line_number""$filepath"else
eval"$editor""$filepath"fi
fi
gitim/git-grep-edit at acdbbf9bcbfd92e10d62be3f92bff5e6e5b0366e · YumaInaura/gitim
Versions
- git version 2.8.1
- peco version v0.5.3 (built with go1.10)
- bash 4.2
- Mac OS High Sierra