はじめに
コマンドラインでファイルをちょっと見たい時に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では無理だったファイル形式も不満のない色付けをしてくれます!
少しlessよりも起動に時間がかかる気もしますが、気になるレベルではありません。
ファイルサイズがとても大きいものをlessするともしかしたら大きな差になってくるかもしれないです。
less用のneovim設定はできなかった
neovimをlessとして使ってみると、neovimのようにカーソルがあるなどlessと異なる挙動があります。
これを変えたければ、 LessInitFunc
を使うとneovimをlessとして使う場合だけ設定を適用できます。
func LessInitFunc()
set nocursorcolumn nocursorline
endfunc
ただ、私はneovimの設定をVimScriptではなくluaで書いているのですが、luaで LessInitFunc
をどう設定するかわかりませんでした。
試してないのですがluaからVimScriptを読めるらしいので、それで実現はできそうですが、そこまでするほどではないかと思いデフォルトの挙動で使っています。
終わりに
色がつくとファイルが読みやすくなって効率が上がるのでおすすめです。
興味ある方はぜひ一度試してみてください!