vim c ++标识符(变量名称)语法高亮显示

时间:2016-07-14 20:02:34

标签: c++ vim syntax

我对vim是全新的,并且除了一个细节之外,它几乎按照我想要的方式设置了c ++,语法突出显示不适用于标识符。我已经在谷歌上搜索了堆栈溢出,但似乎无法找到解决方案。

Screenshot from Vim

我的cpp.vim在〜/ .vim / syntax /

    " Vim syntax file
" Language: C++
" Current Maintainer:   vim-jp (https://github.com/vim-jp/vim-cpp)
" Previous Maintainer:  Ken Shan <ccshan@post.harvard.edu>
" Last Change:  2015 Nov 10

" For version 5.x: Clear all syntax items
" For version 6.x: Quit when a syntax file was already loaded
if version < 600
  syntax clear
elseif exists("b:current_syntax")
  finish
endif

" Read the C syntax to start with
if version < 600
  so <sfile>:p:h/c.vim
else
  runtime! syntax/c.vim
  unlet b:current_syntax
endif

" C++ extensions
syn keyword cppStatement    new delete this friend using
syn keyword cppAccess       public protected private
syn keyword cppModifier     inline virtual explicit export
syn keyword cppType     bool wchar_t
syn keyword cppExceptions   throw try catch
syn keyword cppOperator     operator typeid
syn keyword cppOperator     and bitor or xor compl bitand and_eq or_eq xor_eq not not_eq
syn match cppCast       "\<\(const\|static\|dynamic\|reinterpret\)_cast\s*<"me=e-1
syn match cppCast       "\<\(const\|static\|dynamic\|reinterpret\)_cast\s*$"
syn keyword cppStorageClass mutable
syn keyword cppStructure    class typename template namespace
syn keyword cppBoolean      true false
syn keyword cppConstant     __cplusplus

" C++ 11 extensions
if !exists("cpp_no_cpp11")
  syn keyword cppModifier   override final
  syn keyword cppType       nullptr_t
  syn keyword cppExceptions noexcept
  syn keyword cppStorageClass   constexpr decltype thread_local
  syn keyword cppConstant   nullptr
  syn keyword cppConstant   ATOMIC_FLAG_INIT ATOMIC_VAR_INIT
  syn keyword cppConstant   ATOMIC_BOOL_LOCK_FREE ATOMIC_CHAR_LOCK_FREE
  syn keyword cppConstant   ATOMIC_CHAR16_T_LOCK_FREE ATOMIC_CHAR32_T_LOCK_FREE
  syn keyword cppConstant   ATOMIC_WCHAR_T_LOCK_FREE ATOMIC_SHORT_LOCK_FREE
  syn keyword cppConstant   ATOMIC_INT_LOCK_FREE ATOMIC_LONG_LOCK_FREE
  syn keyword cppConstant   ATOMIC_LLONG_LOCK_FREE ATOMIC_POINTER_LOCK_FREE
  syn region cppRawString   matchgroup=cppRawStringDelimiter start=+\%(u8\|[uLU]\)\=R"\z([[:alnum:]_{}[\]#<>%:;.?*\+\-/\^&|~!=,"']\{,16}\)(+ end=+)\z1"+ contains=@Spell
endif

" C++ 14 extensions
if !exists("cpp_no_cpp14")
  syn match cppNumber       display "\<0b[01]\+\(u\=l\{0,2}\|ll\=u\)\>"
endif

" The minimum and maximum operators in GNU C++
syn match cppMinMax "[<>]?"

" Default highlighting
if version >= 508 || !exists("did_cpp_syntax_inits")
  if version < 508
    let did_cpp_syntax_inits = 1
    command -nargs=+ HiLink hi link <args>
  else
    command -nargs=+ HiLink hi def link <args>
  endif
  HiLink cppAccess      cppStatement
  HiLink cppCast        cppStatement
  HiLink cppExceptions      Exception
  HiLink cppOperator        Operator
  HiLink cppStatement       Statement
  HiLink cppModifier        Type
  HiLink cppType        Type
  HiLink cppStorageClass    StorageClass
  HiLink cppStructure       Structure
  HiLink cppBoolean     Boolean
  HiLink cppConstant        Constant
  HiLink cppRawStringDelimiter  Delimiter
  HiLink cppRawString       String
  delcommand HiLink
endif

let b:current_syntax = "cpp"

" vim: ts=8


" Highlight Class and Function names
syn match    cCustomParen    "(" contains=cParen,cCppParen
syn match    cCustomFunc     "\w\+\s*(" contains=cCustomParen
syn match    cCustomScope    "::"
syn match    cCustomClass    "\w\+\s*::" contains=cCustomScope

hi def link cCustomFunc  Function
hi def link cCustomClass Function

0 个答案:

没有答案