我们使用shell脚本调用各种cmake
操作来构建我们的产品。回显给STDERR的信息是g ++编译器输出的错误。我可以使用流重定向将错误存入文件
myBuild.sh 2> errors
我可以编辑该文件以及各种来源。语法高亮显示在.cpp和.h中,但错误文件没有突出显示。
有没有办法让vim为我的错误文件着色?也许添加一个文件类型,如errors.err或存储在$ VIM_something中的一些脚本?
示例输出
/wxyzModule/wxyzModule.h: In member function 'void WxyzModule::setIsTesting(bool)':
/wxyzModule/wxyzModule.h:48:48: error: 'm_isTesting' was not declared in this scope
如果我:设置filetype = cpp, 48:48 为红色, bool 为绿色,不且此是黄色的。其他所有东西都保持不变,就像没有突出显示一样。
答案 0 :(得分:1)
请考虑在vim中使用:make
,您可以通过设置:h 'makeprg'
选项将其设置为使用shell命令,例如。)set makeprg=myBuild.sh\ 2>&1
,默认:h 'errorformat'
应该使用它,否则你可以调整它。
答案 1 :(得分:1)
虽然你的错误文件包含C ++函数和变量名,但是它不是C ++语法(特别是前面文件名的整体结构不同)。因此,尝试将:setfiletype cpp
应用于它必然会失败。
如果你真的需要突出显示,你必须编写自己的语法插件(例如名为g++errorformat
)。你当然可以从$VIMRUNTIME/syntax/cpp.vim
复制某些语法元素,但实际上,你正在编写一个单独的语法。
注意:如果您将错误文件加载到Vim的 quickfix list (:cfile errors
)中,您将获得文件名和行/列的基本突出显示,以及跳转到该位置等设施错误。
答案 2 :(得分:0)
您可以在vim中将文件类型设置为cpp
与
:set filetype=cpp
如果您想知道当前使用的是filetype
,可以输入
:set filetype
如果您不想每次都输入,可以使用autocmd
autocmd BufNewFile,BufRead *.err set filetype=cpp