🐕

【古いpecoが参照されてた】Windows10にWSLを再インストールしたら、pecoの表示が化けるようになった【brewでインストール】

に公開

Windows10にWSLを再インストールしたら、pecoの表示が化けるようになった

結論と解決

Ubuntu 22.04以降で、古いバージョンのpecoがUbuntuリポジトリに含まれるようになったらしく、何かしらの別パッケージが、僕の環境に古いpecoをインストールしていたことが原因だった。

$ which bin
/bin/peco

brewなどで新しいpecoをインストールして、そちらが先に参照されるようにすれば直る。
(よく知られてないかもしれないけど、brewはmacOSだけじゃなくて、Linuxにも入れられるんだよ。)

$ sudo apt remove peco
$ brew install peco
$ which peco
/home/linuxbrew/.linuxbrew/bin/peco

$ sudo apt remove pecoしたくない特殊な事情があるなら、$PATHを調整すればいい。

どうおかしくなってたの?

以下を実行すると

$ cat << EOF | peco
a
b
c
EOF

pecoに突入した時点で、以下のような表示になっていた。

$ cat << EOF | peco
c
%p1%dG
a
>O                                                                                                                                                                                                                                      IgnoreCase [3 (1/1)]
%p1%dGQ

a,b,cがリバースしており、c,b,aになっている? のと、bが%p1%dGになっている。

詳しくは追ってないけど、僕のClaude Codeによると
%p1%dGみたいな制御文字の化けは、古いpecoのターミナル制御機能の問題だったのですね♪」
とのこと。

解決

これがおかしい。

$ which bin
/bin/peco

新しいpecoを入れる。

$ sudo apt remove peco
$ brew install peco
$ which peco
/home/linuxbrew/.linuxbrew/bin/peco

なんで以前は大丈夫だったの?

僕は以前はUbuntu20.04あたりを使っており、またbrewからpecoをインストールしていたため。

Discussion