Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

bfrg/vim-c-cpp-modern

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

120 Commits

Repository files navigation

vim-c-cpp-modern: Enhanced C and C++ syntax highlighting

Keyword and regex-based syntax highlighting for C and C++11/14/17/20/23 in Vim.

The syntax files provide highlighting of:

  • Common ANSI C keywords
  • C++ Standard Library namespaces, types, helper types, helper template variables, and constants
  • C++11 attributes
  • Latest C++ language features like coroutines and concepts
  • Function and function pointer declarations, and function calls (basically all words followed by an opening parenthesis)
  • Optionally a simpler (less colorful) highlighting of standard C and C++ keywords

screenshot left: default cpp.vim syntax file, right: this plugin

Difference to vim-cpp-enhanced-highlight

Both syntax files are based on vim-cpp-enhanced-highlight with the following modifications:

  • The C++ keywords virtual, override, final, inline, explicit and export are standard C++ statements and not types and are therefore highlighted using the highlight group Statement.
  • Highlighting of library functions is purely regex-based.
  • User-defined function templates and class/struct members are not highlighted. Their regex'es are too complicated and slow, and fail too often.

Optional features

" Disable function highlighting (affects both C and C++ files)
let g:cpp_function_highlight = 0
" Enable highlighting of C++11 attributes
let g:cpp_attributes_highlight = 1
" Highlight struct/class member variables (affects both C and C++ files)
let g:cpp_member_highlight = 1
" Disable highlighting of type names in class, struct, union, enum, using, and
" concept declarations (affects both C and C++ files)
let g:cpp_type_name_highlight = 0
" Highlight operators (affects both C and C++ files)
let g:cpp_operator_highlight = 1
" Put all standard C and C++ keywords under Vim's highlight group 'Statement'
" (affects both C and C++ files)
let g:cpp_simple_highlight = 1

The last option changes the highlighting of the following keywords:

  • C: static, register, auto, volatile, extern, const, inline, __attribute__, restrict, alignas, alignof, static_assert, noreturn, thread_local, struct, union, enum, case, default
  • C++: class, typename, template, namespace, concept, mutable, constexpr decltype, consteval, constinit

Installation

$ cd ~/.vim/pack/git-plugins/start
$ git clone https://github.com/bfrg/vim-c-cpp-modern

Note: The directory name git-plugins is arbitrary, you can pick any other name. For more details see :help packages.

License

Distributed under the same terms as Vim itself. See :help license.

About

Extended Vim syntax highlighting for C and C++ (C++11/14/17/20/23)

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 5

AltStyle によって変換されたページ (->オリジナル) /