環境
- macOS 13.3.1
- zsh 5.9 (x86_64-apple-darwin22.0)
- iTerm2 3.4.19
症状
- 本来
less
で読んだ中身は通常画面(コマンド打ったりするとこ)に残らないはずであるが、それが残ってしまう。(図1) -
less
やman
などで長い文書を読む際、マウスホイールによるスクロールが反映されない。それだけではなく、上にスクロールすると通常画面が見えてしまう。(図2)
画像
図1. このようにlessで見た中身が残ってしまう。通常ならこの画面には残らないはず。
図2. ウィンドウバーを見ると分かる通り、現在 $ man ls
を実行中(qキーで抜ける前)。上にスクロールするとコマンド部分が見える。
原因
lessのデフォルトオプション設定に-Xが付いていた
~/.zprofile
にlessコマンドのデフォルトオプション設定があった。
そこにて デフォルトで-Xオプションがつけられており、これがマウスホイールの動作に影響を与えていた。
おそらくPreztoか何かを導入した際に自動で生成されたものだと思う(不明)。以下はいつの間にか書かれていたもののコピペ
~/.zprofile
# Set the default Less options.
# Mouse-wheel scrolling has been disabled by -X (disable screen clearing).
# Remove -X to enable it.
if [[ -z "$LESS" ]]; then
export LESS='-N -g -i -M -R -S -w -X -z-4'
fi
こんな丁寧に書いてくれてるや〜ん
iTerm2のprofile設定にalternate screenに関する項目があった
iTerm2 > Settings… > Profiles > Terminal に次のような設定項目がある。
「 [x] Disable save/restore alternate screen 」
この設定によって謎の内容保持が行われていた。
解決法
- lessのデフォルトオプションから-Xをなくす。
- iTerm2のprofile設定「Disable save/restore alternate screen」のチェックを外す。
※自分の好みによってこの辺の設定を変えるのもあり。
おまけ
めっちゃ検索しまくったけどマジで見つからなくて泣いてた。これで助かる人がいればいいなぁ