特别是,初始化列表的显示非常糟糕:
vector<int> v({1,2,3});
将以红色突出显示花括号(表示错误)。
答案 0 :(得分:34)
作为替代方案,您可以使用
let c_no_curly_error=1
在.vimrc
文件中,以便vim不会将{}
标记为()
中的错误。
答案 1 :(得分:32)
现在有一个来自http://www.vim.org/scripts/script.php?script_id=3797的C ++ 11脚本,它不再将括号内的大括号标记为错误。
答案 2 :(得分:25)
如果您使用Syntastic,请将其添加到 .vimrc (或.vimrc.local)。
let g:syntastic_cpp_compiler_options = ' -std=c++11'
Syntastic显示以多种语言编写的代码的错误。每种语言都有一个“检查器”,它是执行外部程序的包装器。 c ++检查程序的外部程序是g ++。 c ++检查程序可以将编译器选项传递给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++'
答案 3 :(得分:9)
使用统一初始化而不是old()构造函数
vector v {1,2,3};
答案 4 :(得分:6)
据我所知,有一项工作正在进行中,请参阅vim_dev邮件列表中的here。
答案 5 :(得分:4)
已向邮件列表发送了一个改进的C ++ 11支持补丁:https://groups.google.com/forum/?fromgroups#!topic/vim_dev/ug_wmWQqyGU
答案 6 :(得分:1)
您也可以在本地语法配置文件中配置它。
在项目根目录中删除.syntastic_cpp_config
文件,并为每行提供一个编译器参数(我也有Loki库的包含路径):
-std=c++11
-Ilib/loki/include
-Ilib/loki_book/include
答案 7 :(得分:1)
仅更改标志
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/',
答案 8 :(得分:0)
我已经搜索了关于VIM的C ++ 11语法文件的其他提议,它们已经过时而且没有维护。无论如何,最近Vim的发行版已经有了很好的语法文件。有时它们会更新,语法文件的官方来源在此处:https://github.com/vim-jp/vim-cpp