2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

lessコマンドの結果を色付けする

Last updated at Posted at 2024-12-08

はじめに

コマンドラインでファイルをちょっと見たい時にlessコマンドを使いますが、やはりシンタックスハイライトが欲しくなります。
lessコマンドを色付けしてみたので、そのやり方を書きます。

環境

挙動確認した環境は以下です。

対象 バージョン
zsh 5.9 (x86_64-apple-darwin22.1.0)
source-highlight 3.1.9_5
neovim v0.10.2

1. source-highlight

こちらを使います。
GNU Source-highlight

すでに紹介している記事が多くいるので省略しますが、自分は以下を参考にインストールしました。
https://sumito.jp/2019/06/20/source-highlight

使ってみた感想

特にデメリットはなく、悪くないのですが、やはりneovimやVSCodeなどのIDEに比べると色付けが弱いです。
例えば、 .zshrc などは色付けしてくれませんでした。

2. neovim

neovimにはlessやmoreのようにneovimを起動してくれるスクリプトが搭載されています。
https://neovim.io/doc/user/various.html#less

$VIMRUNTIME/macros/less.shにあります。
$VIMRUNTIMEは以下で取得できます。

VIMRUNTIME=$(nvim --clean --headless --cmd 'echo $VIMRUNTIME|q' 2>&1)

公式サイトをみると nvim --clean --headless --cmd 'echo $VIMRUNTIME|q' でいいようなのですが、自分の手元では最後の 2>&1 をつけないと環境変数にパスが入りませんでした。

あとは

alias vless="$VIMRUNTIME/macros/less.sh"

とエイリアスを設定すればOKです。
既存のlessの挙動を置き換えたい場合は以下のようにしましょう。

alias -g less='vless'

使ってみた感想

さすがneovimの色付けだけあって、source-highlightでは無理だったファイル形式も不満のない色付けをしてくれます!
スクリーンショット 2024-12-09 0.35.45.png

少しlessよりも起動に時間がかかる気もしますが、気になるレベルではありません。
ファイルサイズがとても大きいものをlessするともしかしたら大きな差になってくるかもしれないです。

less用のneovim設定はできなかった

neovimをlessとして使ってみると、neovimのようにカーソルがあるなどlessと異なる挙動があります。
これを変えたければ、 LessInitFunc を使うとneovimをlessとして使う場合だけ設定を適用できます。

func LessInitFunc()
  set nocursorcolumn nocursorline
endfunc

ただ、私はneovimの設定をVimScriptではなくluaで書いているのですが、luaで LessInitFunc をどう設定するかわかりませんでした。
試してないのですがluaからVimScriptを読めるらしいので、それで実現はできそうですが、そこまでするほどではないかと思いデフォルトの挙動で使っています。

終わりに

色がつくとファイルが読みやすくなって効率が上がるのでおすすめです。
興味ある方はぜひ一度試してみてください!

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?