vim/gvimの色設定について
Windowsの場合は .vimrc → _vimrc 、.gvimrc → _vimrcに読み替えて下さい。
色テーマ(カラー設定ファイル)を利用して色を変える
colorファイル
vim起動時の色設定は .vimrc、 gvim起動時の色設定は .gvimrc で色設定ファイルを指定してやる必要があります。
.vimrc で色設定ファイルを指定した場合 vim では有効ですが、gvim では有効になりません。
" カラー設定:
colorscheme darkblue
一時的に変更したい場合はコマンドラインから指定します。
識別名は<Tab>で補完できます。
:colorscheme morning
gvimの場合は メニューの 「編集(E)」の色テーマ選択からも変更できます。
各所で配布されているcolorファイルを利用して色を変更する事が出来ますので、好みの色設定ファイルを探して変更してみて下さい。
http://code.google.com/p/vimcolorschemetest/
用意したカラーファイルはユーザーランタイムディレクトリ .vim/colors (Windowsは vimfiles/colors)へコピーして下さい。
ファイル名がカラーの識別名になります。
colorファイルの改変
現在どのようなハイライトが設定されているかは highlightコマンドで確認できます。
:highlight
gvimの場合は メニューのシンタックス(S)→ハイライトテスト(H)からも確認できます。
CursorIMや新しく増えたハイライトは対応していないカラーファイルも多いので足りない物は追加したり、色を変更したりしてみてください。
最終行に追加すると追加した設定の方が有効になります。
スクリーンショットはdarkblueを改変したmydark.vimです。
- mydark.vim
- mylight.vim
色はRGB直接指定でもいいのですが、カラーネームで指定するとわかりやすくなります。
次のページのスクリプトを実行すると、実際の色と対比可能で便利です。
http://vim.wikia.com/wiki/View_all_colors_available_to_gvim
一つのカラーファイルで背景色がlightとdarkの両方に対応することもできます。
以下はhybrid.vimを改変したものです。
- mycolor.vim
背景色はlightとdarkが選べてそれぞれ別のハイライトに設定されます。
:set bg=light
黒背景の場合はdarkを指定します。
:set bg=dark
IMEの状態でカーソルの色を変更する
gvimではhighlightのCursorIMを設定するとIMEの状態によってカーソル色を変えることができます。
helpでは gvimrcに設定を追加するように、と説明されています。
しかし公開されているカラーファイルで CursorIMを設定しているものは少なくて、カラー設定を一度リセットしてからカラー再設定をしているために大抵の場合有効にはなりません。
したがって、.gvimrcでカラーファイルを指定した後に CursorIMを設定するか、カラーファイルに直接 CursorIMを追加してやるのが妥当でしょう。
個人的には使用中に色テーマを変更する場合などでも CursorIMが有効になるように、カラーファイル自体に直接追加することをおすすめします。
.gvimrcで設定する場合
".gvimrc カラー設定
"カラー設定した後にCursorIMを定義する方法
colorscheme mycolor
if has('multi_byte_ime')
highlight Cursor guifg=NONE guibg=Green
highlight CursorIM guifg=NONE guibg=Purple
endif
挿入モードでステータスラインの色を変更する
挿入モードではステータス行の色を変更すると現在の編集モードを間違える事が無くなって便利です。
以下を .vimrcに追加すると挿入モードとノーマルモードでステータス行の色を変更する事が出来ます。
hi_insertで挿入モード時の色を好みの色に変更して下さい。
""""""""""""""""""""""""""""""
"挿入モード時、ステータスラインの色を変更
""""""""""""""""""""""""""""""
let g:hi_insert = 'highlight StatusLine guifg=darkblue guibg=darkyellow gui=none ctermfg=blue ctermbg=yellow cterm=none'
if has('syntax')
augroup InsertHook
autocmd!
autocmd InsertEnter * call s:StatusLine('Enter')
autocmd InsertLeave * call s:StatusLine('Leave')
augroup END
endif
let s:slhlcmd = ''
function! s:StatusLine(mode)
if a:mode == 'Enter'
set cursorline
silent! let s:slhlcmd = 'highlight ' . s:GetHighlight('StatusLine')
silent exec g:hi_insert
else
set nocursorline
highlight clear StatusLine
silent exec s:slhlcmd
endif
endfunction
function! s:GetHighlight(hi)
redir => hl
exec 'highlight '.a:hi
redir END
let hl = substitute(hl, '[\r\n]', '', 'g')
let hl = substitute(hl, 'xxx', '', '')
return hl
endfunction
cygwinや Ubuntuの vim(非GUI)では <ESC>の後、すぐに色が反映されないことがあります。
端末設定等によっては問題ないようですが、面倒な場合は以下でもすぐに反映されるようになります。
if has('unix') && !has('gui_running') " ESC後にすぐ反映されない対策 inoremap <silent> <ESC> <ESC> endif
全角スペースを強調表示する
表示としては全角スペースを明示的に表示するようにしていると良いかもしれません。
全角スペースの強調表示には以下を .vimrcに追加します。
色設定ファイルで全角スペースの色を変更したい場合は ZenkakuSpaceの highlight定義行を削除して下さい。
""""""""""""""""""""""""""""""
"全角スペースを表示
""""""""""""""""""""""""""""""
"コメント以外で全角スペースを指定しているので scriptencodingと、
"このファイルのエンコードが一致するよう注意!
"全角スペースが強調表示されない場合、ここでscriptencodingを指定すると良い。
"scriptencoding cp932
"デフォルトのZenkakuSpaceを定義
function! ZenkakuSpace() highlight ZenkakuSpace cterm=underline ctermfg=darkgrey gui=underline guifg=darkgrey endfunction
if has('syntax') augroup ZenkakuSpace autocmd!
" ZenkakuSpaceをカラーファイルで設定するなら次の行は削除
autocmd ColorScheme * call ZenkakuSpace()
" 全角スペースのハイライト指定
autocmd VimEnter,WinEnter * match ZenkakuSpace / / autocmd VimEnter,WinEnter * match ZenkakuSpace '\%u3000'
augroup END call ZenkakuSpace() endif
タブと「行末の半角スペース」の強調表示
タブや「行末の半角スペース」の強調表示も設定可能です。
タブと「行末の半角スペース」は SpecialKey のハイライト設定で強調表示されます。
"Tab、行末の半角スペースを明示的に表示する。
set list
set listchars=tab:^\ ,trail:~
改行記号も eol として強調表示可能です。
set listchars=tab:^\ ,trail:~,eol:$