0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【WSL2】リポジトリ管理の最適解。ghq + fzf のプレビュー機能で爆速移動&VS Code起動環境を作る

0
Last updated at Posted at 2026-04-27

はじめに

最近、Claude Codeなどの自律型AIエージェントや、CLIベースの強力な開発ツールをワークフローに組み込む機会が急激に増えてきました。

AIがターミナル上で自律的にコードを生成し、コマンドを叩いてテストを回してくれる現代において、開発者にとっても、「CUI(ターミナル)を中心としたシームレスな開発体験」の重要性が、以前にも増して高まっています。

しかし、WSL2(Ubuntu)のターミナルを開いた直後、cdlsを繰り返して目的のプロジェクトを探したり、~/Documents/GitHub/~/workspace/の下に様々なリポジトリが無秩序に散らかっていたりしませんか?

かつてはghq + pecoの組み合わせでディレクトリを管理するのが定番でしたが、現在はより高速で 圧倒的に強力な「プレビュー機能」 を持つfzfを組み合わせるのがモダンなベストプラクティスです。

本記事では、Mac向けの情報が多いこの組み合わせを、WSL2 (Ubuntu) 環境へ最適に導入する手順 から 「ターミナル上でリポジトリの中身をのぞき見し、選択した瞬間にVS Codeが立ち上がる最強のショートカット を設定するまでを解説します。

1. ghqの導入と基本設定

ghq は、Gitリポジトリをホスティングサービス(GitHubなど)のドメインやユーザー名ごとに整理して自動配置してくれる神ツールです。

Goのインストール(※要注意トラップ)

Ubuntu環境では、Goを使ってインストールするのが最も確実です。
ただし、ここで単に sudo apt install golang-go を実行すると古いバージョンのGoが入ってしまい、ghqのインストール時にエラーになることがよくあります。

これを防ぐため、Go言語公式Wikiでも推奨されているPPA(最新版のリポジトリ)を追加してからインストールします。

# 最新のGoを取得するためのPPAを追加
sudo add-apt-repository ppa:longsleep/golang-backports -y
sudo apt update

# 最新版のGoをインストール
sudo apt install golang-go -y

ghqのインストール

最新のGoが入ったら、以下のコマンドで ghq をインストールします。
同時に、インストールしたツールをターミナルからすぐに呼び出せるよう、~/.bashrc へのPATH追記と反映までを一気に実行してしまいます。

# ghqのインストール
go install github.com/x-motemen/ghq@latest

# Goでインストールしたバイナリ(~/go/bin)へのパスを通す
echo 'export PATH=$PATH:$(go env GOPATH)/bin' >> ~/.bashrc

# 設定を現在のターミナルに反映
source ~/.bashrc

ghqのルートディレクトリ設定

クローンしたリポジトリをどこに保存するかを設定します。今回は~/ghqをベースにします。

git config --global ghq.root ~/ghq

【重要】自動的にSSHプロトコルでクローンさせる設定

GitHubからリポジトリをクローンする際、後々コミット時にPGP署名(GPG署名)を行うことや、認証の確実性を考慮すると、HTTPSではなく SSH でセキュアにクローンしたい場面が多くあります。

しかし ghq の仕様上、ghq get (アカウント名)/(リポジトリ名) と短縮形で指定して実行すると、デフォルトではHTTPS通信(https://github.com/... )として解釈されてしまいます。

これを「自動的にSSHでのクローン」に変換させるため、Gitの insteadOf という機能を設定しておきます。

git config --global url."git@github.com:".insteadOf "https://github.com/"

この設定を1行入れておくだけで、以降は ghq get mfunaki/my-repo と打った際にも、裏側で自動的に git@github.com:mfunaki/my-repo.git として解釈され、SSH経由でスムーズにクローンが行われるようになります。

2. fzf の導入

fzf はターミナル上の出力をインクリメンタルサーチできるフィルタツールですが、単なる曖昧検索ツールだと思っていませんか? 実は、fzfの真骨頂は「プレビュー機能」にあります。

Ubuntuの apt で入るバージョンは古いことがあるため、公式推奨のGitクローン経由でのインストールがおすすめです。

git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf
~/.fzf/install

インストールを実行すると、途中で以下の3つの質問(対話プロンプト)が表示されます。基本的にはすべて y (Yes) を入力して進めてください。

  1. Do you want to enable fuzzy auto-completion?
    (あいまい検索による自動補完を有効にしますか?)
  2. Do you want to enable key bindings?
    (履歴検索などのキーバインドを有効にしますか?)
  3. Do you want to update your shell configuration files?
    (.bashrc 等の設定ファイルを自動更新してよろしいですか?)

3. 【準備】プレビュー用のモダンツールを導入

fzf のプレビュー画面をリッチにするため、モダンなファイルツリー表示ツールである eza (旧 exa の後継) をインストールしておきます。

sudo apt update
sudo apt install eza -y

4. 【本命】ターミナルから爆速で移動&プレビュー&VS Code起動

ここからが本番です。
ghq で管理しているリポジトリを fzf で検索し、右側のプレビュー画面でディレクトリ構造を確認してから、移動と同時にVS CodeのRemote-WSLで開く」という一連の動作を、ショートカットキー一発で呼び出せるようにします。

お使いのシェルの設定ファイル(~/.bashrc または ~/.zshrc)の末尾に、以下のスクリプトを追記してください。

# ghq + fzf 連携関数(プレビュー機能付き)
function cd-ghq() {
  # ezaを使って右側にディレクトリツリーをプレビュー表示する
  local dir="$(ghq list --full-path | fzf --reverse --height 50% --prompt='Select Repo > ' --preview 'eza --tree --level=2 --color=always --icons {}')"
  
  if [ -n "$dir" ]; then
    cd "$dir"
    echo "Moved to $dir"
    # そのままVS Codeで開く
    code .
  fi
}

# Ctrl + g で呼び出せるようにキーバインドを設定 (Bash用)
bind '"\C-g":"cd-ghq\n"'

(zsh をお使いの場合は、キーバインド行を zle -N cd-ghqbindkey '^g' cd-ghqに書き換えてください。)
追記したら、source ~/.bashrc で設定を反映させます。

動作確認

ghq + fzf + eza on WSL2/Ubuntu

ターミナル上で Ctrl + g を押してみてください。
リポジトリの一覧と同時に、その中身(ツリー構造)が右側にプレビューされます。カーソルキーで上下に移動するだけで、エディタを開く前に「あ、このプロジェクトだ」と一瞬で判断できます。

Enterを押せば、そのディレクトリへ移動すると同時に、自動的にVS Codeが立ち上がります!
やっぱやめた(これじゃない)という時には、Esc キーで抜けられます。

思考のスピードでプロジェクトを切り替えられる、最高に気持ちいい体験の完成です。

ワンポイント: fzfを入れたら絶対に使うべき「Ctrl + R」

インストール時にキーバインドを有効化すると、Ctrl + R でコマンド履歴のあいまい検索ができるようになります。
これが今回構築した「リポジトリ移動(Ctrl + G)」と最高のコンボになります。

先ほどの Ctrl + G で目的のリポジトリを選択すると、即座にVS Codeが立ち上がりますよね。その直後、VS Codeの内蔵ターミナルを開いて Ctrl + R を押し、runtest などと打つだけで、「前回そのプロジェクトで叩いた長いビルドコマンドや、テスト起動コマンド」を1秒で呼び出して再実行できます。

また、Claude CodeなどのAIエージェントに投げた「長文の指示プロンプト」も、キーワード検索で一瞬で復元できるため、相性は抜群です。

カーソルキーの上矢印 ↑ を連打して履歴を遡る日々は、今日で終わりにしましょう!

終わりに(次回予告)

WSL2上のターミナルから一瞬でVS Codeを開けるようになると、AIを活用した開発スピードは劇的に上がります。

しかし、この環境でいざ git commit をしようとした際、「パスフレーズの入力画面がバグってコミットできない(WSL2/Ubuntuにいるつもりなのに command not found 等になる)」 という、VS Code内蔵ターミナル特有の恐ろしい罠が待ち受けていることがあります。

次回は、この「WSL2 × VS Code の Git認証トラップ」を、Ubuntu純正のGUIダイアログ(WSLg)を使ってスマートに完全解決する方法を解説します!

もし今回の記事が少しでもお役に立てましたら、いいねやストック、アカウントをフォローしてお待ちいただけると、次回の執筆の大きな励みになります!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?