📖
less や man で検索したときのカーソル位置を中央にする
例えば man grep
して /filename<CR>
したときに、このような表示になってしまい、「その説明はどのオプションに対する説明なの?」って思わされることが何度もありました。
Vim の scrolloff みたいに、検索にヒットした行を中央に表示するようなオプションがあるはずだ。と思い立って調べてみたところ、ありました。
環境変数 LESS
に -j.5
を追加しておくと、先程の操作の結果がこうなります。
めでたし。これで積年の悩みが解消されました。以下、細かいところについて説明します。なお手元の環境は macOS Ventura です。
どうして man の話なのに LESS なのか
man のぺージャーがデフォルトで less で(ソースは man man
)、less のデフォルトオプションを指定するのが環境変数 LESS
だから(ソースは man less
)です。
less の -j オプションについて
man less
すると、かなり長い説明が出てきます。かいつまんで説明するとこうです。
- ターゲット行が表示される行を指定します。
- 1 と書けば 1 行目に、2 と書けば 2 行目に表示されます。
- .5 と書けば画面の中央に表示されます。
どこで LESS を指定するのか
自分は zsh
なので ~/.zprofile
に書いてます。更に踏み込んで話すと、prezto を使っているので、prezto が ~/.zprofile
で指定している LESS
に追加しています。
# prezto デフォルト
# https://github.com/sorin-ionescu/prezto/blob/8d00c51900dfce3b2bc1e5bd99bd58f238c5668a/runcoms/zprofile#L66
export LESS='-g -i -M -R -S -w -X -z-4'
# それに -j.5 を追加
export LESS='-g -i -j.5 -M -R -S -w -X -z-4'
まとめ
LESS
に -j.5
を追加して快適になったという話でした。ChatGPT 時代なので、初手で man を引く機会は減っていますが、念のため man を引くようにしているので、未だに役立っています。
Discussion