pecoを導入して数ヶ月たった今、「コレなしで丁寧にコマンド打つの面倒すぎて困る。」と思った、pecoの設定4つを紹介します。
コマンド履歴を検索(Ctrl-Rを拡張)
Ctrl-R
だと一覧出来なくて不便ですが、これならぱっと見で分かって便利。よく使うbundle exec rails s
とかもサクッと探せてよいです。
function peco-select-history() { local tac if which tac > /dev/null; then tac="tac" else tac="tail -r" fi BUFFER=$(history -n 1 | \ eval $tac | \ peco --query "$LBUFFER") CURSOR=$#BUFFER zle clear-screen } zle -N peco-select-history bindkey '^r' peco-select-history
最近移動したディレクトリに検索しつつ移動
とにかく便利。丁寧に../../path/to/dir
とか、1回プロジェクトのrootに戻って移動とかしなくて良いので、楽ちん。
function peco-cdr () { local selected_dir=$(cdr -l | awk '{ print $2 }' | peco) if [ -n "$selected_dir" ]; then BUFFER="cd ${selected_dir}" zle accept-line fi zle clear-screen } zle -N peco-cdr bindkey '^u' peco-cdr
git add
するファイルを選ぶ
色々ファイルを変更した後で、任意のファイルだけコミットしたいことありますよね。丁寧に$git add path/to/file
を数回うっても良いのですが、さすがに面倒臭いです。これならパッと見て、追加するファイルを選ぶことができます。
function peco-select-git-add() { 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-git-add bindkey "^g^a" peco-select-git-add
最近更新されたブランチにチェックアウトする
複数のブランチを行ったり来たりして、開発することはよくあると思います。そんな場合に、全部のブランチ名を覚えてはいられないし、git branch
を叩いてから、丁寧にgit checkout branch-name
と入力してあげるのは、非常に面倒です。これなら、更新順にブランチが並んでくれるので、さっと見つけられるしブランチ名も打ち込まなくて良いので楽ちんです。
function peco-git-recent-branches () { local selected_branch=$(git for-each-ref --format='%(refname)' --sort=-committerdate refs/heads | \ perl -pne 's{^refs/heads/}{}' | \ peco) if [ -n "$selected_branch" ]; then BUFFER="git checkout ${selected_branch}" zle accept-line fi zle clear-screen } zle -N peco-git-recent-branches bindkey "^g^b" peco-git-recent-branches
参考ページ
pecoで最近更新されたブランチにcheckoutする - $shibayu36->blog;