はじめに
lessはとても便利なのですが、~/.bashrc
のような拡張子がないshellスクリプトだと、source-highlight
を使っても色なしになるのが玉に瑕。
そもそも長いScriptを書くときはVScodeのようなエディタを使っている以上、lessで開くファイルに対してbashの設定ファイル系が占める割合は少なくありません。
加えて、lessでファイルの上限や下限まで見たときのbeep音がどういう設定にしてもオフにならない……。
vimのbeep音は簡単に解消できたので、この機に正規のlessから乗り換えることにしました。
じゃあview使えばいいじゃん?
とはいっても、viewにも多少の不満点があるのでそれを解決していきます。
ちなみに、vim内にあるless.shは.vimrcのkey mapが完全には反映されないので不採用です。
パイプ経由の場合と非経由の場合の判断
パイプ経由の場合、viewはview -
で起動します。
これは引数の有無で判断させます。
alias less="_ViewForLess"
function _ViewForLess(){
input="$@"
if [[ "x${input}" != "x" ]] ; then
view "${input}"
else
view -
fi
}
行番号の表示/非表示
lessとvim系は、多少同じコマンドが使えます。(/
による検索やg
による移動など)
ただ、vimでは行番号の表示/非表示のコマンドが:set number/nonumber
と、ちょっとだけ冗長です。
これはkey mapで解決できました。
以下の設定によりm
で行番号の表示/非表示がtoggleできます。
set number
nnoremap m :set number!<CR>
行番号の色変更
行番号の色を変更します。
color themeとの併用もできます。
highlight LineNr ctermfg=120
autocmd ColorScheme * highlight LineNr ctermfg=120
beep音
beep音は邪魔なので消します。
set belloff=all
ペーストの変なインテントを解消する
vimは複数行の内容をペーストする場合、変なインテントが挿入されてしまいます。修正します。
set pastetoggle=<F2>
まとめ
" paste setting
set pastetoggle=<F2>
" no beep
set belloff=all
" show line number
set number
" Color
"" line number
highlight LineNr ctermfg=120
autocmd ColorScheme * highlight LineNr ctermfg=120
" key map
"" toggle line number
nnoremap n :set number!<CR>
おまけ
今回でお役御免になった正規のlessですが、そちらに関するおまけです。
source-highlight
を使えば大半のファイルに対してsyntax-highlightがオンになるのですが、その際、export LESSOPEN='|/usr/share/source-highlight/src-hilite-lesspipe.sh %s'
と設定するようにと指示されるのですが、それにより圧縮ファイルを含むbinaryファイルが開けなくなります。
正直、無視していい程度のデメリットなのですが、/usr/bin/lesspipe
をかませると解消できます。
alias less2='/usr/bin/less -R -N --QUIET'
export LESSOPEN='|/usr/bin/lesspipe | /usr/share/source-highlight/src-hilite-lesspipe.sh %s'
export VISUAL="vim"