0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

zshで入力コンテキストを維持したままビューをクリアする

Posted at

はじめに

最近、長年連れ添った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接続したサーバー内やコンテナ内ではバッファクリアされてしまいます...

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?