把vim配置成Unity3D开发环境

时间:2023-01-18 17:19:15

使用vim来编译项目

 

环境配置

1.makeprg变量,可以用它来设置编译的命令,简单的命令赋值给它既可,用set语法

2.执行:make命令就能实现编译命令的执行。

3.更好的选择是使用makefile,只要你编写了makefile,不用配置vim就能通过:make命令找到makefile并执行。

 

使用errorformat来过滤编译错误生成quickfix

 

 set efm+=%f(%l\\,%c):\ error\ %m

注意语法的细节,逗号需要两个反斜杠来转义,空格需要反斜杠转义,efm的语法类似c语言的scanf,

对于固定格式的单行报错信息还算简单。

 

这里包含了编译所需要的一些链接库,创建链接,或者复制过来,否则编译时就会报错缺少相关库程序。

sudo ln -s /Applications/Unity/MonoDevelop.app/Contents/Frameworks/Mono.framework /Library/Frameworks/Mono.framework

 

 

这里包含了所有mdtool的工具程序,添加到路径后执行命令行编译才能找到相关执行程序,例如mono.exe本身

export PATH="/Applications/Unity/MonoDevelop.app/Contents/Frameworks/Mono.framework/Commands:$PATH"

 

 

makefile:

 

sln:

/Applications/Unity/MonoDevelop.app/Contents/MacOS/mdtool \

-v build "--configuration:Debug|osx" \

$$CLIENT_PATH/product/build/hex3d-april-client.sln

 

注意:makefile中对shell变量的引用需要$$而不是原来的$,为啥,我的理解是这就是设计的缺陷

导致不得不使用这种蹩脚的方式来补救

 

makefile可以理解为支持额外依赖关系定义的shell脚本,编译动作的执行是支持shell内建和外部命令的,例如

我就用 | grep error来过滤了冗余的信息,减少了编译的log输出,帮quickfix过滤一部分内容。

 

makefile其实也很好理解,就是调用了monodevelop的build机制,mdtool是一个脚本,进行编译配置和执行编译,选项的意思也很直接,调试模式编译osx平台目标,后面是项目的solution文件位置,之所以使用$CLIENT_PATH是因为项目是纳入svn版本管理的,每个人的仓库位置不同,所以各自定义环境变量后,所有的配置脚本就可以保持统一就能执行了。

 

 

 

编译完成后生成quick fix,可以使用:cw来打开错误列表。

:cn跳转到下一个, :cp跳转到上一个,不需查看面板,依次遍历改错,即可实现编译错误的遍历解决。

 

:cp   跳到上一个错误 ( :help :cp )      

:cn   跳到下一个错误 ( :help :cn )        

:cl   列出所有错误 ( :help :cl )          

vim可以同时记住最新的10个错误列表,你还可以根据以下命令查看本次错误列表、以及前几次的错误列表,进行比较差错

:cl    列出所有错误 ( :help :cl )          

:cw    如果有错误列表,则打开quickfix窗口 ( :help :cw )          

:col   到前一个旧的错误列表 ( :help :col )         

:cnew  到后一个较新的错误列表 ( :help :cnew )     

 

自定义脚本

当前项目的编译目标dll复制脚本在vim下不能运行,

TODO:

尝试让makefile完成编译结果的复制工作,

或者建立机制手动调用复制脚本

或者在mono中重新编译,因为编译成功后一定会调试代码,在mono中重新编译耗时很短,也算是二次检查了

 

vimpwd变化问题

每当切换buffer时,vim的pwd就会变成buffer文件所在的目录,