Есть ли синтаксический файл С++ 11 для vim?

В частности, отображение списков инициализации действительно плохо:

vector<int> v({1,2,3});

выделит фигурные скобки красным цветом (обозначая ошибку).

Ответ 2

В качестве альтернативы вы можете использовать

let c_no_curly_error=1

в вашем файле .vimrc, чтобы vim не отмечал {} как ошибку в ().

Ответ 3

Если вы используете Syntastic, добавьте это в свой .vimrc (или .vimrc.local).

let g:syntastic_cpp_compiler_options = ' -std=c++11'

Syntastic показывает ошибки для кода, написанного на нескольких языках. На каждом языке есть "checker", который является оболочкой для выполнения внешней программы. Внешняя программа для проверки С++ - g++. Контроллер С++ может передавать параметры компилятора в g++ и может быть настроен.

https://github.com/scrooloose/syntastic/wiki/C--:---gcc

Если вы хотите использовать clang++, вы можете использовать эти параметры

let g:syntastic_cpp_compiler = 'clang++'
let g:syntastic_cpp_compiler_options = ' -std=c++11 -stdlib=libc++'

Ответ 4

используйте стандартную инициализацию вместо старого() конструктора

вектор v {1,2,3};

Ответ 5

Насколько я знаю, для этого есть работа, см. здесь в списке писем vim_dev.

Ответ 7

Вы также можете настроить это в локальном синтаксическом файле конфигурации.

Отбросьте файл .syntastic_cpp_config в корневой каталог проекта и дайте ему аргументы компилятора по одному в строке (в качестве примера я также включил пути для библиотеки Loki):

-std=c++11
-Ilib/loki/include
-Ilib/loki_book/include

Ответ 8

Если вы используете YouCompleteMe, вы можете изменить ".ycm_extra_conf.py" следующим образом: (путь к файлу ~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py);

изменить флаги

flags = [
'-std=c++11',
'-O0',  
'-Werror', 
'-Weverything', 
'-Wno-documentation', 
'-Wno-deprecated-declarations', 
'-Wno-disabled-macro-expansion', 
'-Wno-float-equal', 
'-Wno-c++98-compat', 
'-Wno-c++98-compat-pedantic', 
'-Wno-global-constructors', 
'-Wno-exit-time-destructors', 
'-Wno-missing-prototypes', 
'-Wno-padded', 
'-Wno-old-style-cast',
'-Wno-weak-vtables',
'-x', 
'c++', 
'-I', 
'.', 
'-isystem', 
'/usr/include/', 

]

Ответ 9

Я искал другие предложения о синтаксическом файле С++ 11 VIM, и они старые и не поддерживаются. В любом случае, последние дистрибутивы Vim уже имеют хорошие синтаксические файлы. Иногда они обновляются, и официальный источник синтаксических файлов находится здесь: https://github.com/vim-jp/vim-cpp