以前、こういう記事を書いた。
ansicolumn
を使うと、画面のちょうど倍数だけの行を出力する。これを less
で読むとどうなるかというと、最後にスペースでページを送ると必ず何もない空白のページが表示される。以前からこれが地味にストレスだったので、どうにかできないかという話。
まず、G
で最終ページに飛ぶという方法がある。こうすると、そこでスペースを入力しても空ページは表示されない。最後のページが見たいのならそのままでいいし、そうでなければ g
で先頭に戻る。
であれば、これを自動的に実行すればいい。なんとかならないかと考えてみたら、実は簡単だった。less
に +Gg
というオプションをつけて実行するだけだ。
optex -Mtc ansicolumn -DPC2 sample.docx | less +Gg
+
の後に文字を指定すると、それを入力したかのように実行してくれる。だから上に書いたように、G
で最後に飛んだ後に g
で先頭に戻る動作を自動的にやってくれる。それは画面上には表示されないので、見ていてもまったく気がつかない。
いつもこれを実行したいのなら LESS
という環境変数を設定すればいい。
export LESS="-cR+Gg"
のようにすれば、常にこのオプション付きで実行される。しかし、終わりのないデータだったりすると永遠にまたされることになるので、必要な時だけにした方がいい。
調べると +Gg
の効能は他にもあった。less
の -M
オプションは、行番号とファイル中の位置を表示してくれるのだが、一度最後のページまで行かないと全体の行数がわからない。こんな時には +Gg
を付けろというのが常套手段のようだ。
less -M +Gg
ちなみに +
オプションはたまに使うことがあって、
less +100
のようにすれば100行目を表示してくれるし、
less +/pattern
のように使えば、pattern
を検索してその行を表示してくれる。
vi
でも同様に使えるので、知らなかった人はお試しあれ。