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が有効になるように、カラーファイル自体に直接追加することをおすすめします。

colorファイルの改変

.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:$