Go言語開発環境のための、ghq+pecoの設定手順(macOS, bash向け)


概要

本記事は、bash向けのghq+pecoの導入方法を紹介していきます。

前提

  • Homebrewが入っている
  • Gitが入っている
  • macで開発している

私が確かめた時のbashのバージョンは3.2です。

pecoとは

標準入力で与えられた情報から行を絞込み、標準出力に出力するだけのものです。
こう言われると難しく感じるかもしれませんが、実際に導入するのは簡単で、とてもシンプルなものです。
下に進んでいくと導入例も紹介していますので、是非試してみてください!

GitHub - peco/peco: Simplistic interactive filtering tool

pecoインストール

以下のコマンドでpecoをインストールします。
brew install peco

ghqとは

Go言語のファイル構成の作法に合うようにgit clone(ghq clone)してくれるツールです。

GitHub - motemen/ghq: Remote repository management made easy

ghqインストール

以下のコマンドでghqをインストールします。
brew install ghq
git config --global ghq.root $GOPATH/src

pecoとghqを連携させてみる

ghq get でクローンしてきたディレクトリの一覧を表示させ、選択したディレクトリに移動するファンクションを設定し、Control+gで動くようにしてみます。

.bashrc
function ghql() {
  local selected_file=$(ghq list --full-path | peco --query "$LBUFFER")
  if [ -n "$selected_file" ]; then
    if [ -t 1 ]; then
      echo ${selected_file}
      cd ${selected_file}
      pwd
    fi
  fi
}

bind -x '"\201": ghql'
bind '"\C-g":"\201\C-m"'

書いて保存したら読み込ませます。
source ~/.bashrc

Control+gでちゃんと動くか確認。

こんな感じになっていれば成功です!!
絞り込みの機能もあるので是非使ってみてください。

これで、ghq getでクローンしてきたディレクトリの一覧が表示され、選択するだけで簡単にリポジトリに移動できました。

※ソースコードは、ghq + peco で便利な関数(bash) - とある子育てパパの日記を参考にさせていただきました。
上記サイトのソースコードでは、最後の行のところでうまくbindされず、コマンドを打った後リターンキーを押さないとカレントディレクトリの表示が反映されなかったので、その部分をうまくいくように書き換えています。(参考サイトRedrawing prompt in Bash : linuxquestions)

おまけ

先ほど設定したpecoの機能を、もう少し便利にしてみましょう。

pecoディレクトリを作成する

mkdir ~/.peco

config.jsonファイルを作る

touch ~/.peco/config.json

config.jsonファイルをエディタで開いて以下を書き込んで保存する
.peco/config.json
{
    "InitialFilter": "Fuzzy"
}

これで、先ほどのpecoの絞り込み機能に、あいまい検索機能が追加されます。
打ち込んだ文字列と一致するディレクトリを絞り込んでくれます。便利〜!

おわりに

今回の記事はここまでです。
他にもpecoで便利なことがたくさんできるので、また記事にしようと思います。
(pecoについて詳しい方がおられましたらぜひ教えていただきたいです!)