ってのをやってみたんだけど、結果的に微妙だった。一応やり方を紹介しておく。
設定
解説とかは面倒なのでソースのみ。
" conceal の表示を有効にする set conceallevel=1 " どのモードで conceal の文字にするか set concealcursor=nvic augroup vimrc-highlight " {{{ autocmd! autocmd ColorScheme * call s:highlight_additional() autocmd BufWinEnter * call s:syntax_additional(1) autocmd Syntax * call s:syntax_additional(0) augroup END " }}} function! s:syntax_additional(b) " {{{ if a:b && exists('b:additional_syntax') return endif let b:additional_syntax = 1 syntax match IdeographicSpace / / display containedin=ALL conceal cchar=□ endfunction " }}} function! s:highlight_additional() " {{{ " "IdeographicSpace" のハイライト(四角になるので実際には必要ない) highlight IdeographicSpace term=underline ctermbg=DarkGreen guibg=DarkGreen " 設定している colorscheme に合わせて背景色と文字色を設定 highlight Conceal term=underline ctermbg=Black ctermfg=DarkGreen guibg=Black guifg=Grey endfunction " }}}
何が微妙だったか
まず、この設定は性質上全てのバッファで適用する必要があるんだけど、conceal の設定は各ウィンドウに 1 つのみ。つまり他に conceal 機能を使っていた場合 'conceallevel' や 'concealcursor' が共有されてしまう。全角スペースのみ setl concealcursor=nvic する、とかはできない。
ハイライトに関しても、今回は 'concealcursor' で全てのモードで□表示にしているのだけど、ビジュアル選択すると背景色が残念なことになる。
てわけで、だったら無理せんでも今まで通り matchadd() で背景色だけ変えればいいか、という結論に至ったのでした。わかればいいしね。