ghq + peco でGoリポジトリ管理を快適にする
概要¶
ghq でリポジトリを一元管理し、peco でインタラクティブに検索して cd する開発者向けターミナル快適化ツール組み合わせ。mizdra's blog にて詳細が公開された。
詳細¶
ghq とは¶
複数のリポジトリを統一されたディレクトリ構造で管理するツール。
# インストール
brew install ghq
# 設定(~/.gitconfig)
[ghq]
root = ~/dev
# リポジトリを clone(自動でディレクトリ構造を作る)
ghq get github.com/username/repo
# → ~/dev/github.com/username/repo/ に clone される
# 管理中のリポジトリ一覧
ghq list
メリット:
- ~/projects/hoge、~/work/fuga のように散らばらない
- どのリポジトリがどこにあるか覚える必要がない
- GitHub の URL 構造をそのままディレクトリ構造にするので直感的
peco とは¶
ターミナルでインタラクティブなフィルタリング検索ができるツール。Unix の grep + インタラクティブ UI。
# インストール
brew install peco
# 使い方の基本:パイプで渡してフィルタリング
ls | peco # ファイル一覧をインタラクティブ検索
history | peco # コマンド履歴をインタラクティブ検索
ghq + peco の組み合わせ¶
# ~/.zshrc または ~/.bashrc に追加
function ghq-peco() {
local repo=$(ghq list | peco --query "$LBUFFER")
if [ -n "$repo" ]; then
BUFFER="cd $(ghq root)/$repo"
zle accept-line
fi
zle -R -c
}
zle -N ghq-peco
bindkey '^]' ghq-peco # Ctrl+] で起動
使い方:
1. Ctrl+] を押すと管理中の全リポジトリ一覧が出る
2. 文字を打つとインクリメンタル検索でフィルタリング
3. Enter で選択 → 自動で cd してそのリポジトリに移動
$ [Ctrl+]] を押す
> github.com/username/my-project ← 検索してEnter
$ cd ~/dev/github.com/username/my-project
発展的な使い方¶
# fzf(peco の高機能版)を使う場合
function ghq-fzf() {
local repo=$(ghq list | fzf --preview "ls $(ghq root)/{}")
[ -n "$repo" ] && cd "$(ghq root)/$repo"
}
alias g='ghq-fzf'
なぜ重要か / いつ使うか¶
- 複数プロジェクトを同時並行で扱っているとき
cd ~/xxx/yyy/zzzのような長いパスを毎回打つのが嫌なとき- リポジトリがどこに clone されているか探す時間を0にしたいとき