ホーム‎ > ‎VimとUTF-8‎ > ‎

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.vimを改変したサンプルカラーファイル


mycolor.vim (デフォルトで含まれているdarkblue.vimに各種ハイライトを追加、変更したもの。colors_name = "mycolor")
darkblue.vimを mycolor.vimにリネームして、以下を最終行に追加しました。
" orignal "darkblue" end

let colors_name = "mycolor"

hi String     ctermfg=brown guifg=Orange cterm=none gui=none
hi MatchParen guifg=Yellow guibg=DarkCyan
hi SignColumn guibg=#101020
hi CursorIM   guifg=NONE guibg=Red
hi CursorLine guifg=NONE guibg=#505050

色はRGB直接指定でもいいのですが、カラーネームで指定するとわかりやすくなります。
次のページのスクリプトを実行すると、実際の色と対比可能で便利です。
http://vim.wikia.com/wiki/View_all_colors_available_to_gvim



改変して個人的に使用しているカラーファイル。
mylight.vim (背景が白)
mydark.vim (背景が濃紺)

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'
    silent! let s:slhlcmd = 'highlight ' . s:GetHighlight('StatusLine')
    silent exec g:hi_insert
  else
    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:$

Comments