💭

ghq + peco で快適環境を手に入れる

に公開

はじめに

WSLで正式にローンチされた Fedora Linux をインストールしたので引き続き環境構築をする
https://zenn.dev/tsuruya/articles/9ed5b3f1ded988
https://zenn.dev/tsuruya/articles/bda57d7b0c96c9

ghq

ghq とは

ghqは、Git リポジトリをローカルにクローン/管理するためのコマンドラインツールです。

Go の go get に似た使い方を狙って作られており、クローンしたリポジトリをルールに従って整理することで、散らばりがちなリポジトリ管理をきれいにする機能を提供しています。

https://github.com/x-motemen/ghq

使い方

デフォルトでは、~/ghq を root ディレクトリとして、その下にホスト名やパス構造に応じたフォルダを自動生成します。
例えば ghq get https://github.com/x-motemen/ghq を実行すると、 ~/ghq/github.com/x-motemen/ghq にクローンされます。

主なコマンド

  • ghq get <リポジトリ>

    指定リポジトリをクローンします。オプションがいくつか用意されていますが使ったことはありません。

  • ghq list [<query>]
    ローカルにある管理下のリポジトリ一覧を表示します。このあと紹介する peco と合わせて利用します。

メリット / 使いどころ

  1. 決まった場所にリポジトリをクローンしてくれるので、どこに置くか悩む必要がなく、ディレクトリ構成が URL によって自動的に整理されるのでラク。
    整理だけでなくコマンドラインでのディレクトリの移動、可視性の向上が見込まれます。

  2. クローンするリポジトリが多ければ多いほど力を発揮すると思っています。
    複数プロジェクトを並行して扱うエンジニアや、プロダクトを機能ごとにリポジトリを分けているような場合には便利なんじゃないでしょうか。

  3. 1.とおんなじような理由かもしれませんが、クローンする場所が決まっているので「あのリポジトリどこにクローンしたっけ?」みたいなことが無くなります。
    実際にアプリケーションをデプロイしているサーバはディレクトリを確認する手間があるので、それがないだけで快適です。

peco

peco とは

pecoは、コマンドラインで実行できるインタラクティブなフィルタリング/選択ツールです。

https://github.com/peco/peco

使い方

コマンドラインで受け取るテキスト(ファイル一覧、プロセス一覧、ログ、履歴など)を対象に、インタラクティブに検索・絞り込みをします。

ls | peco
find ~/projects | peco
history | peco
ps aux | peco

コマンド実行後、画面上に QUERY> プロンプトが表示され、文字を入力するたびにリアルタイムでマッチする文字列が絞り込まれていきます。
マッチした文字列は上下キーで選択ができるようになっています。

フィルタリングの方法として、大小文字を区別する/しない、正規表現複数などのマッチ方式が選べます。
私はデフォルトの状態で運用しています。(ghq と一緒にしか使ってない…)
オプションも色々あるみたいですが、それも使ったことが無いので気になる方は調べてみてください。

こういった使い方便利だよって知っている方いればコメントで教えて下さい。

ghq + peco

本題です。

ghq と peco を合わせることでリポジトリの移動がめちゃくちゃラクになります。

環境構築

どうラクになるのか解説の前にghqpecoを使えるよう環境構築をしましょう。

  1. Goのインストール

    • 下記コマンドでGoをインストールする
    sudo dnf -y install golang
    
  2. 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/
    
  3. 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開く

というのが快適すぎてこれ無しでは開発できない体になってしまいました。

エイリアス登録

先程組み合わせたコマンドを毎回打つのは面倒すぎるのでエイリアス登録して一発で呼び出せるようにします。

  1. vim で開く

    vim ~/.bashrc
    
  2. どこでも良いので以下を追記して保存する

    alias g='cd $(ghq root)/$(ghq list | peco)'
    
  3. パスを通す

    source ~/.bashrc
    

gリポジトリへ移動code .でリポジトリを VS Code で開ける快適環境を手に入れれます。

GitHubで編集を提案

Discussion