interprism's blog

インタープリズム株式会社の開発者ブログです。

peco+zshでgit checkoutを楽にする(ついでにpeco操作をvimライクにする)

この投稿は インタープリズムの面々が、普段の業務に役立つ記事を丹精込めて書き上げる! Advent Calendar 2016 - Qiitaの3日目 の記事です。

こんにちは、imamotoです。

めちゃめちゃ遅刻しましたが、AdventCalendar3日目の記事を投稿します。

今回はpecoをテーマに記事を書きたいと思います。

そもそもpecoって何じゃい!

  • pecoとは、標準出力の結果を受け取って対話的にgrepを行い、選択した行を再び標準出力するコマンドラインツールです。
  • ...と言っても言葉で説明するのは難しいので、下記のgithubリポジトリで紹介されているデモ画像(gif)をご覧ください。

github.com

pecoをインストール

昨年の弊社AdventCalendarでsugano氏が投稿したこの記事を参考に、私も業務で使用しているmacにpecoをインストールしてみました。

interprism.hatenablog.com

  • sugano氏の紹介してくれた履歴検索は非常に便利ですごく重宝しています!
  • インストールしたい方はsugano氏の記事を参考にしてください!
  • Thank you, Sugano!!

せっかくpecoをインストールしたので何か設定変えたい

そして今回の記事の本題ですが、私も何かオリジナルで設定を変えたいと考え、2つほど設定を追加してみました。

設定ファイルの書き方はほぼコピペで二番煎じ感がありますが、非常に便利で実際の仕事中に使っても重宝しています。

せっかくなので紹介させてください。

git checkoutの切り替え先ブランチをpecoで指定

git checkoutでgitのブランチを切り替える時、こんな事あったりしませんか?

  • ローカルリポジトリのブランチが多くて切り替え先ブランチをなかなか見つけられない
  • ブランチ名の途中は覚えているけど、先頭が思い出せなくてブランチ名の補完が効かない

そんな時はpecoにお任せ!以下の設定を~/.zshrcに追加しましょう。

function peco-git-checkout {
  git branch | peco | xargs git checkout
}
zle -N peco-git-checkout
bindkey '^o' peco-git-checkout

この設定を入れるとCtrl + oでpecoの画面が開き、切り替え先のブランチ選択ができます。めっちゃ便利!

pecoの操作をvimライクにする(上下移動・ページ送り・終了)

「はぁ・・vimみたいに十字キー使わずに移動したいなぁ・・」

そう、pecoを触ってみて唯一「つらい・・・」と思った点は選択に十字キーを使わなければいけないという事でした。

でもそんな時はpecoのKeymapにお任せ!以下の設定を~/.peco/config.jsonに追加しましょう。(ファイルが無ければ作りましょう)

{
  "Keymap": {
    "C-j": "peco.SelectDown",
    "C-k": "peco.SelectUp",
    "C-q": "peco.Finish",
    "C-l": "peco.ScrollPageDown",
    "BS": "peco.ScrollPageUp"
  }
}

この設定を入れると、以下のキーがpecoの操作にバインドされます。

  • Ctrl + j:下の行へ移動
  • Ctrl + k:上の行へ移動
  • Ctrl + q:pecoを抜ける
  • Ctrl + l:次ページへ進む(ページが右に遷移するイメージ)
  • Ctrl + h:前ページに戻る(ページが左に遷移するイメージ)

これで無事vimっぽい操作が出来るようになりました。

(ちなみにBSC-hと書いても上手く動作しないのでご注意を!)

こちらの設定については、以下の記事を参考にさせていただきました。

yoshitsugufujii.github.io

おわりに

ちょっと短いですが、pecoデビューを記念してAdventCalendarの記事を投稿してみました。

良い設定が思いついたらまた記事を書きたいと思います!それでは!

インタープリズムの面々が、普段の業務に役立つ記事を丹精込めて書き上げる! Advent Calendar 2016 - Qiita4日目の記事

PAGE TOP