概要
本記事は、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で動くようにしてみます。
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ファイルをエディタで開いて以下を書き込んで保存する
{
"InitialFilter": "Fuzzy"
}
これで、先ほどのpecoの絞り込み機能に、あいまい検索機能が追加されます。
打ち込んだ文字列と一致するディレクトリを絞り込んでくれます。便利〜!
おわりに
今回の記事はここまでです。
他にもpecoで便利なことがたくさんできるので、また記事にしようと思います。
(pecoについて詳しい方がおられましたらぜひ教えていただきたいです!)