wslttyという、WSL用の端末エミュレータがあります。
GitHub - mintty/wsltty: Mintty as a terminal for Bash on Ubuntu on Windows / WSL
wslttyは、以前はスクロールバックが事実上無制限だったのですが、最近のバージョンだとたったの25万行しか保持できなくなっていました。 これは(あまり普通の使い方ではなさそうですが)私の使い方では大問題です。
他の端末エミュレータ
調べた範囲ではまともな端末エミュレータは他には存在しませんでした。
Windowsで使えるターミナルとシェルのまとめ - Qiitaを参考に以下を導入して調べましたが、全く話になりません。
| 端末エミュレータ | 最大スクロールバック | 備考 |
|---|---|---|
| ConEmu | 32766行 | これを超える値を設定すると強制的にこの値になる |
| ConsoleZ | 32766行 | これを超える値を設定するとエラーとなる |
| Hyper | 無限? | yesコマンドに対するCtrl+Cの効きが悪い(7秒くらいかかる) |
| PowerShell | 実測で9031行 | 最大スクロールバックの量をいくら大きくしても無言で この量になって邪悪。また、 yesコマンドに対するCtrl+Cの効きが悪い(2秒くらいかかる) |
wslttyの設定で直せる
wslttyはオープンソースですから、解決策を自力で探すことができます。 wslttyはminttyの薄いラッパーなので、minttyのソースを読む必要があります。
GitHubでscrollbackなどと検索してみると、以下のコードが怪しそうであることがわかります。
https://github.com/mintty/mintty/blob/eb8c5c81e561598704ff7f3384917debaaa4f529/src/config.c#L160
どうやらこのコミットでスクロールバックが25万行に制限されてしまったようです
MaxScrollbackLinesはGUIからは設定できませんが、configファイルを直接編集することで設定できます。
configファイルは、C:\Users\lpha\AppData\Roaming\wslttyにありました。
これに、MaxScrollbackLines=999999999を書き加えれば、スクロールバックが以前と同様に十分多く保持されるようになりました。