2012-11-16 36 views
8

tôi sử dụng vim (cài đặt trên cygwin) để viết c++ chương trình nhưng nó không làm nổi bật một số c++ từ khóa như new, delete, public, friend, try, nhưng làm nổi bật khác như namespace, int , const, operator, true, class, include. Nó cũng không thay đổi màu sắc của các toán tử.vim không làm nổi bật một số C++ từ khóa

Tôi chưa bao giờ thay đổi tệp cú pháp của nó. Có gì sai với nó? Cảm ơn rất nhiều.

Tôi sử dụng bảng màu tùy chỉnh; khi tôi đổi nó thành màu desert, tô sáng không có vấn đề gì, nhưng tôi cần phải sử dụng lược đồ màu đó và không thể thay đổi nó thành thứ gì khác.

Tôi muốn nó hiển thị chương trình như hình sau đây (tôi đã sử dụng sơ đồ này màu sắc với notepad ++ trong hình):

example of correctly colored one

nhưng bây giờ nó như hình sau: not correctly colored one

sự colorscheme có tại đây:

"Tomorrow Night Bright - Full Colour and 256 Colour 
" http://chriskempson.com 
" 
" Hex colour conversion functions borrowed from the theme "Desert256"" 

" Default GUI Colours 
let s:foreground = "eaeaea" 
let s:background = "000000" 
let s:selection = "424242" 
let s:line = "2a2a2a" 
let s:comment = "969896" 
let s:red = "d54e53" 
let s:orange = "e78c45" 
let s:yellow = "e7c547" 
let s:green = "b9ca4a" 
let s:aqua = "70c0b1" 
let s:blue = "7aa6da" 
let s:purple = "c397d8" 
let s:window = "4d5057" 

set background=dark 
hi clear 
syntax reset 

let g:colors_name = "Tomorrow-Night-Bright" 

if has("gui_running") || &t_Co == 88 || &t_Co == 256 
" Returns an approximate grey index for the given grey level 
fun <SID>grey_number(x) 
    if &t_Co == 88 
     if a:x < 23 
      return 0 
     elseif a:x < 69 
      return 1 
     elseif a:x < 103 
      return 2 
     elseif a:x < 127 
      return 3 
     elseif a:x < 150 
      return 4 
     elseif a:x < 173 
      return 5 
     elseif a:x < 196 
      return 6 
     elseif a:x < 219 
      return 7 
     elseif a:x < 243 
      return 8 
     else 
      return 9 
     endif 
    else 
     if a:x < 14 
      return 0 
     else 
      let l:n = (a:x - 8)/10 
      let l:m = (a:x - 8) % 10 
      if l:m < 5 
       return l:n 
      else 
       return l:n + 1 
      endif 
     endif 
    endif 
endfun 

" Returns the actual grey level represented by the grey index 
fun <SID>grey_level(n) 
    if &t_Co == 88 
     if a:n == 0 
      return 0 
     elseif a:n == 1 
      return 46 
     elseif a:n == 2 
      return 92 
     elseif a:n == 3 
      return 115 
     elseif a:n == 4 
      return 139 
     elseif a:n == 5 
      return 162 
     elseif a:n == 6 
      return 185 
     elseif a:n == 7 
      return 208 
     elseif a:n == 8 
      return 231 
     else 
      return 255 
     endif 
    else 
     if a:n == 0 
      return 0 
     else 
      return 8 + (a:n * 10) 
     endif 
    endif 
endfun 

" Returns the palette index for the given grey index 
fun <SID>grey_colour(n) 
    if &t_Co == 88 
     if a:n == 0 
      return 16 
     elseif a:n == 9 
      return 79 
     else 
      return 79 + a:n 
     endif 
    else 
     if a:n == 0 
      return 16 
     elseif a:n == 25 
      return 231 
     else 
      return 231 + a:n 
     endif 
    endif 
endfun 

" Returns an approximate colour index for the given colour level 
fun <SID>rgb_number(x) 
    if &t_Co == 88 
     if a:x < 69 
      return 0 
     elseif a:x < 172 
      return 1 
     elseif a:x < 230 
      return 2 
     else 
      return 3 
     endif 
    else 
     if a:x < 75 
      return 0 
     else 
      let l:n = (a:x - 55)/40 
      let l:m = (a:x - 55) % 40 
      if l:m < 20 
       return l:n 
      else 
       return l:n + 1 
      endif 
     endif 
    endif 
endfun 

" Returns the actual colour level for the given colour index 
fun <SID>rgb_level(n) 
    if &t_Co == 88 
     if a:n == 0 
      return 0 
     elseif a:n == 1 
      return 139 
     elseif a:n == 2 
      return 205 
     else 
      return 255 
     endif 
    else 
     if a:n == 0 
      return 0 
     else 
      return 55 + (a:n * 40) 
     endif 
    endif 
endfun 

" Returns the palette index for the given R/G/B colour indices 
fun <SID>rgb_colour(x, y, z) 
    if &t_Co == 88 
     return 16 + (a:x * 16) + (a:y * 4) + a:z 
    else 
     return 16 + (a:x * 36) + (a:y * 6) + a:z 
    endif 
endfun 

" Returns the palette index to approximate the given R/G/B colour levels 
fun <SID>colour(r, g, b) 
    " Get the closest grey 
    let l:gx = <SID>grey_number(a:r) 
    let l:gy = <SID>grey_number(a:g) 
    let l:gz = <SID>grey_number(a:b) 

    " Get the closest colour 
    let l:x = <SID>rgb_number(a:r) 
    let l:y = <SID>rgb_number(a:g) 
    let l:z = <SID>rgb_number(a:b) 

    if l:gx == l:gy && l:gy == l:gz 
     " There are two possibilities 
     let l:dgr = <SID>grey_level(l:gx) - a:r 
     let l:dgg = <SID>grey_level(l:gy) - a:g 
     let l:dgb = <SID>grey_level(l:gz) - a:b 
     let l:dgrey = (l:dgr * l:dgr) + (l:dgg * l:dgg) + (l:dgb * l:dgb) 
     let l:dr = <SID>rgb_level(l:gx) - a:r 
     let l:dg = <SID>rgb_level(l:gy) - a:g 
     let l:db = <SID>rgb_level(l:gz) - a:b 
     let l:drgb = (l:dr * l:dr) + (l:dg * l:dg) + (l:db * l:db) 
     if l:dgrey < l:drgb 
      " Use the grey 
      return <SID>grey_colour(l:gx) 
     else 
      " Use the colour 
      return <SID>rgb_colour(l:x, l:y, l:z) 
     endif 
    else 
     " Only one possibility 
     return <SID>rgb_colour(l:x, l:y, l:z) 
    endif 
endfun 

" Returns the palette index to approximate the 'rrggbb' hex string 
fun <SID>rgb(rgb) 
    let l:r = ("0x" . strpart(a:rgb, 0, 2)) + 0 
    let l:g = ("0x" . strpart(a:rgb, 2, 2)) + 0 
    let l:b = ("0x" . strpart(a:rgb, 4, 2)) + 0 

    return <SID>colour(l:r, l:g, l:b) 
endfun 

" Sets the highlighting for the given group 
fun <SID>X(group, fg, bg, attr) 
    if a:fg != "" 
     exec "hi " . a:group . " guifg=#" . a:fg . " ctermfg=" . <SID>rgb(a:fg) 
    endif 
    if a:bg != "" 
     exec "hi " . a:group . " guibg=#" . a:bg . " ctermbg=" . <SID>rgb(a:bg) 
    endif 
    if a:attr != "" 
     exec "hi " . a:group . " gui=" . a:attr . " cterm=" . a:attr 
    endif 
endfun 

" Vim Highlighting 
call <SID>X("Normal", s:foreground, s:background, "") 
call <SID>X("LineNr", s:selection, "", "") 
call <SID>X("NonText", s:selection, "", "") 
call <SID>X("SpecialKey", s:selection, "", "") 
call <SID>X("Search", s:background, s:yellow, "") 
call <SID>X("TabLine", s:foreground, s:background, "reverse") 
call <SID>X("StatusLine", s:window, s:yellow, "reverse") 
call <SID>X("StatusLineNC", s:window, s:foreground, "reverse") 
call <SID>X("VertSplit", s:window, s:window, "none") 
call <SID>X("Visual", "", s:selection, "") 
call <SID>X("Directory", s:blue, "", "") 
call <SID>X("ModeMsg", s:green, "", "") 
call <SID>X("MoreMsg", s:green, "", "") 
call <SID>X("Question", s:green, "", "") 
call <SID>X("WarningMsg", s:red, "", "") 
call <SID>X("MatchParen", "", s:selection, "") 
call <SID>X("Folded", s:comment, s:background, "") 
call <SID>X("FoldColumn", "", s:background, "") 
if version >= 700 
    call <SID>X("CursorLine", "", s:line, "none") 
    call <SID>X("CursorColumn", "", s:line, "none") 
    call <SID>X("PMenu", s:foreground, s:selection, "none") 
    call <SID>X("PMenuSel", s:foreground, s:selection, "reverse") 
end 
if version >= 703 
    call <SID>X("ColorColumn", "", s:line, "none") 
end 

" Standard Highlighting 
call <SID>X("Comment", s:comment, "", "") 
call <SID>X("Todo", s:comment, s:background, "") 
call <SID>X("Title", s:comment, "", "") 
call <SID>X("Identifier", s:red, "", "none") 
call <SID>X("Statement", s:foreground, "", "") 
call <SID>X("Conditional", s:foreground, "", "") 
call <SID>X("Repeat", s:foreground, "", "") 
call <SID>X("Structure", s:purple, "", "") 
call <SID>X("Function", s:blue, "", "") 
call <SID>X("Constant", s:orange, "", "") 
call <SID>X("String", s:green, "", "") 
call <SID>X("Special", s:foreground, "", "") 
call <SID>X("PreProc", s:purple, "", "") 
call <SID>X("Operator", s:aqua, "", "none") 
call <SID>X("Type", s:blue, "", "none") 
call <SID>X("Define", s:purple, "", "none") 
call <SID>X("Include", s:blue, "", "") 
"call <SID>X("Ignore", "666666", "", "") 

" Vim Highlighting 
call <SID>X("vimCommand", s:red, "", "none") 

" C Highlighting 
call <SID>X("cType", s:yellow, "", "") 
call <SID>X("cStorageClass", s:purple, "", "") 
call <SID>X("cConditional", s:purple, "", "") 
call <SID>X("cRepeat", s:purple, "", "") 

" PHP Highlighting 
call <SID>X("phpVarSelector", s:red, "", "") 
call <SID>X("phpKeyword", s:purple, "", "") 
call <SID>X("phpRepeat", s:purple, "", "") 
call <SID>X("phpConditional", s:purple, "", "") 
call <SID>X("phpStatement", s:purple, "", "") 
call <SID>X("phpMemberSelector", s:foreground, "", "") 

" Ruby Highlighting 
call <SID>X("rubySymbol", s:green, "", "") 
call <SID>X("rubyConstant", s:yellow, "", "") 
call <SID>X("rubyAttribute", s:blue, "", "") 
call <SID>X("rubyInclude", s:blue, "", "") 
call <SID>X("rubyLocalVariableOrMethod", s:orange, "", "") 
call <SID>X("rubyCurlyBlock", s:orange, "", "") 
call <SID>X("rubyStringDelimiter", s:green, "", "") 
call <SID>X("rubyInterpolationDelimiter", s:orange, "", "") 
call <SID>X("rubyConditional", s:purple, "", "") 
call <SID>X("rubyRepeat", s:purple, "", "") 

" Python Highlighting 
call <SID>X("pythonInclude", s:purple, "", "") 
call <SID>X("pythonStatement", s:purple, "", "") 
call <SID>X("pythonConditional", s:purple, "", "") 
call <SID>X("pythonFunction", s:blue, "", "") 

" JavaScript Highlighting 
call <SID>X("javaScriptBraces", s:foreground, "", "") 
call <SID>X("javaScriptFunction", s:purple, "", "") 
call <SID>X("javaScriptConditional", s:purple, "", "") 
call <SID>X("javaScriptRepeat", s:purple, "", "") 
call <SID>X("javaScriptNumber", s:orange, "", "") 
call <SID>X("javaScriptMember", s:orange, "", "") 

" HTML Highlighting 
call <SID>X("htmlTag", s:red, "", "") 
call <SID>X("htmlTagName", s:red, "", "") 
call <SID>X("htmlArg", s:red, "", "") 
call <SID>X("htmlScriptTag", s:red, "", "") 

" Diff Highlighting 
call <SID>X("diffAdded", s:green, "", "") 
call <SID>X("diffRemoved", s:red, "", "") 

" Delete Functions 
delf <SID>X 
delf <SID>rgb 
delf <SID>colour 
delf <SID>rgb_colour 
delf <SID>rgb_level 
delf <SID>rgb_number 
delf <SID>grey_colour 
delf <SID>grey_level 
delf <SID>grey_number 
endif 

Trả lời

5

Thêm phần này vào C Nêu bật đoạn:

call <SID>X("Statement", s:purple, "", "") 
2

Tất cả từ khóa bạn đề cập đến cuối cùng liên kết với nhóm cú pháp tiêu chuẩn Statement. Có lẽ cái đó đã bị xóa. Hãy thử

:verbose highlight Statement 

Nếu hiển thị xxx cleared, bạn cần thêm một bước nữa và bây giờ cần điều tra tại sao colorscheme của bạn không xác định màu.

+0

nó cho thấy điều này: Báo cáo hạn xxx = bold ctermfg = 254 gui = bold guifg = # eaeaea set cuối từ ~/.vim/màu/Tomorrow- Night-Bright.vim – Sam

+1

Nó hiển thị gì cho ': verbose hi cppStatement'? Nó có liên kết với 'Statement' không? –

+0

có, nó liên kết đến tuyên bố: liên kết cppStatement xxx đến Tuyên bố – Sam

Các vấn đề liên quan