概要
- 
git addの選択がめんどくさかった
- 
peco導入してたのでgit addを簡易にしてくれるやつを参考にしてzshを用意した
- key bindをvimっぽくしたかったので、pecoに簡易の設定をして、幸せ(?)にした
terminalでのgit add
- git status
- ステージに追加したいファイルをコピペして git addする(これがちょっとめんどくさい)
- 繰り返す
pecoで楽にできないか
ぐぐったらすぐ見つかった
https://masawada.hatenablog.jp/entry/2015/06/30/165156
これをzshに書き換える(Geimini)
# git add + peco
# peco を使ってインタラクティブに `git add` する関数
gap() {
  # gitリポジトリのルートディレクトリを取得
  local search_root
  search_root=$(git rev-parse --show-toplevel 2>/dev/null)
  # gitリポジトリでなければエラーメッセージを表示して終了
  if [ -z "$search_root" ]; then
    echo "ここはgitリポジトリではありません。" >&2
    return 1
  fi
  # git statusの結果からpecoでファイルを選択
  # awkでファイルパスだけを抽出
  local selected_files
  selected_files=$(git status --porcelain | peco | awk '{print $2}')
  # ファイルが選択されなかった場合は終了
  if [ -z "$selected_files" ]; then
    echo "ファイルが選択されませんでした。"
    return
  fi
  # 選択されたファイルを一つずつ `git add` する
  # ルートディレクトリに移動してから実行することで、どのサブディレクトリからでも正しく動作する
  (cd "$search_root" && echo "$selected_files" | tr ' ' '\n' | while read -r file; do
    git add "$file"
    echo "Added: $file"
  done)
}
~/.zshrc に追記して、source ~/.zshrc で使えるようになる
vimライクにする
試したらたしかに便利だけど、物足りなさがある
- 矢印キーで操作
- 複数選択はCtrl + Space(すでにキーボードショートカットキー設定されている)
ので、こうしたかった
- vimのk(up)、j(down)にする
- spaceで複数選択できるようにする
調べてみたら、~/.peco/config.jsonで、keymapを変更できるよう。試す
{
  "Keymap": {
    "k": "peco.SelectUp",
    "j": "peco.SelectDown",
    "Space": "peco.ToggleSelectionAndSelectNext"
  }
}

