記事

Last Modified:

less --quit-if-one-screenは便利だが--no-initを忘れるな #Shell

1画面より小さな出力をlessする時は、catのようにそのまま画面に出して欲しいことがあります。特にGit使ってる時に頻繁に感じます。

less--quit-if-one-screen(-F)オプションを使うとまさに上記の挙動になります。

ただ、lessデフォルトの挙動として「画面クリア→元画面復帰」が行なわれるので、そのままでは「一瞬だけ表示されてすぐ終了」となって何も表示されないように見えます(ちょいハマりました)。 この挙動は--no-init(-X)オプションを付けることによって抑制できます。 (これは環境によって違うみたい。Version444ではその通りだけど、Version436では--quit-if-one-screen(-F)を指定したら--no-init(-X)も勝手に指定したことになるっぽい)

Gitで有効にするために~/.gitconfig

[core]
    pager = less --no-init --quit-if-one-screen

としています。

ところで--no-init(-X)には弊害があって、「画面クリア→元画面復帰」をしてくれないのでバッファが汚れてしまうようになるのです。 困りましたね。--quit-if-one-screen(-F)の効果が発揮された時だけ(1画面に収まった時だけ)--no-init(-X)の効果を得たいんですが…。