Need help with vim-cpp-modern?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

bfrg
240 Stars 21 Forks 96 Commits 2 Opened issues

Description

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

Services available

!
?

Need anything else?

Contributors list

# 221,284
Vim
cpp20
cpp17
cpp11
87 commits
# 525,625
coc
explore...
Vim
Neovim
2 commits
# 633,566
Vim
cpp20
cpp17
cpp11
1 commit
# 120,940
typeset...
opam
c-plus-...
cpp17
1 commit

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

Keyword and regex-based syntax highlighting for C and C++11/14/17/20 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++20 language features like coroutines and concepts - Function declarations/definitions and function calls (basically all words followed by an opening parenthesis) - Optionally a simpler (less colorful) highlighting of standard C and C++ keywords

out Code snippet from cppreference (left: default 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, class names in declarations, and class scopes 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_no_function_highlight = 1

" 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

" 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 --depth=1 https://github.com/bfrg/vim-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
.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.