#結論
以下のコードを.vimrc
に追記する。
augroup InsertHook
autocmd!
autocmd InsertEnter * hi Normal ctermbg=235 "挿入モード時の色
autocmd InsertLeave * hi Normal ctermbg=0 "通常モード時の色
augroup END
ちょっとした解説
autocmd
の指定で、InsertEnter
は挿入モードになるとき、InsertLeave
は挿入モードから抜けるとき、それぞれ自動でhi
(highlight
)コマンドで色を変更する。*
の部分では、すべてのファイルにマッチするようにしているため、*.c
とすれば、cファイルにのみ適応なども可能。Normal
は全体的に変わる模様。
ctermbg
は色つきターミナルでの背景色。前景色(つまり文字色)はctermfg
になる。GVimの場合はguibg
とguifg
になる。背景色と文字色とを一緒に変更することも可能。
autocmd
の詳細はautocmd - Vim日本語ドキュメントを参照。hi[ghlight]
コマンドに関しては、syntax - Vim日本語ドキュメントで。
色指定に関しては、ANSI Color Specific RGB Sequence Bash - Stack Overflowを参考にした。サンプルでは、色つきターミナルでの256色指定を用いている。
##他にしたこと
2018/11/27 変更
環境によっては、挿入モードを抜けた際に、すぐに切り替わらないので、以下も追記した。
set ttimeoutlen=0
これはタイムアウトが有効になっている場合に、設定も有効になる。タイムアウトは、
set timeout? ttimeout?
のどちらかがオンになていれば、有効である。
vim/gvimの色設定について - fudistでは、以下の設定が紹介されているが、挿入モード中のカーソルキーなどが使えなくなる場合があるため、上記の設定がうまく行かなかった場合に試すとよさそう。
if has('unix') && !has('gui_running')
inoremap <silent> <ESC> <ESC>
endif
@h_east さんのコメント( https://qiita.com/L_Y/items/81395569675d7e55861d#comment-86a57f86855ab1278d7c )より。情報ありがとうございました。
##参考文献
vim/gvimの色設定について - fudist
autocmd - Vim日本語ドキュメント
syntax - Vim日本語ドキュメント
options - Vim日本語ドキュメント
ANSI Color Specific RGB Sequence Bash - Stack Overflow
おさらい autocmd/augroup - Qiita (@s_of_p さん)