设置Vim的errorformat以支持mxmlc编译器
2012-10-17 13:37
190 查看
在Vim调用Ant编译swf并自动调试一文中,我介绍了使用Vim来编译swf的方法,这半年来,我一直都用Vim+Ant+FlexSDK做AS开发,感觉总体效率上比Flash
Builder要高许多。
不好的地方,其实也有许多。最大的不便就是没有代码提示,对于不熟悉的方法,必须要去查看Language Reference。还有个附带的不便就是必须自己手动导入包。不过这两个不便之处,又让我远离了Flash Builder中的哪些错误的代码提示(我被误导过好多次),以及让我更熟悉AS3的包结构。
今天说的不是这些,好了,进入正题把!
在Vim中,有许多为程序员着想的地方。比如碰到编译错误后会自动打开第一个出错的文件并跳转到出错行。改完这个错误后可以用
不过,在使用Vim+Ant+FlexSDK来编译AS的时候,虽然能够看到编译的出错信息,但是Vim会自动打开一个不存在的文件,无法使用上面的功能。
要了解出现这个问题原因,首先要知道Vim获取编译错误的原理。Vim通过分析编译器输出的错误信息文本,来得到自己能识别的出错信息,从而实现正确的跳转。但不同的编译器的输出信息千奇百怪,Vim默认的分析程序不能正确解析
![](http://zengrong.net/wp-content/uploads/2011/08/vim_emf1.png)
可以看出,Vim将错误文件路径前面的[mxmlc]前缀也当作了路径的一部分,然后打开这个不存在的文件,导致无法正常进行修改。
再看一张详细一点的错误信息:
![](http://zengrong.net/wp-content/uploads/2011/08/vim_emf2.png)
那么,只要我们将错误信息的解析程序设置正确,就能正确解析这些信息了!
执行下面的代码,然后编译,如果有编译错误,就能正常的跳转到错误文件的对应位置:
?View
Code VIM
需要注意一点的是,在ex模式或者在命令行模式中输入errorformat属性值的时候,必须对空格用反斜杠转义,否则Vim会不接受这些参数值。网上找的很多例子可能都忽略了这点。上面的例子中,已经进行了转义。
为什么例子中有个中文?因为编译器自动识别了我的语言,因此输出的错误信息是中文的,我也必须用中文来分析。如果编译器输出信息为英文,那么这里的
由于使用了中文,如果将这段代码写在vimrc中的话,就必须进行编码转换:
?View
Code VIM
至于语法的详细含义和用法,这里写的很清楚:
Builder要高许多。
不好的地方,其实也有许多。最大的不便就是没有代码提示,对于不熟悉的方法,必须要去查看Language Reference。还有个附带的不便就是必须自己手动导入包。不过这两个不便之处,又让我远离了Flash Builder中的哪些错误的代码提示(我被误导过好多次),以及让我更熟悉AS3的包结构。
今天说的不是这些,好了,进入正题把!
在Vim中,有许多为程序员着想的地方。比如碰到编译错误后会自动打开第一个出错的文件并跳转到出错行。改完这个错误后可以用
:cn命令跳转到下一个出错处继续修改。这个特性降低了程序员在调试过程中对鼠标的依赖,提高了效率。
不过,在使用Vim+Ant+FlexSDK来编译AS的时候,虽然能够看到编译的出错信息,但是Vim会自动打开一个不存在的文件,无法使用上面的功能。
要了解出现这个问题原因,首先要知道Vim获取编译错误的原理。Vim通过分析编译器输出的错误信息文本,来得到自己能识别的出错信息,从而实现正确的跳转。但不同的编译器的输出信息千奇百怪,Vim默认的分析程序不能正确解析
Ant+mxmlc编译器的输出信息,造成了无法正确跳转到错误文件。让我们看张图:
![](http://zengrong.net/wp-content/uploads/2011/08/vim_emf1.png)
可以看出,Vim将错误文件路径前面的[mxmlc]前缀也当作了路径的一部分,然后打开这个不存在的文件,导致无法正常进行修改。
再看一张详细一点的错误信息:
![](http://zengrong.net/wp-content/uploads/2011/08/vim_emf2.png)
那么,只要我们将错误信息的解析程序设置正确,就能正确解析这些信息了!
执行下面的代码,然后编译,如果有编译错误,就能正常的跳转到错误文件的对应位置:
?View
Code VIM
1 | :set errorformat=%E\ \ \ \ [mxmlc]%f(%l):\ 列:\ %c\ %m |
为什么例子中有个中文?因为编译器自动识别了我的语言,因此输出的错误信息是中文的,我也必须用中文来分析。如果编译器输出信息为英文,那么这里的
列应为
col。
由于使用了中文,如果将这段代码写在vimrc中的话,就必须进行编码转换:
?View
Code VIM
1 | let &errorformat=iconv("%E\ \ \ \ [mxmlc]%f(%l):\ 列:\ %c\ %m", 'utf8', &enc) |
:help errorformat
相关文章推荐
- vim添加python3支持与设置。
- vim设置支持鼠标,光标定位,滚轮上下移动
- Vim设置支持鼠标,光标定位,滚轮上下移动
- Fedora下设置vim支持显示中文
- 设置vim支持中文编码GB2312和Unicode编码UTF8
- Fedora CentOS Red Hat中让vim支持语法高亮设置
- VS编译器中设置 输出窗口 只显示error,不显示warning 要如何配置
- Visual C++2010编译器常用选项设置-新增支持并行计算
- Vim 中设置对 Aspell 的支持 (windows)
- VS编译器中设置 输出窗口 只显示error,不显示warning 要如何配置
- 为Vim设置多字符编码方式支持
- vim 颜色和中文支持设置
- Vim设置支持鼠标,光标定位,滚轮上下移动
- vim支持中文设置
- CCS5 编译器手动设置dsp支持可变参数宏等问题
- Vim 设置 textwidth 和 formatoptions 无效解决方法
- KEIL编译器【C语言编译选项优化等级说明】【支持C99(变量声明在执行语句之后)】【反汇编设置】【C语言联合汇编】
- CCS5 编译器手动设置dsp支持可变参数宏等问题
- vim编译器设置
- VIM编译器:设置行号和[Tab]的缩进空格数目