Gemcook Tech Blog
🎉

Warpでpecoを導入する方法

2025/01/31に公開

はじめに

開発作業において、ディレクトリの移動は頻繁に行う操作の一つです。この記事では、モダンなターミナルである Warp に peco を導入する方法を解説します。Warp は多くの優れた機能を持っていますが、従来のターミナルで使用できたbindkeyによる設定ができないため、peco の導入に一工夫が必要です。

この記事では以下の内容を説明します。

  • Warp で peco を導入する際の技術的な課題
  • peco と ghq のインストールと設定手順
  • 実際の動作確認方法

この設定により、以下のような効率的な操作が可能になります。

  • ghq で管理しているリポジトリへのインタラクティブな移動
    • 部分一致での絞り込み検索が可能
    • キーボードで素早く選択できる
  • 長いディレクトリパスの入力を省略可能

なぜ Warp では peco を導入できないのか

Warp は生産性を重視した現代的なターミナルエミュレータですが、.zshrcの設定のbindkeyが使えないため peco を導入することができません。
これは Warp のリポジトリの issue としても上がっている問題です。
https://github.com/warpdotdev/warp/issues/537

導入手順

前提条件

  • Warp がインストールされていること
  • Homebrew がインストールされていること
  • Go がインストールされていること

ghq のインストール

Go のインストールから ghq のインストールまでの手順は以下の記事に従って下さい。
https://zenn.dev/obregonia1/articles/e82868e8f66793

Warp 特有の peco のインストールと設定方法

まず、peco をインストールします。

brew install peco

.zshrc に以下の設定を追加します。

ghq の管理化にあるリポジトリを一覧表示するキーバインドを設定する。(この記事では g + Enter とする)

function g (){
  local selected_dir=$(ghq list -p | peco --query "$LBUFFER")
  if [ -n "$selected_dir" ]; then
    cd ${selected_dir}
  fi
}

動作確認

設定完了後、以下の操作で動作を確認できます。

ターミナルを再起動するか、設定を再読み込み

source ~/.zshrc

ghq で clone する

$ ghq get https://github.com/foo/bar.git
# もしくは
$ ghq get git@github.com:foo/bar.git

g + Enter を押して ghq で管理しているリポジトリ一覧を表示

以下のように表示されていれば設定完了です。

QUERY>                                            IgnoreCase [2 (1/1)]
/Users/hoge/src/github.com/foo/bar
/Users/hoge/src/github.com/baz/fuga

これらのショートカットキーで、従来の peco の機能が Warp 上でも利用可能になります。

すでにローカルにあるリポジトリを ghq 管理化に移行する

既存のリポジトリを ghq 管理下に移行する方法は、以下を参照するかghqで再度 get してください。
https://zenn.dev/obregonia1/articles/e82868e8f66793

まとめ

これらの設定により Warp の独自機能と peco を共存させることで、両方のメリットを活かせます。実行する時に打つキーは g と Enter の 2 つだけなので実質キーバインドを設定しているみたいに動作させることができます。

私自身、以前はホームディレクトリに直接 clone していた時期があり、プロジェクトが増えるにつれて管理が大変になっていました。peco と ghq を導入してからは、シンプルなコマンドだけで目的のディレクトリにスムーズに移動できるようになり、作業効率が格段に上がりました。特に、Warp ユーザーの方は少しの設定で環境が整えられ、効率的なリポジトリ管理が実現できます。まだホームディレクトリでリポジトリを直接管理している方は、この機会にぜひ整理してみてはいかがでしょうか。

参考記事

https://zenn.dev/obregonia1/articles/e82868e8f66793
https://www.matac.info/posts/warp-bindkey/

Gemcook Tech Blog
Gemcook Tech Blog

Discussion