Veltioblog

Windows + NYAGOS で ghq と peco を便利に使う設定

Windows + NYAGOS で ghq と peco を使って、リポジトリを便利に移動する方法を紹介します。


僕は Windows ユーザーで、普段は NYAGOS というシェルで生活しています。

NYAGOS は Windows用のコマンドラインシェルで、作者は hymkor さんという日本人の方です。

NYAGOS が気になった方はリポジトリや Zenn の記事を読んでみてください。

そもそも、ghq と peco を使って何ができるのかというところですが、その説明は下の記事に譲ります。

ghqとpecoでリポジトリの管理を便利にする

この投稿の主題は、ghq と peco の使い方を説明することではなく、Windows + NYAGOS 環境で ghq と peco を便利に使う設定を紹介することです。

いまのところの結論

以下を NYAGOS の Lua 設定ファイルに追記します(例: %USERPROFILE%.nyagos)。

-- 改行文字を削除する
function chomp(src)
    return string.gsub(src, "[\r\n]+$", "")
end

-- ghq で管理しているリポジトリを peco で選択して cd する
function pecoli()
    local dir = nyagos.eval("ghq list -p | peco")
    if (dir ~= nil) then
        nyagos.exec("cd " .. '"' .. chomp(dir) .. '"')
    end
end

-- pecoli へのキーバインドを設定 (Ctrl + ])
nyagos.bindkey("C-]", function(this) pecoli() end)

使い方

設定ファイルを書いたら NYAGOS を起動して、Ctrl + ] を押すと、ghq で管理しているリポジトリを peco で選択することができます。

peco に ghq の結果を食わせた画面

今のところの問題点

Ctrl + ] を押して、peco を起動するまでは良いのですが、リポジトリを選択して Enter を押すと Buffer に何も表示されない状態になり、再度 Enter を押すとリポジトリに移動するような挙動になっています。

これが何故なのかまだ調査できていないので、あとで調査したいなと思ってます(わかる方がいたら教えていただけると嬉しいです)。

終わりに

自分はあまりカスタムしない派なのですが(カスタムした内容を忘れてしまうので)、こういう便利な設定はちょこちょこやっていきたいなと思っています。

また、使い勝手をアップデートできたら記事を書こうと思います。

参考にさせて頂いた記事 (lua function は以下の記事を参考にしました、ありがとうございました)