使用VIM开发Flex - 自动编译

Flex Builder 还是不错地, 它继承了一部分Eclipse的优点, 还有设计器, 可是它$249 的价格让我难以接受,要是RMB249我肯定会买. 用破解版,变相的盗版(冒充学生,申请个免费的)又都非我所愿. 用了60天试用期过后,只好不用了.于是就尝试其他的工具, 在深入的使用VIM开发一个月后,发现我完全可以不用Flex Builder. 于是就有了上一篇文章 [url="http://nealmi.iteye.com/blog/281026"]使用VIM开发Flex - 基础环境设置[/url].


我很懒,并且习惯了Eclipse的自动编译功能,刚开始用VIM时,总是调试了半天,结果发现只修改了源文件,没有编译.

鉴于以上情况,我就考虑实现在保存文件时自动编译功能,当时的想法是监控文件系统.结果就有这篇文章 [url="http://nealmi.iteye.com/blog/268780"]请教一个问题 - 监控文件系统变化( C 语言)[/url] 这个基本可以实现,问题是只能监控一个目录,不能监控子目录,而且占用不少CPU资源. 后来就换了个思路, 像Eclipse一样通过在保存文件的时候调用编译器.

以下内容就是通过扩展VIM. 使用VIM的Auto Command功能实现.已经满足我的需要.

编写编译Flex的shell脚本.更多具体参数含义请查询Flex文档.
debug: 生成可以Debug的SWF
incremental: 增量编译
library-path: 添加类库
output: 输出SWF的文件名


#!/bin/sh

echo "------------------------------------"
echo "|| Building application..."
echo "------------------------------------"

mxmlc --debug=true --incremental=true --library-path+=xxx.swc --output=test.swf test.mxml

echo "------------------------------------"
echo "|| Done!"
echo "------------------------------------"


扩展VIM.增加文件保存自动编译功能.就是通过在文件保存的时候调用上面的 shell 脚本.
在~/.vimrc 添加如下代码.



function BuildFlex()
let fname = getcwd() . "/fxbuild.sh"
echo "Build script is " . fname
if executable( fname )
! ./build.sh
endif
endfunction


au BufWritePost *.mxml call BuildFlex()
au BufWritePost *.as call BuildFlex()



BuildFlex 函数用来执行 shell 脚本来编译Flex应用.
最后两行是Auto command, 在保存的时候调用BuildFlex函数.

这样, 在你保存的时候就可以自动编译了.

注意:
打开,新建文件都要在fxbuild.sh相同目录.
例如:
假如目录结构如下
- fxbuild.sh
- Main.mxml
- view
-LoginView.mxml
-ProductView.mxml
- events
- UserEvent.as
- ProductEvent.as

我们打开view目录下的文件要在fxbuild.sh所在目录执行

[color=red]vim view/LoginView.mxml[/color]

而不能进入到view目录执行

vim LoginView.mxml

新建文件也一样.

当你在VIM中通过 :w 命令保存文件的时候,你应该可以看到类似如下:

[img]http://nealmi.iteye.com/upload/attachment/54044/f06f4532-9311-362d-80d8-97a0de3506fe.png[/img]

--
It's Neal Mi.
I'm a dog chasing cars. I wouldn't know what to do if I caught one.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值