git addするファイルをpecoで選択できるようにした
みんな大好きpecoを使って、git add出来るようにした
コード
複数選択に対応した
上のgifのように複数選択出来る
検索のハイライトと選択中のハイライトの色が被ってるため見難くなってしまっている
function peco-select-gitadd() { local SELECTED_FILE_TO_ADD="$(git status --porcelain | \ peco --query "$LBUFFER" | \ awk -F ' ' '{print $NF}')" if [ -n "$SELECTED_FILE_TO_ADD" ]; then BUFFER="git add $(echo "$SELECTED_FILE_TO_ADD" | tr '\n' ' ')" CURSOR=$#BUFFER fi zle accept-line # zle clear-screen } zle -N peco-select-gitadd bindkey "^g^a" peco-select-gitadd
改行をスペースに置換するだけで良さそうだった
これでCtrl-g+Ctrl-aとtypeすると上のデモのようにgit addするファイルが選べる
git add出来るファイル一覧をいい感じに取るのが難しく、git status --porcelain(--short)での出力結果をパースしてファイル名を取るようにした。
結果としてgit add出来る理由も表示出来たので、これはこれでいいかもしれない
疑問
git add出来るファイル、つまりunstagedあるいはuntrackedなファイルって、何か名称があるんだろうか
以前のバージョン
複数選択は出来ない
function peco-select-gitadd() { local selected_file_to_add=$(git status --porcelain | \ peco --query "$LBUFFER" | \ awk -F ' ' '{print $NF}') if [ -n "$selected_file_to_add" ]; then BUFFER="git add ${selected_file_to_add}" CURSOR=$#BUFFER zle accept-line fi zle clear-screen } zle -N peco-select-gitadd bindkey "^g^a" peco-select-gitadd