ghq + peco で快適環境を手に入れる
はじめに
WSLで正式にローンチされた Fedora Linux をインストールしたので引き続き環境構築をする
ghq
ghq とは
ghqは、Git リポジトリをローカルにクローン/管理するためのコマンドラインツールです。
Go の go get に似た使い方を狙って作られており、クローンしたリポジトリをルールに従って整理することで、散らばりがちなリポジトリ管理をきれいにする機能を提供しています。
使い方
デフォルトでは、~/ghq を root ディレクトリとして、その下にホスト名やパス構造に応じたフォルダを自動生成します。
例えば ghq get https://github.com/x-motemen/ghq を実行すると、 ~/ghq/github.com/x-motemen/ghq にクローンされます。
主なコマンド
-
ghq get <リポジトリ>
指定リポジトリをクローンします。オプションがいくつか用意されていますが使ったことはありません。
-
ghq list [<query>]
ローカルにある管理下のリポジトリ一覧を表示します。このあと紹介する peco と合わせて利用します。
メリット / 使いどころ
-
決まった場所にリポジトリをクローンしてくれるので、どこに置くか悩む必要がなく、ディレクトリ構成が URL によって自動的に整理されるのでラク。
整理だけでなくコマンドラインでのディレクトリの移動、可視性の向上が見込まれます。 -
クローンするリポジトリが多ければ多いほど力を発揮すると思っています。
複数プロジェクトを並行して扱うエンジニアや、プロダクトを機能ごとにリポジトリを分けているような場合には便利なんじゃないでしょうか。 -
1.とおんなじような理由かもしれませんが、クローンする場所が決まっているので「あのリポジトリどこにクローンしたっけ?」みたいなことが無くなります。
実際にアプリケーションをデプロイしているサーバはディレクトリを確認する手間があるので、それがないだけで快適です。
peco
peco とは
pecoは、コマンドラインで実行できるインタラクティブなフィルタリング/選択ツールです。
使い方
コマンドラインで受け取るテキスト(ファイル一覧、プロセス一覧、ログ、履歴など)を対象に、インタラクティブに検索・絞り込みをします。
例
ls | peco
find ~/projects | peco
history | peco
ps aux | peco
コマンド実行後、画面上に QUERY> プロンプトが表示され、文字を入力するたびにリアルタイムでマッチする文字列が絞り込まれていきます。
マッチした文字列は上下キーで選択ができるようになっています。
フィルタリングの方法として、大小文字を区別する/しない、正規表現複数などのマッチ方式が選べます。
私はデフォルトの状態で運用しています。(ghq と一緒にしか使ってない…)
オプションも色々あるみたいですが、それも使ったことが無いので気になる方は調べてみてください。
こういった使い方便利だよって知っている方いればコメントで教えて下さい。
ghq + peco
本題です。
ghq と peco を合わせることでリポジトリの移動がめちゃくちゃラクになります。
環境構築
どうラクになるのか解説の前にghqとpecoを使えるよう環境構築をしましょう。
-
Goのインストール
- 下記コマンドでGoをインストールする
sudo dnf -y install golang -
pecoのインストール
- 下記コマンドでpecoをインストールする
wget https://github.com/peco/peco/releases/download/v0.5.10/peco_linux_amd64.tar.gz tar zxvf peco_linux_amd64.tar.gz- 解凍したファイル
pecoを/usr/local/binに移動してパスを通す
sudo mv peco_linux_amd64/peco /usr/local/bin rm peco_linux_amd64.tar.gz rm -rf peco_linux_amd64/ -
ghqのインストール
- 下記インストールコマンドを実行
go install github.com/x-motemen/ghq@latest- インストールした
ghqを/usr/local/binに移動してパスを通す
sudo mv go/bin/ghq /usr/local/bin
これでghqコマンドとpecoコマンドが実行できるようになっているはずです。
使い方
先程紹介したghq listコマンドに対してパイプでpecoコマンドを渡してあげるとリポジトリの一覧が表示されるではありませんか。
ghq list | peco
実行結果
QUERY>
github.com/tsuruya-jp/karilog
github.com/tsuruya-jp/zenn-docs
github.com/tsuruya-jp/xxx
github.com/tsuruya-jp/yyy
github.com/tsuruya-jp/zzz
⋮
上下で選択しEnterでリポジトリを選択できます。ただし、これだけでは文字列を返すだけなのでさらにコマンドを組み合わせましょう。
cd $(ghq root)/$(ghq list | peco)
このコマンドを実行すると先程同様に選択画面が表示されます。
が、選択→Enterすると、選択したリポジトリに移動することができます!!
WSL 環境で開発しているため、ターミナルからcodeコマンドでリポジトリを VS Code で開くんですが、
リポジトリへ移動→code .でVS Code開く
というのが快適すぎてこれ無しでは開発できない体になってしまいました。
エイリアス登録
先程組み合わせたコマンドを毎回打つのは面倒すぎるのでエイリアス登録して一発で呼び出せるようにします。
-
vim で開く
vim ~/.bashrc -
どこでも良いので以下を追記して保存する
alias g='cd $(ghq root)/$(ghq list | peco)' -
パスを通す
source ~/.bashrc
g→リポジトリへ移動→code .でリポジトリを VS Code で開ける快適環境を手に入れれます。
Discussion