謝辞
すみません、ほんとはGVimのウィンドウ群とchannelで作るブロック崩しを公開する予定でしたが、間に合いそうにないので代替の投稿をさせていただきます。
作成中
作成中のGVimウィンドウ群で作るブロック崩し pic.twitter.com/7w09OCcCg8
— wordi (@wordijp) December 20, 2019
はじめに
既存のcolorschemeやsyntaxに差分のカスタマイズ設定を追加する方法を紹介します。
afterについて
Vimで読み込まれる設定ファイルはruntimepath
により設定されており、afterは設定の追加読み込み用途として末尾に設定されています。
Windowsの場合
(略),$VIM/vimfiles/after,$HOME/vimfiles/after
独自ハイライトを追加するために、今回はこのafterディレクトリに差分のsyntaxやcolorschemeを置いて対応してみます。
afterに置くcolorschemeについて
追加用のcolorschemeはafter/colors/
ディレクトリに配置するのですが、オリジナルと同名のままではafter/colors/
側だけが読み込まれオリジナルは読み込まれなくなってしまいます。
対策として、両者それぞれを読み込む独自コマンドをvimrcに追加します。
" vimrc
command!-nargs=1ColorSchemecallColorScheme(<f-args>)function!ColorScheme(scheme)
execute 'colorscheme '.a:schemetry
execute 'colorscheme '.a:scheme.'_after'catchendtryendfunction
これで準備完了です。
追加用をafter/colors/
に配置する際は、ファイル名をオリジナル名+_after
へリネームします。
真/偽を強調するハイライト
例として、Go言語にて真/偽を強調する為のハイライトをdesert colorscheme用に作成してみます。
ファイル構成
.vim/after
├── colors
│ └── desert_after.vim
└── syntax
└── go.vim
各設定
" syntax/go.vimsyn keyword goNo false
syn keyword goYes true
synmatch goNo /!=\?/ containedin=CONTAINED
synmatch goYes /==\|!!/ containedin=CONTAINED
synmatch goNoWrong /!==\|!!!/ containedin=CONTAINED
synmatch goYesWrong /===/ containedin=CONTAINED
hi link goNo No
hi link goYes Yes
hi link goNoWrong Error
hi link goYesWrong Error
" colors/desert_after.vimhi No guifg=#ff7777 guibg=#773838hi Yes guifg=#9999ff guibg=#383888
あとはcolorscheme変更の際はColorScheme
コマンドを利用すればOKです。
まとめ
colorschemeは気に入ってるが少しカスタマイズしたい、て時に新たにcolorschemeを作るのは少々大げさになってしまいます。
本記事はcolorschemeもafterディレクトリへの差分設定だけで済ませる方法の紹介でした。