はじめに
最近、長年連れ添ったiTerm2から、WezTermに乗り換え中です。
設定がコード(Lua)で書けて良い感じなのですが、操作性になれるまで一苦労しています。
そんな中でどうしてもしっくりこない部分がありました。
Ctrl + lの画面クリアです(iTerm2ではCmd + r)
標準のクリアだとバッファが消えてしまい、iTerm2を使ってきた自分にとってはCmd + rが癖になってしまっており、スクロールし履歴確認などもしていました。
対応したこと
WezTermの公式サイトにClearScrollBackがのような設定があるため、カスタムできそうにも思えたのですが、この挙動は意図した仕様であり、Linux上のxtermの動作にも準拠してるためこのようになっているとのこと(参考)
慣れそうになかったのでzshのZLEを使って、.zshrcで設定をしてみました。
# 画面をスクロールアップして擬似的にクリアする処理をキーマップに登録
function push_to_top() {
# 1. 画面の高さ分だけ改行を連打して、今のログを上に押し出す
repeat $LINES echo ""
# 2. カーソルを左上(1行目)に強制移動
printf "\e[H"
# 3. zshの再描画
zle redisplay
}
# ZLEウィジェットに登録
zle -N push_to_top
# Ctrl + lに割り当て
bindkey '^L' push_to_top
これで、Ctrl + lでiTerm2っぽい画面クリアができるようになりました。
デメリット
.zshrcにて設定をしているため、SSH接続したサーバー内やコンテナ内ではバッファクリアされてしまいます...