Lessのmanページを眺めてみた

Lessのmanページを眺めていたら便利な設定を見つけたので気になったもの順で書き出してみた。manページ眺めるのは暇つぶしに最適なだけでなく、結構役に立つ情報を入手できる。こういう文章をきちんと追える人ってすごいなと思います。

--line-numbers で左側に行番号を表示する事ができる。このオプションは大量のファイルを読み込んだ時に処理が遅くなってしまうのを防ぐためにデフォルトではオフになっているんだけど正直ONにしておいて問題ないと思う。

= で全体のなんバイトあたりを見ているかを表示してくれる。

-+ の後にオプションを続けるとそのオプションのデフォルト設定にリセットしてくれる。いろいろいじくり回して戻したい時に便利かも。例えば -+m として使うとプロンプト表示をshortにできる。 -+M も同じ。つまり、プロンプト表示はデフォルトではshortという事だ。

-!-+ と反対の意味で、オプションを有効にしてくれる。

_ を使えばオプションの現在の設定値を表示してくれる。 _m みたいに使う。

プロンプト表示

-m でプロンプトの表示をmediumに変更する事ができる。既にmedium表示になっていたらshort表示に切り替わる。

-M でプロンプトの表示をlongに変更する事ができる。既にlong表示になっていたらshort表示に切り替わる。

プロンプトの表示形式は別で指定する事ができて、デフォルト値だとmedium、shortの表示はそのときの状況によって変わるようになっている見たい。

ちなみに次が自分の環境のデフォルトでのプロンプト設定値だった。結構長い。

?n?f%f .?m(%T %i of %m) ..?e(END) ?x- Next\: %x.:?pB%pB\%:byte %bB?s/%s...%t

?から始まるものは条件を表していて、%から始まるものは表示する情報を表している。

最初の部分だけ意味を整理してみよう。

?n

これは最初のプロンプト表示なのかを判定している。最初のプロンプト表示であるならば、次の内容を表示する。

?f%f .?m(%T %i of %m) .

ちょっと複雑だけど、これはピリオドが二つとクエッションが二つあるので二つの内容に分解できる。

?f%f .

これはファイル名がわかるなら、ファイル名を表示するという意味。

?m(%T %i of %m) .

これは一つ以上のファイルを開いていた場合、今開いているファイルのインデックスと開いているファイルの総数を表示するという意味。

つまり、プロンプトを最初に表示する時に、ファイル名がわかるならファイル名を、一つ以上のファイルを開いている場合はその情報を表示するという意味になる。ちょっと複雑で最初は慣れないかもだけど、慣れて仕舞えば簡単に理解できそう。そもそもlessで複数ファイル開けたんだ...。

-P でプロンプトの表示内容を変更できるのでちょっとカスタマイズを試してみた。

?ltTopLine %lt. ?lbBottomLine %lb.

これは画面表示上で上下の行数を表示する。 ?lt?lb はちょっと特殊な扱いで、?lX のXに入る文字列で意味が違ってくる。この例で使っているのは tb でそれぞれ画面上の上下の行を表している。

lesskey

lesskeyと呼ばれるファイルでlessのデフォルト動作を変更できるみたい。ただ、手元のMacにはlesskeyコマンドが入っていなくてマニュアルを見る事ができなかった。ので、後でまとめようと思う。

環境変数

lessは環境変数の値で動作を変更する事ができるみたい。manページのENVIRONMENT VARIABLESに詳しく書いてある。

lessで開いている時に v コマンドでファイルをエディタで開く事ができるんだけれど、エディタは EDITOR 環境変数でしていする事ができる。自分の環境だとデフォルトがviだったのでnvimに変更してみた。

LESS 環境変数にオプションを指定しておくとlessのデフォルトの動作を変更できる。自分は -N -M を指定して常に行番号とロングプロンプトを表示するように変更してみた。ただ、デフォルトの動作設定はlesskeyで行う方がいいのかもしれない。lesskeyの方が設定をファイルに書き出せる分メンテナンスがやりやすそう。