📖

less や man で検索したときのカーソル位置を中央にする

2023/06/04に公開

例えば 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