是否有适用于vim的C ++ 11语法文件?

时间:2010-06-04 19:29:56

标签: c++ vim c++11

特别是,初始化列表的显示非常糟糕:

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

将以红色突出显示花括号(表示错误)。

9 个答案:

答案 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)

如果您使用YouCompleteMe,您可以更改&#39; .ycm_extra_conf.py&#39;。赞:(文件路径〜/ .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/', 

答案 8 :(得分:0)

我已经搜索了关于VIM的C ++ 11语法文件的其他提议,它们已经过时而且没有维护。无论如何,最近Vim的发行版已经有了很好的语法文件。有时它们会更新,语法文件的官方来源在此处:https://github.com/vim-jp/vim-cpp