Commits

wuhan88  committed a5c98a0

my vim configure file

  • Participants

Comments (0)

Files changed (22)

File .vim/colors/256-jungle.vim

+" Vim color file
+" Maintainer:	Piotr Husiatyński <phusiatynski@gmail.com>
+
+set background=dark
+set t_Co=256
+let g:colors_name="256-jungle"
+
+let python_highlight_all = 1
+let c_gnu = 1
+
+
+hi Normal	    ctermfg=253         ctermbg=234         cterm=None
+hi Cursor       ctermfg=253         ctermbg=57          cterm=None
+hi SpecialKey	ctermfg=70          ctermbg=None        cterm=None
+hi Directory	ctermfg=57          ctermbg=254         cterm=None
+hi ErrorMsg     ctermfg=160         ctermbg=245         cterm=None
+hi PreProc	    ctermfg=243         ctermbg=None        cterm=Bold
+hi Search	    ctermfg=125         ctermbg=None        cterm=Bold
+hi Type		    ctermfg=166         ctermbg=None        cterm=Bold
+hi Statement	ctermfg=172         ctermbg=None        cterm=Bold
+hi Comment	    ctermfg=240         ctermbg=None        cterm=None
+hi LineNr	    ctermfg=244         ctermbg=233         cterm=None
+hi NonText	    ctermfg=105         ctermbg=None        cterm=Bold
+hi DiffText	    ctermfg=165         ctermbg=244         cterm=None
+hi Constant	    ctermfg=76          ctermbg=None        cterm=None
+hi Todo         ctermfg=162         ctermbg=None        cterm=Bold
+hi Identifier	ctermfg=142         ctermbg=None        cterm=Bold
+hi Error	    ctermfg=None        ctermbg=196         cterm=Bold
+hi Special	    ctermfg=172         ctermbg=None        cterm=Bold
+hi Ignore       ctermfg=221         ctermbg=None        cterm=Bold
+hi Underline    ctermfg=147         ctermbg=None        cterm=Italic
+
+hi FoldColumn	ctermfg=132         ctermbg=None        cterm=None
+hi Folded       ctermfg=132         ctermbg=None        cterm=Bold
+
+hi Visual       ctermfg=248         ctermbg=238         cterm=None
+
+hi Pmenu        ctermfg=62          ctermbg=233         cterm=None
+hi PmenuSel     ctermfg=69          ctermbg=232         cterm=Bold
+hi PmenuSbar    ctermfg=247         ctermbg=233         cterm=Bold
+hi PmenuThumb   ctermfg=248         ctermbg=233         cterm=None
+
+hi StatusLineNC ctermfg=248         ctermbg=239         cterm=None
+hi StatusLine   ctermfg=39          ctermbg=239         cterm=None
+hi VertSplit    ctermfg=239         ctermbg=239         cterm=None
+
+hi TabLine      ctermfg=245         ctermbg=239         cterm=None
+hi TabLineFill  ctermfg=239         ctermbg=239
+hi TabLineSel   ctermfg=104         ctermbg=236         cterm=Bold
+"vim: sw=4

File .vim/colors/moria.vim

+if exists("g:moria_style")
+    let s:moria_style = g:moria_style
+else
+    let s:moria_style = &background
+endif
+
+if exists("g:moria_monochrome")
+    let s:moria_monochrome = g:moria_monochrome
+else
+    let s:moria_monochrome = 0
+endif
+
+if exists("g:moria_fontface")
+    let s:moria_fontface = g:moria_fontface
+else
+    let s:moria_fontface = "plain"
+endif
+
+execute "command! -nargs=1 Colo let g:moria_style = \"<args>\" | colo moria"
+
+if s:moria_style == "black" || s:moria_style == "dark"
+    set background=dark
+elseif s:moria_style == "light" || s:moria_style == "white"
+    set background=light
+else
+    let s:moria_style = &background 
+endif
+
+hi clear
+
+if exists("syntax_on")
+    syntax reset
+endif
+
+let colors_name = "moria"
+
+if &background == "dark"
+    if s:moria_style == "dark"
+        hi Normal ctermbg=Black ctermfg=LightGray guibg=#202020 guifg=#d0d0d0 gui=none
+
+        hi CursorColumn ctermbg=DarkGray ctermfg=White guibg=#404040 gui=none
+        hi CursorLine ctermbg=DarkGray ctermfg=White guibg=#404040 gui=none
+    elseif s:moria_style == "black"
+        hi Normal ctermbg=Black ctermfg=LightGray guibg=#000000 guifg=#d0d0d0 gui=none
+
+        hi CursorColumn ctermbg=DarkGray ctermfg=White guibg=#3a3a3a gui=none
+        hi CursorLine ctermbg=DarkGray ctermfg=White guibg=#3a3a3a gui=none
+    endif
+    if s:moria_monochrome == 1
+        hi FoldColumn ctermbg=bg guibg=bg guifg=#a0a0a0 gui=none
+        hi LineNr guifg=#a0a0a0 gui=none
+        hi MoreMsg guibg=bg guifg=#b6b6b6 gui=bold
+        hi NonText ctermfg=DarkGray guibg=bg guifg=#a0a0a0 gui=bold
+        hi Pmenu guibg=#909090 guifg=#000000 gui=none
+        hi PmenuSbar guibg=#707070 guifg=fg gui=none
+        hi PmenuThumb guibg=#d0d0d0 guifg=bg gui=none
+        hi SignColumn ctermbg=bg guibg=bg guifg=#a0a0a0 gui=none
+        hi StatusLine ctermbg=LightGray ctermfg=Black guibg=#4c4c4c guifg=fg gui=bold
+        hi StatusLineNC ctermbg=DarkGray ctermfg=Black guibg=#404040 guifg=fg gui=none
+        hi TabLine guibg=#6e6e6e guifg=fg gui=underline
+        hi TabLineFill guibg=#6e6e6e guifg=fg gui=underline
+        hi VertSplit ctermbg=LightGray ctermfg=Black guibg=#404040 guifg=fg gui=none
+        if s:moria_fontface == "mixed"
+            hi Folded guibg=#4e4e4e guifg=#c0c0c0 gui=bold
+        else
+            hi Folded guibg=#4e4e4e guifg=#c0c0c0 gui=none
+        endif            
+    else
+        hi FoldColumn ctermbg=bg guibg=bg guifg=#8fa5d1 gui=none
+        hi LineNr guifg=#8fa5d1 gui=none
+        hi MoreMsg guibg=bg guifg=#97abd5 gui=bold
+        hi NonText ctermfg=DarkGray guibg=bg guifg=#8fa5d1 gui=bold
+        hi Pmenu guibg=#6381be guifg=#000000 gui=none
+        hi PmenuSbar guibg=#41609e guifg=fg gui=none
+        hi PmenuThumb guibg=#bdcae3 guifg=bg gui=none
+        hi SignColumn ctermbg=bg guibg=bg guifg=#8fa5d1 gui=none
+        hi StatusLine ctermbg=LightGray ctermfg=Black guibg=#334b7d guifg=fg gui=bold
+        hi StatusLineNC ctermbg=DarkGray ctermfg=Black guibg=#25365a guifg=fg gui=none
+        hi TabLine guibg=#41609e guifg=fg gui=underline
+        hi TabLineFill guibg=#41609e guifg=fg gui=underline
+        hi VertSplit ctermbg=LightGray ctermfg=Black guibg=#25365a guifg=fg gui=none
+        if s:moria_fontface == "mixed"
+            hi Folded guibg=#4e4e4e guifg=#bdcae3 gui=bold
+        else
+            hi Folded guibg=#4e4e4e guifg=#bdcae3 gui=none
+        endif            
+    endif
+    hi Cursor guibg=#ffa500 guifg=bg gui=none
+    hi DiffAdd guibg=#008b00 guifg=fg gui=none
+    hi DiffChange guibg=#00008b guifg=fg gui=none
+    hi DiffDelete guibg=#8b0000 guifg=fg gui=none
+    hi DiffText guibg=#0000cd guifg=fg gui=bold
+    hi Directory guibg=bg guifg=#1e90ff gui=none
+    hi ErrorMsg guibg=#ee2c2c guifg=#ffffff gui=bold
+    hi IncSearch guibg=#e0cd78 guifg=#000000 gui=none
+    hi ModeMsg guibg=bg guifg=fg gui=bold
+    hi PmenuSel guibg=#e0e000 guifg=#000000 gui=none
+    hi Question guibg=bg guifg=#e8b87e gui=bold
+    hi Search guibg=#90e090 guifg=#000000 gui=none
+    hi SpecialKey guibg=bg guifg=#e8b87e gui=none
+    if has("spell")
+        hi SpellBad guisp=#ee2c2c gui=undercurl
+        hi SpellCap guisp=#2c2cee gui=undercurl
+        hi SpellLocal guisp=#2ceeee gui=undercurl
+        hi SpellRare guisp=#ee2cee gui=undercurl
+    endif
+    hi TabLineSel guibg=bg guifg=fg gui=bold
+    hi Title ctermbg=Black ctermfg=White guifg=fg gui=bold
+    if version >= 700
+        hi Visual ctermbg=LightGray ctermfg=Black guibg=#606060 gui=none
+    else
+        hi Visual ctermbg=LightGray ctermfg=Black guibg=#606060 guifg=fg gui=none
+    endif
+    hi VisualNOS ctermbg=DarkGray ctermfg=Black guibg=bg guifg=#a0a0a0 gui=bold,underline
+    hi WarningMsg guibg=bg guifg=#ee2c2c gui=bold
+    hi WildMenu guibg=#e0e000 guifg=#000000 gui=bold
+
+    hi Comment guibg=bg guifg=#d0d0a0 gui=none
+    hi Constant guibg=bg guifg=#87df71 gui=none
+    hi Error guibg=bg guifg=#ee2c2c gui=none
+    hi Identifier guibg=bg guifg=#7ee0ce gui=none
+    hi Ignore guibg=bg guifg=bg gui=none
+    hi lCursor guibg=#00e700 guifg=#000000 gui=none
+    hi MatchParen guibg=#008b8b gui=none
+    hi PreProc guibg=bg guifg=#d7a0d7 gui=none
+    hi Special guibg=bg guifg=#e8b87e gui=none
+    hi Todo guibg=#e0e000 guifg=#000000 gui=none
+    hi Underlined ctermbg=Black ctermfg=White guibg=bg guifg=#00a0ff gui=underline    
+
+    if s:moria_fontface == "mixed"
+        hi Statement guibg=bg guifg=#7ec0ee gui=bold
+        hi Type guibg=bg guifg=#f09479 gui=bold
+    else
+        hi Statement guibg=bg guifg=#7ec0ee gui=none
+        hi Type guibg=bg guifg=#f09479 gui=none
+    endif
+
+    hi htmlBold ctermbg=Black ctermfg=White guibg=bg guifg=fg gui=bold
+    hi htmlBoldItalic ctermbg=Black ctermfg=White guibg=bg guifg=fg gui=bold,italic
+    hi htmlBoldUnderline ctermbg=Black ctermfg=White guibg=bg guifg=fg gui=bold,underline
+    hi htmlBoldUnderlineItalic ctermbg=Black ctermfg=White guibg=bg guifg=fg gui=bold,underline,italic
+    hi htmlItalic ctermbg=Black ctermfg=White guibg=bg guifg=fg gui=italic
+    hi htmlUnderline ctermbg=Black ctermfg=White guibg=bg guifg=fg gui=underline
+    hi htmlUnderlineItalic ctermbg=Black ctermfg=White guibg=bg guifg=fg gui=underline,italic
+elseif &background == "light"
+    if s:moria_style == "light"
+        hi Normal ctermbg=White ctermfg=Black guibg=#f0f0f0 guifg=#000000 gui=none
+
+        hi CursorColumn ctermbg=LightGray ctermfg=Black guibg=#d8d8d8 gui=none
+        hi CursorLine ctermbg=LightGray ctermfg=Black guibg=#d8d8d8 gui=none
+    elseif s:moria_style == "white"
+        hi Normal ctermbg=White ctermfg=Black guibg=#ffffff guifg=#000000 gui=none
+
+        hi CursorColumn ctermbg=LightGray ctermfg=Black guibg=#dfdfdf gui=none
+        hi CursorLine ctermbg=LightGray ctermfg=Black guibg=#dfdfdf gui=none
+    endif
+    if s:moria_monochrome == 1
+        hi FoldColumn ctermbg=bg guibg=bg guifg=#7a7a7a gui=none
+        hi Folded guibg=#cfcfcf guifg=#404040 gui=bold
+        hi LineNr guifg=#7a7a7a gui=none
+        hi MoreMsg guibg=bg guifg=#505050 gui=bold
+        hi NonText ctermfg=DarkGray guibg=bg guifg=#7a7a7a gui=bold
+        hi Pmenu guibg=#9a9a9a guifg=#000000 gui=none
+        hi PmenuSbar guibg=#808080 guifg=fg gui=none
+        hi PmenuThumb guibg=#c0c0c0 guifg=fg gui=none
+        hi SignColumn ctermbg=bg guibg=bg guifg=#7a7a7a gui=none
+        hi StatusLine ctermbg=Black ctermfg=White guibg=#a0a0a0 guifg=fg gui=bold
+        hi StatusLineNC ctermbg=LightGray ctermfg=Black guibg=#b0b0b0 guifg=fg gui=none
+        hi TabLine guibg=#cdcdcd guifg=fg gui=underline
+        hi TabLineFill guibg=#cdcdcd guifg=fg gui=underline
+        hi VertSplit ctermbg=LightGray ctermfg=Black guibg=#b0b0b0 guifg=fg gui=none
+    else
+        hi FoldColumn ctermbg=bg guibg=bg guifg=#375288 gui=none
+        hi Folded guibg=#cfcfcf guifg=#25365a gui=bold
+        hi LineNr guifg=#375288 gui=none
+        hi MoreMsg guibg=bg guifg=#2f4471 gui=bold
+        hi NonText ctermfg=DarkGray guibg=bg guifg=#375288 gui=bold
+        hi Pmenu guibg=#708bc5 guifg=#000000 gui=none
+        hi PmenuSbar guibg=#4a6db5 guifg=fg gui=none
+        hi PmenuThumb guibg=#a6b7db guifg=fg gui=none
+        hi SignColumn ctermbg=bg guibg=bg guifg=#375288 gui=none
+        hi StatusLine ctermbg=Black ctermfg=White guibg=#8fa5d1 guifg=fg gui=bold
+        hi StatusLineNC ctermbg=LightGray ctermfg=Black guibg=#a6b7db guifg=fg gui=none
+        hi TabLine guibg=#b8c6e2 guifg=fg gui=underline
+        hi TabLineFill guibg=#b8c6e2 guifg=fg gui=underline
+        hi VertSplit ctermbg=LightGray ctermfg=Black guibg=#a6b7db guifg=fg gui=none
+    endif
+    hi Cursor guibg=#883400 guifg=bg gui=none
+    hi DiffAdd guibg=#008b00 guifg=#ffffff gui=none
+    hi DiffChange guibg=#00008b guifg=#ffffff gui=none
+    hi DiffDelete guibg=#8b0000 guifg=#ffffff gui=none
+    hi DiffText guibg=#0000cd guifg=#ffffff gui=bold
+    hi Directory guibg=bg guifg=#0000f0 gui=none
+    hi ErrorMsg guibg=#ee2c2c guifg=#ffffff gui=bold
+    hi IncSearch guibg=#ffcd78 gui=none
+    hi ModeMsg ctermbg=White ctermfg=Black guibg=bg guifg=fg gui=bold
+    hi PmenuSel guibg=#ffff00 guifg=#000000 gui=none
+    hi Question guibg=bg guifg=#813f11 gui=bold
+    hi Search guibg=#a0f0a0 gui=none
+    hi SpecialKey guibg=bg guifg=#912f11 gui=none
+    if has("spell")
+        hi SpellBad guisp=#ee2c2c gui=undercurl
+        hi SpellCap guisp=#2c2cee gui=undercurl
+        hi SpellLocal guisp=#008b8b gui=undercurl
+        hi SpellRare guisp=#ee2cee gui=undercurl
+    endif
+    hi TabLineSel guibg=bg guifg=fg gui=bold
+    hi Title guifg=fg gui=bold
+    if version >= 700
+        hi Visual ctermbg=LightGray ctermfg=Black guibg=#c4c4c4 gui=none
+    else
+        hi Visual ctermbg=LightGray ctermfg=Black guibg=#c4c4c4 guifg=fg gui=none
+    endif    
+    hi VisualNOS ctermbg=DarkGray ctermfg=Black guibg=bg guifg=#a0a0a0 gui=bold,underline
+    hi WarningMsg guibg=bg guifg=#ee2c2c gui=bold
+    hi WildMenu guibg=#ffff00 guifg=fg gui=bold
+
+    hi Comment guibg=bg guifg=#786000 gui=none
+    hi Constant guibg=bg guifg=#077807 gui=none
+    hi Error guibg=bg guifg=#ee2c2c gui=none
+    hi Identifier guibg=bg guifg=#007080 gui=none
+    hi Ignore guibg=bg guifg=bg gui=none
+    hi lCursor guibg=#008000 guifg=#ffffff gui=none
+    hi MatchParen guibg=#00ffff gui=none
+    hi PreProc guibg=bg guifg=#800090 gui=none
+    hi Special guibg=bg guifg=#912f11 gui=none
+    hi Statement guibg=bg guifg=#1f3f81 gui=bold
+    hi Todo guibg=#ffff00 guifg=fg gui=none
+    hi Type guibg=bg guifg=#912f11 gui=bold
+    hi Underlined ctermbg=White ctermfg=Black guibg=bg guifg=#0000cd gui=underline
+
+    hi htmlBold ctermbg=White ctermfg=Black guibg=bg guifg=fg gui=bold
+    hi htmlBoldItalic ctermbg=White ctermfg=Black guibg=bg guifg=fg gui=bold,italic
+    hi htmlBoldUnderline ctermbg=White ctermfg=Black guibg=bg guifg=fg gui=bold,underline
+    hi htmlBoldUnderlineItalic ctermbg=White ctermfg=Black guibg=bg guifg=fg gui=bold,underline,italic
+    hi htmlItalic ctermbg=White ctermfg=Black guibg=bg guifg=fg gui=italic
+    hi htmlUnderline ctermbg=White ctermfg=Black guibg=bg guifg=fg gui=underline
+    hi htmlUnderlineItalic ctermbg=White ctermfg=Black guibg=bg guifg=fg gui=underline,italic
+endif
+
+hi! default link bbcodeBold htmlBold
+hi! default link bbcodeBoldItalic htmlBoldItalic
+hi! default link bbcodeBoldItalicUnderline htmlBoldUnderlineItalic
+hi! default link bbcodeBoldUnderline htmlBoldUnderline
+hi! default link bbcodeItalic htmlItalic
+hi! default link bbcodeItalicUnderline htmlUnderlineItalic
+hi! default link bbcodeUnderline htmlUnderline

File .vim/colors/peaksea.vim

+" Vim color file --- psc (peak sea color) "Lite version"
+" Maintainer:	Pan, Shi Zhu <Go to the following URL for my email>
+" URL:		http://vim.sourceforge.net/scripts/script.php?script_id=760
+" Last Change:	30 May 2008
+" Version:	3.2
+"
+"	Comments and e-mails are welcomed, please prepend [VIM] in the title
+"	when writing e-mail to me, thanks.
+"
+"	The peaksea color is simply a colorscheme with the default settings of
+"	the original ps_color. Lite version means there's no custom settings
+"	and fancy features such as integration with reloaded.vim 
+"
+"	The full version of ps_color.vim will be maintained until Vim 8.
+"	By then there will be only the lite version: peaksea.vim
+"
+" Note: Please set the background option in your .vimrc and/or .gvimrc
+"
+"	'background' option should NEVER be set inside a colorscheme file.
+"	because ":set background" inside a colorscheme will cause colorscheme
+"	be sourced at least twice, in the worst case this may result an
+"	infinite loop!
+"
+
+hi clear
+
+if exists("syntax_on")
+  syntax reset
+endif
+
+let g:colors_name = expand("<sfile>:t:r")
+
+" Relevant Help: 
+" :h hi-groups
+" :h psc-cterm-color-table
+" :ru syntax/hitest.vim
+"
+" Colors Order:
+" #rrggbb
+"
+
+" I don't want to abuse folding, but here folding is used to avoid confusion. 
+if &background=='light' 
+  " for background=light {{{2
+  " LIGHT COLOR DEFINE START
+
+  hi Normal		guifg=#000000	guibg=#e0e0e0	gui=NONE
+  hi Search		guifg=NONE	guibg=#f8f8f8	gui=NONE
+  hi Visual		guifg=NONE	guibg=#a6caf0	gui=NONE
+  hi Cursor		guifg=#f0f0f0	guibg=#008000	gui=NONE
+  " The idea of CursorIM is pretty good, however, the feature is still buggy
+  " in the current version (Vim 7.0).
+  " The following line will be kept commented until the bug fixed.
+  "
+  " hi CursorIM		guifg=#f0f0f0	guibg=#800080
+  hi Special		guifg=#907000	guibg=NONE	gui=NONE
+  hi Comment		guifg=#606000	guibg=NONE	gui=NONE
+  hi Number		guifg=#907000	guibg=NONE	gui=NONE
+  hi Constant		guifg=#007068	guibg=NONE	gui=NONE
+  hi StatusLine		guifg=fg	guibg=#a6caf0	gui=NONE
+  hi LineNr		guifg=#686868	guibg=NONE	gui=NONE
+  hi Question		guifg=fg	guibg=#d0d090	gui=NONE
+  hi PreProc		guifg=#009030	guibg=NONE	gui=NONE
+  hi Statement		guifg=#2060a8	guibg=NONE	gui=NONE
+  hi Type		guifg=#0850a0	guibg=NONE	gui=NONE
+  hi Todo		guifg=#800000	guibg=#e0e090	gui=NONE
+  " NOTE THIS IS IN THE WARM SECTION
+  hi Error		guifg=#c03000	guibg=NONE	gui=NONE
+  hi Identifier		guifg=#a030a0	guibg=NONE	gui=NONE
+  hi ModeMsg		guifg=fg	guibg=#b0b0e0	gui=NONE
+  hi VisualNOS		guifg=fg	guibg=#b0b0e0	gui=NONE
+  hi SpecialKey		guifg=#1050a0	guibg=NONE	gui=NONE
+  hi NonText		guifg=#002090	guibg=#d0d0d0	gui=NONE
+  hi Directory		guifg=#a030a0	guibg=NONE	gui=NONE
+  hi ErrorMsg		guifg=fg	guibg=#f0b090	gui=NONE
+  hi MoreMsg		guifg=#489000	guibg=NONE	gui=NONE
+  hi Title		guifg=#a030a0	guibg=NONE	gui=NONE
+  hi WarningMsg		guifg=#b02000	guibg=NONE	gui=NONE
+  hi WildMenu		guifg=fg	guibg=#d0d090	gui=NONE
+  hi Folded		guifg=NONE	guibg=#b0e0b0	gui=NONE
+  hi FoldColumn		guifg=fg	guibg=#90e090	gui=NONE
+  hi DiffAdd		guifg=NONE	guibg=#b0b0e0	gui=NONE
+  hi DiffChange		guifg=NONE	guibg=#e0b0e0	gui=NONE
+  hi DiffDelete		guifg=#002090	guibg=#d0d0d0	gui=NONE
+  hi DiffText		guifg=NONE	guibg=#c0e080	gui=NONE
+  hi SignColumn		guifg=fg	guibg=#90e090	gui=NONE
+
+  hi IncSearch		guifg=#f0f0f0	guibg=#806060	gui=NONE
+  hi StatusLineNC	guifg=fg	guibg=#c0c0c0	gui=NONE
+  hi VertSplit		guifg=fg	guibg=#c0c0c0	gui=NONE
+  hi Underlined		guifg=#6a5acd	guibg=NONE	gui=underline
+  hi Ignore		guifg=bg	guibg=NONE
+  " NOTE THIS IS IN THE WARM SECTION
+  if v:version >= 700
+    if has('spell')
+      hi SpellBad	guifg=NONE	guibg=NONE	guisp=#c03000
+      hi SpellCap	guifg=NONE	guibg=NONE	guisp=#2060a8
+      hi SpellRare	guifg=NONE	guibg=NONE	guisp=#a030a0
+      hi SpellLocal	guifg=NONE	guibg=NONE	guisp=#007068
+    endif
+    hi Pmenu		guifg=fg	guibg=#e0b0e0
+    hi PmenuSel		guifg=#f0f0f0	guibg=#806060	gui=NONE
+    hi PmenuSbar	guifg=fg	guibg=#c0c0c0	gui=NONE
+    hi PmenuThumb	guifg=fg	guibg=#c0e080	gui=NONE
+    hi TabLine		guifg=fg	guibg=#c0c0c0	gui=NONE
+    hi TabLineFill	guifg=fg	guibg=#c0c0c0	gui=NONE
+    hi TabLineSel	guifg=fg	guibg=NONE	gui=NONE
+    hi CursorColumn	guifg=NONE	guibg=#f0b090
+    hi CursorLine	guifg=NONE	guibg=NONE	gui=underline
+    hi MatchParen	guifg=NONE	guibg=#c0e080
+  endif
+
+  " LIGHT COLOR DEFINE END
+
+  " Vim 7 added stuffs
+  if v:version >= 700
+    hi Ignore		gui=NONE
+
+    " the gui=undercurl guisp could only support in Vim 7
+    if has('spell')
+      hi SpellBad	gui=undercurl
+      hi SpellCap	gui=undercurl
+      hi SpellRare	gui=undercurl
+      hi SpellLocal	gui=undercurl
+    endif
+    hi TabLine		gui=underline
+    hi TabLineFill	gui=underline
+    hi CursorLine	gui=underline
+  endif
+
+  " For reversed stuffs, clear the reversed prop and set the bold prop again
+  hi IncSearch		gui=bold
+  hi StatusLine		gui=bold
+  hi StatusLineNC	gui=bold
+  hi VertSplit		gui=bold
+  hi Visual		gui=bold
+
+  " Enable the bold property
+  hi Question		gui=bold
+  hi DiffText		gui=bold
+  hi Statement		gui=bold
+  hi Type		gui=bold
+  hi MoreMsg		gui=bold
+  hi ModeMsg		gui=bold
+  hi NonText		gui=bold
+  hi Title		gui=bold
+  hi DiffDelete		gui=bold
+  hi TabLineSel		gui=bold
+
+  " gui define for background=light end here
+
+  if &t_Co==256
+    " 256color light terminal support here
+
+    hi Normal		ctermfg=16	ctermbg=254	cterm=NONE
+    hi Search		ctermfg=NONE	ctermbg=231	cterm=NONE
+    hi Visual		ctermfg=NONE	ctermbg=153	cterm=NONE
+    hi Cursor		ctermfg=255	ctermbg=28	cterm=NONE
+    " hi CursorIM	ctermfg=255	ctermbg=90
+    hi Special		ctermfg=94	ctermbg=NONE	cterm=NONE
+    hi Comment		ctermfg=58	ctermbg=NONE	cterm=NONE
+    hi Number		ctermfg=94	ctermbg=NONE	cterm=NONE
+    hi Constant		ctermfg=23	ctermbg=NONE	cterm=NONE
+    hi StatusLine	ctermfg=fg	ctermbg=153	cterm=NONE
+    hi LineNr		ctermfg=242	ctermbg=NONE	cterm=NONE
+    hi Question		ctermfg=fg	ctermbg=186	cterm=NONE
+    hi PreProc		ctermfg=29	ctermbg=NONE	cterm=NONE
+    hi Statement	ctermfg=25	ctermbg=NONE	cterm=NONE
+    hi Type		ctermfg=25	ctermbg=NONE	cterm=NONE
+    hi Todo		ctermfg=88	ctermbg=186	cterm=NONE
+    " NOTE THIS IS IN THE WARM SECTION
+    hi Error		ctermfg=130	ctermbg=NONE	cterm=NONE
+    hi Identifier	ctermfg=133	ctermbg=NONE	cterm=NONE
+    hi ModeMsg		ctermfg=fg	ctermbg=146	cterm=NONE
+    hi VisualNOS	ctermfg=fg	ctermbg=146	cterm=NONE
+    hi SpecialKey	ctermfg=25	ctermbg=NONE	cterm=NONE
+    hi NonText		ctermfg=18	ctermbg=252	cterm=NONE
+    hi Directory	ctermfg=133	ctermbg=NONE	cterm=NONE
+    hi ErrorMsg		ctermfg=fg	ctermbg=216	cterm=NONE
+    hi MoreMsg		ctermfg=64	ctermbg=NONE	cterm=NONE
+    hi Title		ctermfg=133	ctermbg=NONE	cterm=NONE
+    hi WarningMsg	ctermfg=124	ctermbg=NONE	cterm=NONE
+    hi WildMenu		ctermfg=fg	ctermbg=186	cterm=NONE
+    hi Folded		ctermfg=NONE	ctermbg=151	cterm=NONE
+    hi FoldColumn	ctermfg=fg	ctermbg=114	cterm=NONE
+    hi DiffAdd		ctermfg=NONE	ctermbg=146	cterm=NONE
+    hi DiffChange	ctermfg=NONE	ctermbg=182	cterm=NONE
+    hi DiffDelete	ctermfg=18	ctermbg=252	cterm=NONE
+    hi DiffText		ctermfg=NONE	ctermbg=150	cterm=NONE
+    hi SignColumn	ctermfg=fg	ctermbg=114	cterm=NONE
+
+    hi IncSearch	ctermfg=255	ctermbg=95	cterm=NONE
+    hi StatusLineNC	ctermfg=fg	ctermbg=250	cterm=NONE
+    hi VertSplit	ctermfg=fg	ctermbg=250	cterm=NONE
+    hi Underlined	ctermfg=62	ctermbg=NONE	cterm=underline
+    hi Ignore		ctermfg=bg	ctermbg=NONE
+    " NOTE THIS IS IN THE WARM SECTION
+    if v:version >= 700
+      if has('spell')
+        hi SpellBad	cterm=undercurl	ctermbg=NONE	ctermfg=130
+        hi SpellCap	cterm=undercurl	ctermbg=NONE	ctermfg=25
+        hi SpellRare	cterm=undercurl	ctermbg=NONE	ctermfg=133
+        hi SpellLocal	cterm=undercurl	ctermbg=NONE	ctermfg=23
+      endif
+      hi Pmenu		ctermfg=fg	ctermbg=182
+      hi PmenuSel	ctermfg=255	ctermbg=95	cterm=NONE
+      hi PmenuSbar	ctermfg=fg	ctermbg=250	cterm=NONE
+      hi PmenuThumb	ctermfg=fg	ctermbg=150	cterm=NONE
+      hi TabLine	ctermfg=fg	ctermbg=250	cterm=NONE
+      hi TabLineFill	ctermfg=fg	ctermbg=250	cterm=NONE
+      hi TabLineSel	ctermfg=fg	ctermbg=NONE	cterm=NONE
+      hi CursorColumn	ctermfg=NONE	ctermbg=216
+      hi CursorLine	ctermfg=NONE	ctermbg=NONE	cterm=underline
+      hi MatchParen	ctermfg=NONE	ctermbg=150
+    endif
+
+    hi TabLine		cterm=underline
+    hi TabLineFill	cterm=underline
+    hi CursorLine	cterm=underline
+
+    " For reversed stuffs, clear the reversed prop and set the bold prop again
+    hi IncSearch	cterm=bold
+    hi StatusLine	cterm=bold
+    hi StatusLineNC	cterm=bold
+    hi VertSplit	cterm=bold
+    hi Visual		cterm=bold
+
+    hi NonText		cterm=bold
+    hi Question		cterm=bold
+    hi Title		cterm=bold
+    hi DiffDelete	cterm=bold
+    hi DiffText		cterm=bold
+    hi Statement	cterm=bold
+    hi Type		cterm=bold
+    hi MoreMsg		cterm=bold
+    hi ModeMsg		cterm=bold
+    hi TabLineSel	cterm=bold
+
+    hi lCursor		ctermfg=bg	ctermbg=fg	cterm=NONE
+  endif " t_Co==256
+  " }}}2
+elseif &background=='dark' 
+  " for background=dark {{{2
+  " DARK COLOR DEFINE START
+
+  hi Normal		guifg=#d0d0d0	guibg=#202020	gui=NONE
+  hi Comment		guifg=#d0d090	guibg=NONE	gui=NONE
+  hi Constant		guifg=#80c0e0	guibg=NONE	gui=NONE
+  hi Number		guifg=#e0c060	guibg=NONE	gui=NONE
+  hi Identifier		guifg=#f0c0f0	guibg=NONE	gui=NONE
+  hi Statement		guifg=#c0d8f8	guibg=NONE	gui=NONE
+  hi PreProc		guifg=#60f080	guibg=NONE	gui=NONE
+  hi Type		guifg=#b0d0f0	guibg=NONE	gui=NONE
+  hi Special		guifg=#e0c060	guibg=NONE	gui=NONE
+  hi Error		guifg=#f08060	guibg=NONE	gui=NONE
+  hi Todo		guifg=#800000	guibg=#d0d090	gui=NONE
+  hi Search		guifg=NONE	guibg=#800000	gui=NONE
+  hi Visual		guifg=#000000	guibg=#a6caf0	gui=NONE
+  hi Cursor		guifg=#000000	guibg=#00f000	gui=NONE
+  " NOTE THIS IS IN THE COOL SECTION
+  " hi CursorIM		guifg=#000000	guibg=#f000f0	gui=NONE
+  hi StatusLine		guifg=#000000	guibg=#a6caf0	gui=NONE
+  hi LineNr		guifg=#b0b0b0	guibg=NONE	gui=NONE
+  hi Question		guifg=#000000	guibg=#d0d090	gui=NONE
+  hi ModeMsg		guifg=fg	guibg=#000080	gui=NONE
+  hi VisualNOS		guifg=fg	guibg=#000080	gui=NONE
+  hi SpecialKey		guifg=#b0d0f0	guibg=NONE	gui=NONE
+  hi NonText		guifg=#6080f0	guibg=#101010	gui=NONE
+  hi Directory		guifg=#80c0e0	guibg=NONE	gui=NONE
+  hi ErrorMsg		guifg=#d0d090	guibg=#800000	gui=NONE
+  hi MoreMsg		guifg=#c0e080	guibg=NONE	gui=NONE
+  hi Title		guifg=#f0c0f0	guibg=NONE	gui=NONE
+  hi WarningMsg		guifg=#f08060	guibg=NONE	gui=NONE
+  hi WildMenu		guifg=#000000	guibg=#d0d090	gui=NONE
+  hi Folded		guifg=NONE	guibg=#004000	gui=NONE
+  hi FoldColumn		guifg=#e0e0e0	guibg=#008000	gui=NONE
+  hi DiffAdd		guifg=NONE	guibg=#000080	gui=NONE
+  hi DiffChange		guifg=NONE	guibg=#800080	gui=NONE
+  hi DiffDelete		guifg=#6080f0	guibg=#202020	gui=NONE
+  hi DiffText		guifg=#000000	guibg=#c0e080	gui=NONE
+  hi SignColumn		guifg=#e0e0e0	guibg=#008000	gui=NONE
+  hi IncSearch		guifg=#000000	guibg=#d0d0d0	gui=NONE
+  hi StatusLineNC	guifg=#000000	guibg=#c0c0c0	gui=NONE
+  hi VertSplit		guifg=#000000	guibg=#c0c0c0	gui=NONE
+  hi Underlined		guifg=#80a0ff	guibg=NONE	gui=underline 
+  hi Ignore		guifg=#000000	guibg=NONE
+  " NOTE THIS IS IN THE COOL SECTION
+  if v:version >= 700
+    if has('spell')
+    " the guisp= could only support in Vim 7
+      hi SpellBad	guifg=NONE	guibg=NONE	guisp=#f08060
+      hi SpellCap	guifg=NONE	guibg=NONE	guisp=#6080f0
+      hi SpellRare	guifg=NONE	guibg=NONE	guisp=#f0c0f0
+      hi SpellLocal	guifg=NONE	guibg=NONE	guisp=#c0d8f8
+    endif
+    hi Pmenu		guifg=fg	guibg=#800080
+    hi PmenuSel		guifg=#000000	guibg=#d0d0d0	gui=NONE
+    hi PmenuSbar	guifg=fg	guibg=#000080	gui=NONE
+    hi PmenuThumb	guifg=fg	guibg=#008000	gui=NONE
+    hi TabLine		guifg=fg	guibg=#008000	gui=NONE
+    hi TabLineFill	guifg=fg	guibg=#008000	gui=NONE
+    hi TabLineSel	guifg=fg	guibg=NONE	gui=NONE
+    hi CursorColumn	guifg=NONE	guibg=#800000	gui=NONE
+    hi CursorLine	guifg=NONE	guibg=NONE	gui=underline
+    hi MatchParen	guifg=NONE	guibg=#800080
+  endif
+
+  " DARK COLOR DEFINE END
+
+  " Vim 7 added stuffs
+  if v:version >= 700
+    hi Ignore	gui=NONE  
+
+    " the gui=undercurl could only support in Vim 7
+    if has('spell')
+      hi SpellBad	gui=undercurl  
+      hi SpellCap	gui=undercurl  
+      hi SpellRare	gui=undercurl  
+      hi SpellLocal	gui=undercurl 
+    endif
+    hi TabLine		gui=underline  
+    hi TabLineFill	gui=underline  
+    hi Underlined	gui=underline  
+    hi CursorLine	gui=underline 
+  endif
+
+  " gui define for background=dark end here
+
+  if &t_Co==8 || &t_Co==16
+    " for 8-color and 16-color term
+    hi Normal		ctermfg=LightGrey   ctermbg=Black
+    hi Special		ctermfg=Yellow	    ctermbg=bg
+    hi Comment		ctermfg=DarkYellow  ctermbg=bg
+    hi Constant		ctermfg=Blue	    ctermbg=bg
+    hi Number		ctermfg=Yellow	    ctermbg=bg
+    hi LineNr		ctermfg=DarkGrey    ctermbg=bg
+    hi PreProc		ctermfg=Green	    ctermbg=bg
+    hi Statement	ctermfg=Cyan	    ctermbg=bg
+    hi Type		ctermfg=Cyan	    ctermbg=bg
+    hi Error		ctermfg=Red	    ctermbg=bg
+    hi Identifier	ctermfg=Magenta     ctermbg=bg
+    hi SpecialKey	ctermfg=Cyan	    ctermbg=bg
+    hi NonText		ctermfg=Blue	    ctermbg=bg
+    hi Directory	ctermfg=Blue	    ctermbg=bg
+    hi MoreMsg		ctermfg=Green	    ctermbg=bg
+    hi Title		ctermfg=Magenta     ctermbg=bg
+    hi WarningMsg	ctermfg=Red	    ctermbg=bg
+    hi DiffDelete	ctermfg=Blue	    ctermbg=bg
+
+    hi Search		ctermfg=NONE	    ctermbg=DarkRed
+    hi Visual		ctermfg=Black	    ctermbg=DarkCyan
+    hi Cursor		ctermfg=Black	    ctermbg=Green
+    hi StatusLine	ctermfg=Black	    ctermbg=DarkCyan
+    hi Question		ctermfg=Black	    ctermbg=DarkYellow
+    hi Todo		ctermfg=DarkRed     ctermbg=DarkYellow
+    hi Folded		ctermfg=White	    ctermbg=DarkGreen
+    hi ModeMsg		ctermfg=Grey	    ctermbg=DarkBlue
+    hi VisualNOS	ctermfg=Grey	    ctermbg=DarkBlue
+    hi ErrorMsg		ctermfg=DarkYellow  ctermbg=DarkRed
+    hi WildMenu		ctermfg=Black	    ctermbg=DarkYellow
+    hi FoldColumn	ctermfg=White	    ctermbg=DarkGreen
+    hi SignColumn	ctermfg=White	    ctermbg=DarkGreen
+    hi DiffText		ctermfg=Black	    ctermbg=DarkYellow
+
+    if v:version >= 700
+      if has('spell')
+        hi SpellBad	ctermfg=NONE	ctermbg=DarkRed
+        hi SpellCap	ctermfg=NONE	ctermbg=DarkBlue
+        hi SpellRare	ctermfg=NONE	ctermbg=DarkMagenta
+        hi SpellLocal	ctermfg=NONE	ctermbg=DarkGreen
+      endif
+      hi Pmenu		ctermfg=fg	ctermbg=DarkMagenta
+      hi PmenuSel	ctermfg=Black	ctermbg=fg
+      hi PmenuSbar	ctermfg=fg	ctermbg=DarkBlue
+      hi PmenuThumb	ctermfg=fg	ctermbg=DarkGreen
+      hi TabLine	ctermfg=fg	ctermbg=DarkGreen	cterm=underline
+      hi TabLineFill	ctermfg=fg	ctermbg=DarkGreen	cterm=underline
+      hi CursorColumn	ctermfg=NONE	ctermbg=DarkRed
+
+      hi TabLineSel	ctermfg=fg	ctermbg=bg
+      hi CursorLine	ctermfg=NONE	ctermbg=bg		cterm=underline
+
+      hi MatchParen	ctermfg=NONE	ctermbg=DarkMagenta
+    endif
+    if &t_Co==8
+      " 8 colour terminal support, this assumes 16 colour is available through
+      " setting the 'bold' attribute, will get bright foreground colour.
+      " However, the bright background color is not available for 8-color terms.
+      "
+      " You can manually set t_Co=16 in your .vimrc to see if your terminal
+      " supports 16 colours, 
+      hi DiffText	cterm=none  
+      hi Visual		cterm=none  
+      hi Cursor		cterm=none  
+      hi Comment	cterm=none  
+      hi Todo		cterm=none  
+      hi StatusLine	cterm=none  
+      hi Question	cterm=none  
+      hi DiffChange	cterm=none  
+      hi ModeMsg	cterm=none  
+      hi VisualNOS	cterm=none  
+      hi ErrorMsg	cterm=none  
+      hi WildMenu	cterm=none  
+      hi DiffAdd	cterm=none  
+      hi Folded		cterm=none  
+      hi DiffDelete	cterm=none  
+      hi Normal		cterm=none  
+      hi PmenuThumb	cterm=none 
+      hi Search		cterm=bold  
+      hi Special	cterm=bold  
+      hi Constant	cterm=bold  
+      hi Number		cterm=bold  
+      hi LineNr		cterm=bold  
+      hi PreProc	cterm=bold  
+      hi Statement	cterm=bold  
+      hi Type		cterm=bold  
+      hi Error		cterm=bold  
+      hi Identifier	cterm=bold  
+      hi SpecialKey	cterm=bold  
+      hi NonText	cterm=bold  
+      hi MoreMsg	cterm=bold  
+      hi Title		cterm=bold  
+      hi WarningMsg	cterm=bold  
+      hi FoldColumn	cterm=bold  
+      hi SignColumn	cterm=bold  
+      hi Directory	cterm=bold  
+      hi DiffDelete	cterm=bold 
+    else
+      " Background > 7 is only available with 16 or more colors
+
+      hi WarningMsg	cterm=none  
+      hi Search		cterm=none  
+      hi Visual		cterm=none  
+      hi Cursor		cterm=none  
+      hi Special	cterm=none  
+      hi Comment	cterm=none  
+      hi Constant	cterm=none  
+      hi Number		cterm=none  
+      hi LineNr		cterm=none  
+      hi PreProc	cterm=none  
+      hi Todo		cterm=none  
+      hi Error		cterm=none  
+      hi Identifier	cterm=none  
+      hi Folded		cterm=none  
+      hi SpecialKey	cterm=none  
+      hi Directory	cterm=none  
+      hi ErrorMsg	cterm=none  
+      hi Normal		cterm=none  
+      hi PmenuThumb	cterm=none 
+      hi WildMenu	cterm=none  
+      hi FoldColumn	cterm=none  
+      hi SignColumn	cterm=none  
+      hi DiffAdd	cterm=none  
+      hi DiffChange	cterm=none  
+      hi Question	cterm=none  
+      hi StatusLine	cterm=none  
+      hi DiffText	cterm=none 
+      hi IncSearch	cterm=reverse  
+      hi StatusLineNC	cterm=reverse  
+      hi VertSplit	cterm=reverse 
+
+      " Well, well, bold font with color 0-7 is not possible.
+      " So, the Question, StatusLine, DiffText cannot act as expected.
+
+      hi Statement	cterm=none  
+      hi Type		cterm=none  
+      hi MoreMsg	cterm=none  
+      hi ModeMsg	cterm=none  
+      hi NonText	cterm=none  
+      hi Title		cterm=none  
+      hi VisualNOS	cterm=none  
+      hi DiffDelete	cterm=none  
+      hi TabLineSel	cterm=none 
+
+    endif
+  elseif &t_Co==256
+    " 256color dark terminal support here
+    hi Normal		ctermfg=252	ctermbg=234	cterm=NONE
+    hi Comment		ctermfg=186	ctermbg=NONE	cterm=NONE
+    hi Constant		ctermfg=110	ctermbg=NONE	cterm=NONE
+    hi Number		ctermfg=179	ctermbg=NONE	cterm=NONE
+    hi Identifier	ctermfg=219	ctermbg=NONE	cterm=NONE
+    hi Statement	ctermfg=153	ctermbg=NONE	cterm=NONE
+    hi PreProc		ctermfg=84	ctermbg=NONE	cterm=NONE
+    hi Type		ctermfg=153	ctermbg=NONE	cterm=NONE
+    hi Special		ctermfg=179	ctermbg=NONE	cterm=NONE
+    hi Error		ctermfg=209	ctermbg=NONE	cterm=NONE
+    hi Todo		ctermfg=88	ctermbg=186	cterm=NONE
+    hi Search		ctermfg=NONE	ctermbg=88	cterm=NONE
+    hi Visual		ctermfg=16	ctermbg=153	cterm=NONE
+    hi Cursor		ctermfg=16	ctermbg=46	cterm=NONE
+    " NOTE THIS IS IN THE COOL SECTION
+    " hi CursorIM	ctermfg=16	ctermbg=201	cterm=NONE
+    hi StatusLine	ctermfg=16	ctermbg=153	cterm=NONE
+    hi LineNr		ctermfg=249	ctermbg=NONE	cterm=NONE
+    hi Question		ctermfg=16	ctermbg=186	cterm=NONE
+    hi ModeMsg		ctermfg=fg	ctermbg=18	cterm=NONE
+    hi VisualNOS	ctermfg=fg	ctermbg=18	cterm=NONE
+    hi SpecialKey	ctermfg=153	ctermbg=NONE	cterm=NONE
+    hi NonText		ctermfg=69	ctermbg=233	cterm=NONE
+    hi Directory	ctermfg=110	ctermbg=NONE	cterm=NONE
+    hi ErrorMsg		ctermfg=186	ctermbg=88	cterm=NONE
+    hi MoreMsg		ctermfg=150	ctermbg=NONE	cterm=NONE
+    hi Title		ctermfg=219	ctermbg=NONE	cterm=NONE
+    hi WarningMsg	ctermfg=209	ctermbg=NONE	cterm=NONE
+    hi WildMenu		ctermfg=16	ctermbg=186	cterm=NONE
+    hi Folded		ctermfg=NONE	ctermbg=22	cterm=NONE
+    hi FoldColumn	ctermfg=254	ctermbg=28	cterm=NONE
+    hi DiffAdd		ctermfg=NONE	ctermbg=18	cterm=NONE
+    hi DiffChange	ctermfg=NONE	ctermbg=90	cterm=NONE
+    hi DiffDelete	ctermfg=69	ctermbg=234	cterm=NONE
+    hi DiffText		ctermfg=16	ctermbg=150	cterm=NONE
+    hi SignColumn	ctermfg=254	ctermbg=28	cterm=NONE
+    hi IncSearch	ctermfg=16	ctermbg=252	cterm=NONE
+    hi StatusLineNC	ctermfg=16	ctermbg=250	cterm=NONE
+    hi VertSplit	ctermfg=16	ctermbg=250	cterm=NONE
+    hi Underlined	ctermfg=111	ctermbg=NONE	cterm=underline 
+    hi Ignore		ctermfg=16	ctermbg=NONE
+    " NOTE THIS IS IN THE COOL SECTION
+    if v:version >= 700
+      if has('spell')
+        " the ctermsp= could only support in Vim 7
+        hi SpellBad	cterm=undercurl	ctermbg=NONE	ctermfg=209
+        hi SpellCap	cterm=undercurl	ctermbg=NONE	ctermfg=69
+        hi SpellRare	cterm=undercurl	ctermbg=NONE	ctermfg=219
+        hi SpellLocal	cterm=undercurl	ctermbg=NONE	ctermfg=153
+      endif
+      hi Pmenu		ctermfg=fg	ctermbg=90
+      hi PmenuSel	ctermfg=16	ctermbg=252	cterm=NONE
+      hi PmenuSbar	ctermfg=fg	ctermbg=18	cterm=NONE
+      hi PmenuThumb	ctermfg=fg	ctermbg=28	cterm=NONE
+      hi TabLine	ctermfg=fg	ctermbg=28	cterm=NONE
+      hi TabLineFill	ctermfg=fg	ctermbg=28	cterm=NONE
+      hi TabLineSel	ctermfg=fg	ctermbg=NONE	cterm=NONE
+      hi CursorColumn	ctermfg=NONE	ctermbg=88	cterm=NONE
+      hi CursorLine	ctermfg=NONE	ctermbg=NONE	cterm=underline
+      hi MatchParen	ctermfg=NONE	ctermbg=90
+      hi TabLine	cterm=underline  
+      hi TabLineFill	cterm=underline  
+      hi Underlined	cterm=underline  
+      hi CursorLine	cterm=underline 
+    endif
+
+  endif " t_Co
+
+  " }}}2
+endif
+
+" Links:
+"
+" COLOR LINKS DEFINE START
+
+hi link		String		Constant
+" Character must be different from strings because in many languages
+" (especially C, C++) a 'char' variable is scalar while 'string' is pointer,
+" mistaken a 'char' for a 'string' will cause disaster!
+hi link		Character	Number
+hi link		SpecialChar	LineNr
+hi link		Tag		Identifier
+hi link		cCppOut		LineNr
+" The following are not standard hi links, 
+" these are used by DrChip
+hi link		Warning		MoreMsg
+hi link		Notice		Constant
+" these are used by Calendar
+hi link		CalToday	PreProc
+" these are used by TagList
+hi link		MyTagListTagName	IncSearch
+hi link		MyTagListTagScope	Constant
+
+" COLOR LINKS DEFINE END
+
+" vim:et:nosta:sw=2:ts=8:
+" vim600:fdm=marker:fdl=1:

File .vim/colors/railscasts.vim

+" Vim color scheme
+"
+" Name:         railscasts.vim
+" Maintainer:   Nick Moffitt <nick@zork.net>
+" Last Change:  01 Mar 2008
+" License:      WTFPL <http://sam.zoy.org/wtfpl/>
+" Version:      2.1
+"
+" This theme is based on Josh O'Rourke's Vim clone of the railscast
+" textmate theme.  The key thing I have done here is supply 256-color
+" terminal equivalents for as many of the colors as possible, and fixed
+" up some of the funny behaviors for editing e-mails and such.
+"
+" To use for gvim:
+" 1: install this file as ~/.vim/colors/railscasts.vim
+" 2: put "colorscheme railscasts" in your .gvimrc
+"
+" If you are using Ubuntu, you can get the benefit of this in your
+" terminals using ordinary vim by taking the following steps:
+"
+" 1: sudo apt-get install ncurses-term
+" 2: put the following in your .vimrc
+"     if $COLORTERM == 'gnome-terminal'
+"         set term=gnome-256color
+"         colorscheme railscasts
+"     else
+"         colorscheme default
+"     endif
+" 3: if you wish to use this with screen, add the following to your .screenrc:
+"     attrcolor b ".I"
+"     termcapinfo xterm 'Co#256:AB=\E[48;5;%dm:AF=\E[38;5;%dm'
+"     defbce "on"
+"     term screen-256color-bce
+
+set background=dark
+hi clear
+if exists("syntax_on")
+  syntax reset
+endif
+
+let g:colors_name = "railscasts"
+
+hi link htmlTag                     xmlTag
+hi link htmlTagName                 xmlTagName
+hi link htmlEndTag                  xmlEndTag
+
+highlight Normal                    guifg=#E6E1DC guibg=#111111 
+highlight Cursor                    guifg=#000000 ctermfg=0 guibg=#FFFFFF ctermbg=15	
+highlight CursorLine                guibg=#000000 ctermbg=233 cterm=NONE
+
+highlight Comment                   guifg=#BC9458 ctermfg=180 gui=italic
+highlight Constant                  guifg=#6D9CBE ctermfg=73
+highlight Define                    guifg=#CC7833 ctermfg=173
+highlight Error                     guifg=#FFC66D ctermfg=221 guibg=#990000 ctermbg=88
+highlight Function                  guifg=#FFC66D ctermfg=221 gui=NONE cterm=NONE
+highlight Identifier                guifg=#6D9CBE ctermfg=73 gui=NONE cterm=NONE
+highlight Include                   guifg=#CC7833 ctermfg=173 gui=NONE cterm=NONE
+highlight PreCondit                 guifg=#CC7833 ctermfg=173 gui=NONE cterm=NONE
+highlight Keyword                   guifg=#CC7833 ctermfg=173 cterm=NONE
+highlight LineNr                    guifg=#2B2B2B ctermfg=159 guibg=#C0C0FF
+highlight Number                    guifg=#A5C261 ctermfg=107
+highlight PreProc                   guifg=#E6E1DC ctermfg=103
+highlight Search                    guifg=NONE ctermfg=NONE guibg=#2b2b2b ctermbg=235 gui=italic cterm=underline
+highlight Statement                 guifg=#CC7833 ctermfg=173 gui=NONE cterm=NONE
+highlight String                    guifg=#A5C261 ctermfg=107
+highlight Title                     guifg=#FFFFFF ctermfg=15
+highlight Type                      guifg=#DA4939 ctermfg=167 gui=NONE cterm=NONE
+highlight Visual                    guibg=#5A647E ctermbg=60
+
+highlight DiffAdd                   guifg=#E6E1DC ctermfg=7 guibg=#519F50 ctermbg=71
+highlight DiffDelete                guifg=#E6E1DC ctermfg=7 guibg=#660000 ctermbg=52
+highlight Special                   guifg=#DA4939 ctermfg=167 
+
+highlight pythonBuiltin             guifg=#6D9CBE ctermfg=73 gui=NONE cterm=NONE
+highlight rubyBlockParameter        guifg=#FFFFFF ctermfg=15
+highlight rubyClass                 guifg=#FFFFFF ctermfg=15
+highlight rubyConstant              guifg=#DA4939 ctermfg=167
+highlight rubyInstanceVariable      guifg=#D0D0FF ctermfg=189
+highlight rubyInterpolation         guifg=#519F50 ctermfg=107
+highlight rubyLocalVariableOrMethod guifg=#D0D0FF ctermfg=189
+highlight rubyPredefinedConstant    guifg=#DA4939 ctermfg=167
+highlight rubyPseudoVariable        guifg=#FFC66D ctermfg=221
+highlight rubyStringDelimiter       guifg=#A5C261 ctermfg=143
+
+highlight xmlTag                    guifg=#E8BF6A ctermfg=179
+highlight xmlTagName                guifg=#E8BF6A ctermfg=179
+highlight xmlEndTag                 guifg=#E8BF6A ctermfg=179
+
+highlight mailSubject               guifg=#A5C261 ctermfg=107
+highlight mailHeaderKey             guifg=#FFC66D ctermfg=221
+highlight mailEmail                 guifg=#A5C261 ctermfg=107 gui=italic cterm=underline
+
+highlight SpellBad                  guifg=#D70000 ctermfg=160 ctermbg=NONE cterm=underline
+highlight SpellRare                 guifg=#D75F87 ctermfg=168 guibg=NONE ctermbg=NONE gui=underline cterm=underline
+highlight SpellCap                  guifg=#D0D0FF ctermfg=189 guibg=NONE ctermbg=NONE gui=underline cterm=underline
+highlight MatchParen                guifg=#FFFFFF ctermfg=15 guibg=#005f5f ctermbg=23

File .vim/doc/matchit.txt

+*matchit.txt*   Extended "%" matching
+
+For instructions on installing this file, type
+	:help matchit-install
+inside Vim.
+
+For Vim version 6.3.  Last change:  2007 Aug 29
+
+
+		  VIM REFERENCE MANUAL    by Benji Fisher
+
+*matchit* *matchit.vim*
+
+1. Extended matching with "%"				|matchit-intro|
+2. Activation						|matchit-activate|
+3. Configuration					|matchit-configure|
+4. Supporting a New Language				|matchit-newlang|
+5. Known Bugs and Limitations				|matchit-bugs|
+
+The functionality mentioned here is a plugin, see |add-plugin|.
+This plugin is only available if 'compatible' is not set.
+You can avoid loading this plugin by setting the "loaded_matchit" variable
+in your |vimrc| file: >
+	:let loaded_matchit = 1
+
+{Vi does not have any of this}
+
+==============================================================================
+1. Extended matching with "%"				*matchit-intro*
+
+							*matchit-%*
+%	Cycle forward through matching groups, such as "if", "else", "endif",
+	as specified by |b:match_words|.
+
+							*g%* *v_g%* *o_g%*
+g%	Cycle backwards through matching groups, as specified by
+	|b:match_words|.  For example, go from "if" to "endif" to "else".
+
+							*[%* *v_[%* *o_[%*
+[%	Go to [count] previous unmatched group, as specified by
+	|b:match_words|.  Similar to |[{|.
+
+							*]%* *v_]%* *o_]%*
+]%	Go to [count] next unmatched group, as specified by
+	|b:match_words|.  Similar to |]}|.
+
+							*v_a%*
+a%	In Visual mode, select the matching group, as specified by
+	|b:match_words|, containing the cursor.  Similar to |v_a[|.
+	A [count] is ignored, and only the first character of the closing
+	pattern is selected.
+
+In Vim, as in plain vi, the percent key, |%|, jumps the cursor from a brace,
+bracket, or paren to its match.  This can be configured with the 'matchpairs'
+option.  The matchit plugin extends this in several ways:
+
+	    You can match whole words, such as "if" and "endif", not just
+	single characters.  You can also specify a |regular-expression|.
+	    You can define groups with more than two words, such as "if",
+	"else", "endif".  Banging on the "%" key will cycle from the "if" to
+	the first "else", the next "else", ..., the closing "endif", and back
+	to the opening "if".  Nested structures are skipped.  Using |g%| goes
+	in the reverse direction.
+	    By default, words inside comments and strings are ignored, unless
+	the cursor is inside a comment or string when you type "%".  If the
+	only thing you want to do is modify the behavior of "%" so that it
+	behaves this way, you do not have to define |b:match_words|, since the
+	script uses the 'matchpairs' option as well as this variable.
+
+See |matchit-details| for details on what the script does, and |b:match_words|
+for how to specify matching patterns.
+
+MODES:			*matchit-modes* *matchit-v_%* *matchit-o_%*
+
+Mostly, % and related motions (|g%| and |[%| and |]%|) work just like built-in
+|motion| commands in |Operator-pending| and |Visual| modes.  However, you
+cannot make these motions |linewise| or |characterwise|, since the |:omap|s
+that define them start with "v" in order to make the default behavior
+inclusive.  (See |o_v|.)  In other words, "dV%" will not work.  The
+work-around is to go through Visual mode:  "V%d" will work.
+
+LANGUAGES:					*matchit-languages*
+
+Currently, the following languages are supported:  Ada, ASP with VBS, Csh,
+DTD, Entity, Essbase, Fortran, HTML, JSP (same as HTML), LaTeX, Lua, Pascal,
+SGML, Shell, Tcsh, Vim, XML.  Other languages may already have support via
+the default |filetype-plugin|s in the standard vim distribution.
+
+To support a new language, see |matchit-newlang| below.
+
+DETAILS:				*matchit-details* *matchit-parse*
+
+Here is an outline of what matchit.vim does each time you hit the "%" key.  If
+there are |backref|s in |b:match_words| then the first step is to produce a
+version in which these back references have been eliminated; if there are no
+|backref|s then this step is skipped.  This step is called parsing.  For
+example, "\(foo\|bar\):end\1" is parsed to yield
+"\(foo\|bar\):end\(foo\|bar\)".  This can get tricky, especially if there are
+nested groups.  If debugging is turned on, the parsed version is saved as
+|b:match_pat|.
+
+							*matchit-choose*
+Next, the script looks for a word on the current line that matches the pattern
+just constructed.  It includes the patterns from the 'matchpairs' option.
+The goal is to do what you expect, which turns out to be a little complicated.
+The script follows these rules:
+
+	Insist on a match that ends on or after the cursor.
+	Prefer a match that includes the cursor position (that is, one that
+		starts on or before the cursor).
+	Prefer a match that starts as close to the cursor as possible.
+	If more than one pattern in |b:match_words| matches, choose the one
+		that is listed first.
+
+Examples:
+
+	Suppose you >
+		:let b:match_words = '<:>,<tag>:</tag>'
+<	and hit "%" with the cursor on or before the "<" in "a <tag> is born".
+	The pattern '<' comes first, so it is preferred over '<tag>', which
+	also matches.  If the cursor is on the "t", however, then '<tag>' is
+	preferred, because this matches a bit of text containing the cursor.
+	If the two groups of patterns were reversed then '<' would never be
+	preferred.
+
+	Suppose you >
+		:let b:match_words = 'if:end if'
+<	(Note the space!) and hit "%" with the cursor at the end of "end if".
+	Then "if" matches, which is probably not what you want, but if the
+	cursor starts on the "end " then "end if" is chosen.  (You can avoid
+	this problem by using a more complicated pattern.)
+
+If there is no match, the cursor does not move.  (Before version 1.13 of the
+script, it would fall back on the usual behavior of |%|).  If debugging is
+turned on, the matched bit of text is saved as |b:match_match| and the cursor
+column of the start of the match is saved as |b:match_col|.
+
+Next, the script looks through |b:match_words| (original and parsed versions)
+for the group and pattern that match.  If debugging is turned on, the group is
+saved as |b:match_ini| (the first pattern) and |b:match_tail| (the rest).  If
+there are |backref|s then, in addition, the matching pattern is saved as
+|b:match_word| and a table of translations is saved as |b:match_table|.  If
+there are |backref|s, these are determined from the matching pattern and
+|b:match_match| and substituted into each pattern in the matching group.
+
+The script decides whether to search forwards or backwards and chooses
+arguments for the |searchpair()| function.  Then, the cursor is moved to the
+start of the match, and |searchpair()| is called.  By default, matching
+structures inside strings and comments are ignored.  This can be changed by
+setting |b:match_skip|.
+
+==============================================================================
+2. Activation						*matchit-activate*
+
+You can use this script as a plugin, by copying it to your plugin directory.
+See |add-global-plugin| for instructions.  You can also add a line to your
+|vimrc| file, such as >
+	:source $VIMRUNTIME/macros/matchit.vim
+or >
+	:runtime macros/matchit.vim
+Either way, the script should start working the next time you start up Vim.
+
+(Earlier versions of the script did nothing unless a |buffer-variable| named
+|b:match_words| was defined.  Even earlier versions contained autocommands
+that set this variable for various file types.  Now, |b:match_words| is
+defined in many of the default |filetype-plugin|s instead.)
+
+For a new language, you can add autocommands to the script or to your vimrc
+file, but the recommended method is to add a line such as >
+	let b:match_words = '\<foo\>:\<bar\>'
+to the |filetype-plugin| for your language.  See |b:match_words| below for how
+this variable is interpreted.
+
+TROUBLESHOOTING					*matchit-troubleshoot*
+
+The script should work in most installations of Vim.  It may not work if Vim
+was compiled with a minimal feature set, for example if the |+syntax| option
+was not enabled.  If your Vim has support for syntax compiled in, but you do
+not have |syntax| highlighting turned on, matchit.vim should work, but it may
+fail to skip matching groups in comments and strings.  If the |filetype|
+mechanism is turned off, the |b:match_words| variable will probably not be
+defined automatically.
+
+==============================================================================
+3. Configuration					*matchit-configure*
+
+There are several variables that govern the behavior of matchit.vim.  Note
+that these are variables local to the buffer, not options, so use |:let| to
+define them, not |:set|.  Some of these variables have values that matter; for
+others, it only matters whether the variable has been defined.  All of these
+can be defined in the |filetype-plugin| or autocommand that defines
+|b:match_words| or "on the fly."
+
+The main variable is |b:match_words|.  It is described in the section below on
+supporting a new language.
+
+				*MatchError* *matchit-hl* *matchit-highlight*
+MatchError is the highlight group for error messages from the script.  By
+default, it is linked to WarningMsg.  If you do not want to be bothered by
+error messages, you can define this to be something invisible.  For example,
+if you use the GUI version of Vim and your command line is normally white, you
+can do >
+	:hi MatchError guifg=white guibg=white
+<
+						*b:match_ignorecase*
+If you >
+	:let b:match_ignorecase = 1
+then matchit.vim acts as if 'ignorecase' is set: for example, "end" and "END"
+are equivalent.  If you >
+	:let b:match_ignorecase = 0
+then matchit.vim treats "end" and "END" differently.  (There will be no
+b:match_infercase option unless someone requests it.)
+
+						*b:match_debug*
+Define b:match_debug if you want debugging information to be saved.  See
+|matchit-debug|, below.
+
+						*b:match_skip*
+If b:match_skip is defined, it is passed as the skip argument to
+|searchpair()|.  This controls when matching structures are skipped, or
+ignored.  By default, they are ignored inside comments and strings, as
+determined by the |syntax| mechanism.  (If syntax highlighting is turned off,
+nothing is skipped.)  You can set b:match_skip to a string, which evaluates to
+a non-zero, numerical value if the match is to be skipped or zero if the match
+should not be skipped.  In addition, the following special values are
+supported by matchit.vim:
+	s:foo becomes (current syntax item) =~ foo
+	S:foo becomes (current syntax item) !~ foo
+	r:foo becomes (line before cursor) =~ foo
+	R:foo becomes (line before cursor) !~ foo
+(The "s" is meant to suggest "syntax", and the "r" is meant to suggest
+"regular expression".)
+
+Examples:
+
+	You can get the default behavior with >
+		:let b:match_skip = 's:comment\|string'
+<
+	If you want to skip matching structures unless they are at the start
+	of the line (ignoring whitespace) then you can >
+		:let b:match_skip = 'R:^\s*'
+<	Do not do this if strings or comments can span several lines, since
+	the normal syntax checking will not be done if you set b:match_skip.
+
+	In LaTeX, since "%" is used as the comment character, you can >
+		:let b:match_skip = 'r:%'
+<	Unfortunately, this will skip anything after "\%", an escaped "%".  To
+	allow for this, and also "\\%" (an excaped backslash followed by the
+	comment character) you can >
+		:let b:match_skip = 'r:\(^\|[^\\]\)\(\\\\\)*%'
+<
+	See the $VIMRUNTIME/ftplugin/vim.vim for an example that uses both
+	syntax and a regular expression.
+
+==============================================================================
+4. Supporting a New Language				*matchit-newlang*
+							*b:match_words*
+In order for matchit.vim to support a new language, you must define a suitable
+pattern for |b:match_words|.  You may also want to set some of the
+|matchit-configure| variables, as described above.  If your language has a
+complicated syntax, or many keywords, you will need to know something about
+Vim's |regular-expression|s.
+
+The format for |b:match_words| is similar to that of the 'matchpairs' option:
+it is a comma (,)-separated list of groups; each group is a colon(:)-separated
+list of patterns (regular expressions).  Commas and backslashes that are part
+of a pattern should be escaped with backslashes ('\:' and '\,').  It is OK to
+have only one group; the effect is undefined if a group has only one pattern.
+A simple example is >
+	:let b:match_words = '\<if\>:\<endif\>,'
+		\ . '\<while\>:\<continue\>:\<break\>:\<endwhile\>'
+(In Vim regular expressions, |\<| and |\>| denote word boundaries.  Thus "if"
+matches the end of "endif" but "\<if\>" does not.)  Then banging on the "%"
+key will bounce the cursor between "if" and the matching "endif"; and from
+"while" to any matching "continue" or "break", then to the matching "endwhile"
+and back to the "while".  It is almost always easier to use |literal-string|s
+(single quotes) as above:  '\<if\>' rather than "\\<if\\>" and so on.
+
+Exception:  If the ":" character does not appear in b:match_words, then it is
+treated as an expression to be evaluated.  For example, >
+	:let b:match_words = 'GetMatchWords()'
+allows you to define a function.  This can return a different string depending
+on the current syntax, for example.
+
+Once you have defined the appropriate value of |b:match_words|, you will
+probably want to have this set automatically each time you edit the
+appropriate file type.  The recommended way to do this is by adding the
+definition to a |filetype-plugin| file.
+
+Tips: Be careful that your initial pattern does not match your final pattern.
+See the example above for the use of word-boundary expressions.  It is usually
+better to use ".\{-}" (as many as necessary) instead of ".*" (as many as
+possible).  See |\{-|.  For example, in the string "<tag>label</tag>", "<.*>"
+matches the whole string whereas "<.\{-}>" and "<[^>]*>" match "<tag>" and
+"</tag>".
+
+				*matchit-spaces* *matchit-s:notend*
+If "if" is to be paired with "end if" (Note the space!) then word boundaries
+are not enough.  Instead, define a regular expression s:notend that will match
+anything but "end" and use it as follows: >
+	:let s:notend = '\%(\<end\s\+\)\@<!'
+	:let b:match_words = s:notend . '\<if\>:\<end\s\+if\>'
+<							*matchit-s:sol*
+This is a simplified version of what is done for Ada.  The s:notend is a
+|script-variable|.  Similarly, you may want to define a start-of-line regular
+expression >
+	:let s:sol = '\%(^\|;\)\s*'
+if keywords are only recognized after the start of a line or after a
+semicolon (;), with optional white space.
+
+					*matchit-backref* *matchit-\1*
+In any group, the expressions |\1|, |\2|, ..., |\9| refer to parts of the
+INITIAL pattern enclosed in |\(|escaped parentheses|\)|.  These are referred
+to as back references, or backrefs.  For example, >
+	:let b:match_words = '\<b\(o\+\)\>:\(h\)\1\>'
+means that "bo" pairs with "ho" and "boo" pairs with "hoo" and so on.  Note
+that "\1" does not refer to the "\(h\)" in this example.  If you have
+"\(nested \(parentheses\)\) then "\d" refers to the d-th "\(" and everything
+up to and including the matching "\)":  in "\(nested\(parentheses\)\)", "\1"
+refers to everything and "\2" refers to "\(parentheses\)".  If you use a
+variable such as |s:notend| or |s:sol| in the previous paragraph then remember
+to count any "\(" patterns in this variable.  You do not have to count groups
+defined by |\%(\)|.
+
+It should be possible to resolve back references from any pattern in the
+group.  For example, >
+	:let b:match_words = '\(foo\)\(bar\):more\1:and\2:end\1\2'
+would not work because "\2" cannot be determined from "morefoo" and "\1"
+cannot be determined from "andbar".  On the other hand, >
+	:let b:match_words = '\(\(foo\)\(bar\)\):\3\2:end\1'
+should work (and have the same effect as "foobar:barfoo:endfoobar"), although
+this has not been thoroughly tested.
+
+You can use |zero-width| patterns such as |\@<=| and |\zs|.  (The latter has
+not been thouroughly tested in matchit.vim.)  For example, if the keyword "if"
+must occur at the start of the line, with optional white space, you might use
+the pattern "\(^\s*\)\@<=if" so that the cursor will end on the "i" instead of
+at the start of the line.  For another example, if HTML had only one tag then
+one could >
+	:let b:match_words = '<:>,<\@<=tag>:<\@<=/tag>'
+so that "%" can bounce between matching "<" and ">" pairs or (starting on
+"tag" or "/tag") between matching tags.  Without the |\@<=|, the script would
+bounce from "tag" to the "<" in "</tag>", and another "%" would not take you
+back to where you started.
+
+DEBUGGING				*matchit-debug* *:MatchDebug*
+
+If you are having trouble figuring out the appropriate definition of
+|b:match_words| then you can take advantage of the same information I use when
+debugging the script.  This is especially true if you are not sure whether
+your patterns or my script are at fault!  To make this more convenient, I have
+made the command :MatchDebug, which defines the variable |b:match_debug| and
+creates a Matchit menu.  This menu makes it convenient to check the values of
+the variables described below.  You will probably also want to read
+|matchit-details| above.
+
+Defining the variable |b:match_debug| causes the script to set the following
+variables, each time you hit the "%" key.  Several of these are only defined
+if |b:match_words| includes |backref|s.
+
+							*b:match_pat*
+The b:match_pat variable is set to |b:match_words| with |backref|s parsed.
+							*b:match_match*
+The b:match_match variable is set to the bit of text that is recognized as a
+match.
+							*b:match_col*
+The b:match_col variable is set to the cursor column of the start of the
+matching text.
+							*b:match_wholeBR*
+The b:match_wholeBR variable is set to the comma-separated group of patterns
+that matches, with |backref|s unparsed.
+							*b:match_iniBR*
+The b:match_iniBR variable is set to the first pattern in |b:match_wholeBR|.
+							*b:match_ini*
+The b:match_ini variable is set to the first pattern in |b:match_wholeBR|,
+with |backref|s resolved from |b:match_match|.
+							*b:match_tail*
+The b:match_tail variable is set to the remaining patterns in
+|b:match_wholeBR|, with |backref|s resolved from |b:match_match|.
+							*b:match_word*
+The b:match_word variable is set to the pattern from |b:match_wholeBR| that
+matches |b:match_match|.
+							*b:match_table*
+The back reference '\'.d refers to the same thing as '\'.b:match_table[d] in
+|b:match_word|.
+
+==============================================================================
+5. Known Bugs and Limitations				*matchit-bugs*
+
+Just because I know about a bug does not mean that it is on my todo list.  I
+try to respond to reports of bugs that cause real problems.  If it does not
+cause serious problems, or if there is a work-around, a bug may sit there for
+a while.  Moral:  if a bug (known or not) bothers you, let me know.
+
+The various |:vmap|s defined in the script (%, |g%|, |[%|, |]%|, |a%|) may
+have undesired effects in Select mode |Select-mode-mapping|.  At least, if you
+want to replace the selection with any character in "ag%[]" there will be a
+pause of |'updatetime'| first.
+
+It would be nice if "\0" were recognized as the entire pattern.  That is, it
+would be nice if "foo:\end\0" had the same effect as "\(foo\):\end\1".  I may
+try to implement this in a future version.  (This is not so easy to arrange as
+you might think!)
+
+==============================================================================
+vim:tw=78:fo=tcq2:

File .vim/doc/omnicppcomplete.txt

+*omnicppcomplete.txt*	Plugin for C/C++ omnicompletion
+*omnicppcomplete*
+
+Author: Vissale NEANG (fromtonrouge AT gmail DOT com)
+Last Change: 26 sept. 2007       
+
+OmniCppComplete version 0.41
+
+For Vim version 7.0 and above
+
+==============================================================================
+
+1. Overview                                     |omnicpp-overview|
+2. Downloads                                    |omnicpp-download|
+3. Installation                                 |omnicpp-installation|
+4. Options                                      |omnicpp-options|
+5. Features                                     |omnicpp-features|
+6. Limitations                                  |omnicpp-limitations|
+7. FAQ & TIPS                                   |omnicpp-faq|
+8. History                                      |omnicpp-history|
+9. Thanks                                       |omnicpp-thanks|
+
+==============================================================================
+1. Overview~
+                                                *omnicpp-overview*
+The purpose of this script is to provide an 'omnifunc' function for C and C++
+language. In a C++ file, while in insert mode, you can use CTRL-X CTRL-O to:
+
+        * Complete namespaces, classes, structs and unions
+        * Complete attribute members and return type of functions
+        * Complete the "this" pointer
+        * Complete an object after a cast (C and C++ cast)
+        * Complete typedefs and anonymous types
+
+You can set a "may complete" behaviour to start a completion automatically
+after a '.', '->' or '::'. Please see |omnicpp-may-complete| for more details.
+
+The script needs an |Exuberant_ctags| database to work properly.
+
+==============================================================================
+2. Downloads~
+                                                *omnicpp-download*
+You can download the latest release of the script from this url :
+
+        http://www.vim.org/scripts/script.php?script_id=1520
+
+You can download |Exuberant_ctags| from :
+
+        http://ctags.sourceforge.net
+
+==============================================================================
+3. Installation~
+                                                *omnicpp-installation*
+3.1. Script installation~
+
+Unzip the downloaded file in your personal |vimfiles| directory (~/.vim under 
+unix or %HOMEPATH%\vimfiles under windows). The 'omnifunc' will be 
+automatically set for C and C++ files.
+
+You also have to enable plugins by adding these two lines in your|.vimrc|file: >
+
+        set nocp
+        filetype plugin on
+<
+Please see |cp| and |filetype-plugin-on| sections for more details.
+
+3.1.1. Files~
+
+After installation you should find these files :
+
+    after\ftplugin\cpp.vim
+    after\ftplugin\c.vim
+
+    autoload\omni\common\debug.vim
+                        \utils.vim
+
+    autoload\omni\cpp\complete.vim
+                     \includes.vim
+                     \items.vim
+                     \maycomplete.vim
+                     \namespaces.vim
+                     \settings.vim
+                     \tokenizer.vim
+                     \utils.vim
+
+    doc\omnicppcomplete.txt
+
+3.2. Building the Exuberant Ctags database~
+
+To extract C/C++ symbols information, the script needs an |Exuberant_ctags|
+database.
+
+You have to build your database with at least the following options:
+        --c++-kinds=+p  : Adds prototypes in the database for C/C++ files.
+        --fields=+iaS   : Adds inheritance (i), access (a) and function 
+                          signatures (S) information.
+        --extra=+q      : Adds context to the tag name. Note: Without this
+                          option, the script cannot get class members.
+
+Thus to build recursively a ctags database from the current directory, the
+command looks like this:
+>
+        ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .
+<
+You can add a map in your |.vimrc| file, eg: >
+
+        map <C-F12> :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR>
+<
+Or you can add these options in your ctags config file (~/.ctags under unix or
+%HOMEPATH%\ctags.cnf under windows) and execute the command : >
+
+        :!ctags -R .
+<
+If your project contains files of other languages you may add the following
+options:
+        --languages=c++ : Builds only the tags for C++ files.
+
+If your project contains macros you may also use the -I option.
+
+Please read the ctags help or ctags man page for more details.
+
+3.3. Setting the 'tags' option~
+
+The default value of the option 'tags' is "./tags,tags" ("./tags,./TAGS,tags,TAGS"
+when |+emacs_tags| is enabled), if you build your tag database with the cmd above,
+you normally don't have to change this setting (The cmd used above generates a 
+file with the name "tags"). In this case your current working directory must be 
+the directory where the tags file reside.
+
+Note:   When |+emacs_tags| is enabled, the script may display members twice, it's 
+        recommended to set tags to "./tags,tags' or "./TAGS,TAGS".
+
+If your tags file is not named "tags" you have to add it in the 'tags'
+option eg: >
+
+        set tags+=/usr/tagsdir/mytagfile       
+<
+You can ensure that the 'tags' option is set properly by executing the following
+command: >
+
+        :tselect MyClass
+<
+Where MyClass is a class of your project. This command should display all 
+possible tags for the type MyClass.
+
+3.4. Simple test~
+
+Now you can do a simple test. Edit a C++ file and write the simplest case : >
+
+        MyClass myObject;
+        myObject.<C-X><C-O>
+<
+You should see class members of MyClass.
+
+==============================================================================
+4. Options~
+                                                *omnicpp-options*
+
+You can change completion behaviour by setting script options in your |.vimrc|
+configuration file.
+
+4.1. Global scope search toggle~
+                                        *OmniCpp_GlobalScopeSearch*
+
+You can enable/disable the global scope search by setting the
+OmniCpp_GlobalScopeSearch option.
+
+Possible values are : 
+        0 = disabled
+        1 = enabled
+        [default=1] >
+
+        let OmniCpp_GlobalScopeSearch = 1
+<        
+4.2. Namespace search method~
+                                        *OmniCpp_NamespaceSearch*
+
+You can change the 'using namespace' search behaviour by setting the
+OmniCpp_NamespaceSearch option.
+
+Possible values are :
+        0 = namespaces disabled
+        1 = search namespaces in the current buffer
+        2 = search namespaces in the current buffer and in included files
+        [default=1] >
+        
+        let OmniCpp_NamespaceSearch = 1
+<
+When OmniCpp_NamespaceSearch is 2, "using namespace" declarations are parsed
+in the current buffer and also in included files. To find included files, the
+script use the vim env 'path', so you have to set it properly.
+
+Note: included files are searched with lvimgrep, thus the location list of the
+current window is changed.
+
+Note: When the 'filetype' is "c", namespace search is always disabled even if
+OmniCpp_NamespaceSearch != 0
+
+4.3. Class scope completion mode~
+                                        *OmniCpp_DisplayMode*
+
+When you are completing a class scope (eg: MyClass::<C-X><C-O>), depending on
+the current scope, you may see sometimes static, public, protected or private
+members and sometimes you may see all members. By default the choice is done 
+automatically by the script but you can override it with the 
+OmniCpp_DisplayMode option.
+
+Note: This option can be use when you have friend classes in your project (the 
+script does not support friend classes).
+
+Possible values are :
+        0 = auto
+        1 = always show all members
+        [default=0] >
+
+        let OmniCpp_DisplayMode = 0
+<
+4.4. Show scope in abbreviation~
+                                        *OmniCpp_ShowScopeInAbbr*
+
+By default, in the |omnicpp-popup| menu, you will see the scope of a match in 
+the last column. You can remove this column and add the scope at the beginning
+of match abbreviation.
+eg: 
+
+OmniCpp_ShowScopeInAbbr = 0
+        +-------------------------------------+
+        |method1(   f  +  MyNamespace::MyClass|
+        |_member1   m  +  MyNamespace::MyClass|
+        |_member2   m  #  MyNamespace::MyClass|
+        |_member3   m  -  MyNamespace::MyClass|
+        +-------------------------------------+
+
+OmniCpp_ShowScopeInAbbr = 1
+        +-------------------------------------+
+        |MyNamespace::MyClass::method1(   f + |
+        |MyNamespace::MyClass::_member1   m + |
+        |MyNamespace::MyClass::_member2   m # |
+        |MyNamespace::MyClass::_member3   m - |
+        +-------------------------------------+
+
+Possible values are :
+        0 = don't show scope in abbreviation
+        1 = show scope in abbreviation and remove the last column
+        [default=0] >
+
+        let OmniCpp_ShowScopeInAbbr = 0
+<
+4.5. Show prototype in abbreviation~
+                                        *OmniCpp_ShowPrototypeInAbbr*
+
+This option allows to display the prototype of a function in the abbreviation
+part of the popup menu.
+
+Possible values are:
+        0 = don't display prototype in abbreviation
+        1 = display prototype in abbreviation
+        [default=0] >
+        
+        let OmniCpp_ShowPrototypeInAbbr = 0
+<
+4.6. Show access~
+                                        *OmniCpp_ShowAccess*
+
+This option allows to show/hide the access information ('+', '#', '-') in the 
+popup menu.
+
+Possible values are:
+        0 = hide access
+        1 = show access
+        [default=1] >
+        
+        let OmniCpp_ShowAccess = 1
+
+4.7. Default using namespace list~
+                                        *OmniCpp_DefaultNamespaces*
+
+When |OmniCpp_NamespaceSearch| is not 0, the script will parse using namespace
+declarations in the current buffer and maybe in included files.
+You can specify manually a default namespace list if you want with the
+OmniCpp_DefaultNamespaces option. Each item in the list is a namespace name.
+eg: If you have
+
+        let OmniCpp_DefaultNamespaces = ["std", "MyNamespace"]
+
+    It will be the same as inserting this declarations at the top of the
+    current buffer :
+
+        using namespace std;
+        using namespace MyNamespace;
+
+This option can be use if you don't want to parse using namespace declarations
+in included files and want to add namespaces that are always used in your
+project.
+
+Possible values are : 
+        List of String
+        [default=[]] >
+
+        let OmniCpp_DefaultNamespaces = []
+<
+4.8.    May complete behaviour~
+                                        *omnicpp-may-complete*
+
+This feature allows you to run automatically a completion after a '.', '->' 
+or '::'. By default, the "may complete" feature is set automatically for '.' 
+and '->'. The reason to not set this feature for the scope operator '::' is 
+sometimes you don't want to complete a namespace that contains many members.
+
+To enable/disable the "may complete" behaviour for dot, arrow and scope
+operator, you can change the option OmniCpp_MayCompleteDot,
+OmniCpp_MayCompleteArrow and OmniCpp_MayCompleteScope respectively.
+
+                                        *OmniCpp_MayCompleteDot*
+Possible values are :
+        0 = May complete disabled for dot
+        1 = May complete enabled for dot
+        [default=1] >
+
+        let OmniCpp_MayCompleteDot = 1
+<
+                                        *OmniCpp_MayCompleteArrow*
+Possible values are :
+        0 = May complete disabled for arrow
+        1 = May complete enabled for arrow
+        [default=1] >
+
+        let OmniCpp_MayCompleteArrow = 1
+<
+                                        *OmniCpp_MayCompleteScope*
+Possible values are :
+        0 = May complete disabled for scope
+        1 = May complete enabled for scope
+        [default=0] >
+
+        let OmniCpp_MayCompleteScope = 0
+<
+
+Note: You can obviously continue to use <C-X><C-O>
+
+4.9. Select/Don't select first popup item~
+                                        *OmniCpp_SelectFirstItem*
+
+Note: This option is only used when 'completeopt' does not contain "longest".
+
+When 'completeopt' does not contain "longest", Vim automatically select the
+first entry of the popup menu. You can change this behaviour with the
+OmniCpp_SelectFirstItem option.
+
+Possible values are:
+        0 = don't select first popup item
+        1 = select first popup item (inserting it to the text)
+        2 = select first popup item (without inserting it to the text)
+        [default=0] >
+        
+        let OmniCpp_SelectFirstItem = 0
+
+4.10 Use local search function for variable definitions~
+                                        *OmniCpp_LocalSearchDecl*
+
+The internal search function for variable definitions of vim requires that the
+enclosing braces of the function are located in the first column. You can
+change this behaviour with the OmniCpp_LocalSearchDecl option. The local
+version works irrespective the position of braces.
+
+Possible values are:
+        0 = use standard vim search function
+        1 = use local search function
+        [default=0] >
+
+==============================================================================
+5. Features~
+                                                *omnicpp-features*
+5.1.  Popup menu~
+                                                *omnicpp-popup*
+Popup menu format:
+        +-------------------------------------+
+        |method1(   f  +  MyNamespace::MyClass|
+        |_member1   m  +  MyNamespace::MyClass|
+        |_member2   m  #  MyNamespace::MyClass|
+        |_member3   m  -  MyNamespace::MyClass|
+        +-------------------------------------+
+            ^       ^  ^          ^
+           (1)     (2)(3)        (4)
+
+(1) name of the symbol, when a match ends with '(' it's a function.
+
+(2) kind of the symbol, possible kinds are :
+        * c = classes
+        * d = macro definitions
+        * e = enumerators (values inside an enumeration)
+        * f = function definitions
+        * g = enumeration names
+        * m = class, struct, and union members
+        * n = namespaces
+        * p = function prototypes
+        * s = structure names
+        * t = typedefs
+        * u = union names
+        * v = variable definitions
+
+(3) access, possible values are :
+        * + = public
+        * # = protected
+        * - = private
+Note: enumerators have no access information
+
+(4) scope where the symbol is defined.
+Note: If the scope is empty it's a global symbol
+Note: anonymous scope may end with  __anon[number]
+eg: If you have an anonymous enum in MyNamespace::MyClass : >
+
+        namespace MyNamespace
+        {
+            class MyClass
+            {
+                private:
+
+                enum
+                {
+                    E_ENUM0,
+                    E_ENUM1,
+                    E_ENUM2
+                };
+            };
+        }
+<
+
+You should see :
+
+        +----------------------------------------------+
+        |E_ENUM0    e     MyNamespace::MyClass::__anon1|
+        |E_ENUM1    e     MyNamespace::MyClass::__anon1|
+        |E_ENUM2    e     MyNamespace::MyClass::__anon1|
+        +----------------------------------------------+
+                                                   ^
+                                              __anon[number]
+
+5.2.  Global scope completion~
+
+The global scope completion allows you to complete global symbols for the base 
+you are currently typing. The base can start with '::' or not.
+Note: Global scope completion only works with a non empty base, if you run a
+completion just after a '::' the completion will fail. The reason is that if
+there is no base to complete the script will try to display all the tags in
+the database. For small project it could be not a problem but for others you
+may wait 5 minutes or more for a result.
+
+eg1 : >
+
+        pthread_cr<C-X><C-O>    =>      pthread_create
+<
+Where pthread_create is a global function.
+eg2: >
+        ::globa<C-X><C-O>       =>     ::global_func(
+                                        +----------------+
+                                        |global_func(   f|
+                                        |global_var1    v|
+                                        |global_var2    v|
+                                        +----------------+
+<
+Where global_var1, global_var2 and global_func are global symbols
+eg3: >
+        ::<C-X><C-O>            =>      [NO MATCH]
+<
+No match because a global completion from an empty base is not allowed.
+
+5.3.  Namespace scope completion~
+
+You can complete namespace members after a 'MyNamespace::'. Contrary to global
+scope completion you can run a completion from an empty base.
+Possible members are:
+        * Namespaces
+        * Classes
+        * Structs
+        * Unions
+        * Enums
+        * Functions
+        * Variables
+        * Typedefs
+
+eg: >
+        MyNamespace::<C-X><C-O>
+                    +--------------------------------+
+                    |E_ENUM0            e MyNamespace|
+                    |E_ENUM1            e MyNamespace|
+                    |E_ENUM2            e MyNamespace|
+                    |MyClass            c MyNamespace|
+                    |MyEnum             g MyNamespace|
+                    |MyStruct           s MyNamespace|
+                    |MyUnion            u MyNamespace|
+                    |SubNamespace       n MyNamespace|
+                    |doSomething(       f MyNamespace|
+                    |myVar              v MyNamespace|
+                    |something_t        t MyNamespace|
+                    +--------------------------------+
+
+5.4.  Class scope completion~
+
+You can complete class members after a 'MyClass::'. Contrary to global scope
+completion you can run a completion from an empty base.
+By default, there is two behaviours for class scope completion.
+
+        a) Completion of a base class of the current class scope
+
+        When you are completing a base class of the current class scope, you
+        will see all members of this class in the popup menu.
+        eg: >
+
+        class A
+        {
+        public:
+            enum
+            {
+                E_ENUM0,
+                E_ENUM1,
+                E_ENUM2,
+            };
+
+            void func1();
+            static int _staticMember;
+            
+        private:
+            int _member;
+        };
+
+        class B : public A
+        {
+        public:
+            void doSomething();
+        };
+
+
+        void MyClassB::doSomething()
+        {
+            MyClassA::<C-X><C-O>
+                     +---------------------------+
+                     |E_ENUM0        e   MyClassA|
+                     |E_ENUM1        e   MyClassA|
+                     |E_ENUM2        e   MyClassA|
+                     |func1(         f + MyClassA|
+                     |_member        m - MyClassA|
+                     |_staticMember  m + MyClassA|
+                     +---------------------------+
+        }
+<
+
+        b) Completion of a non base class of the current class scope
+
+        When you are completing a class that is not a base class of the
+        current class you will see only enumerators and static members.
+        eg: >
+
+        class C
+        {
+        public:
+            void doSomething();
+        };
+
+        void MyClassC::doSomething()
+        {
+            MyClassA::<C-X><C-O>
+                     +---------------------------+
+                     |E_ENUM0        e   MyClassA|
+                     |E_ENUM1        e   MyClassA|
+                     |E_ENUM2        e   MyClassA|
+                     |_staticMember  m + MyClassA|
+                     +---------------------------+
+        }
+<
+You can override the default behaviour by setting the
+|OmniCpp_DisplayMode| option.
+
+5.5.  Current scope completion~
+
+When you start a completion from an empty instruction you are in "Current
+scope completion" mode. You will see possible members of each context in 
+the context stack.
+eg: >
+        void MyClass::doSomething()
+        {
+            using namespace MyNamespace;
+            using namespace SubNamespace;
+
+            // You will see members of each context in the context stack
+            // 1) MyClass members
+            // 2) MyNamespace::SubNamespace members
+            // 3) MyNamespace members
+
+            <C-X><C-O>
+            +------------------------------------------+
+            |_member1     m + MyClass                  |
+            |_member2     m # MyClass                  |
+            |func1(       f   MyNamespace::SubNamespace|
+            |var          v   MyNamespace::SubNamespace|
+            |func1(       f   MyNamespace              |
+            |var          v   MyNamespace              |
+            +------------------------------------------+
+        }
+<
+
+5.6.  Class, Struct and Union members completion~
+
+You can complete members of class, struct and union instances after a '->' or
+'.'.
+eg: >
+        MyClass myObject;
+        myObject.<C-X><C-O>
+                +-----------------------+
+                |_member1   m + MyClass |
+                |_member2   m # MyClass |
+                +-----------------------+
+<
+
+5.7.  Attribute members and returned type completion~
+
+You can complete a class member or a return type of a function.
+eg: >
+        MyClass myObject;
+
+        // Completion of the member _member1
+        myObject._member1-><C-X><C-O>
+                          +------------------------+
+                          |get(   m + AnotherClass1|
+                          +------------------------+
+
+        // Completion of the return type of the function get()
+        myObject._member1->get()-><C-X><C-O>
+                                 +--------------------------+
+                                 |_member1 m + AnotherClass2|
+                                 |_member2 m # AnotherClass2|
+                                 |_member3 m - AnotherClass2|
+                                 +--------------------------+
+
+5.8.  Anonymous type completion~
+
+Note: To use this feature you need at least|Exuberant_ctags| version 5.6
+
+You can complete an anonymous type like this : >
+        struct
+        {
+            int a;
+            int b;
+            int c;
+        }globalVar;
+
+        void func()
+        {
+            globalVar.<C-X><C-O>
+                     +---------------+
+                     |a   m + __anon1|
+                     |b   m + __anon1|
+                     |c   m + __anon1|
+                     +---------------+
+        }
+<
+Where globalVar is a global variable of an anonymous type
+
+5.9.  Typedef completion~
+
+You can complete a typedef. The typedef is resolved recursively, thus typedef
+of typedef of... may not be a problem.
+
+You can also complete a typedef of an anonymous type, eg : >
+        typedef struct
+        {
+            int a;
+            int b;
+            int c;
+        }something_t;
+
+        something_t globalVar;
+
+        void func()
+        {
+            globalVar.<C-X><C-O>
+                     +---------------+
+                     |a   m + __anon1|
+                     |b   m + __anon1|
+                     |c   m + __anon1|
+                     +---------------+
+        }
+<
+Where globalVar is a global variable of typedef of an anonymous type.
+
+5.10. Completion of the "this" pointer~