这两天用VIM开发Firefox插件,刚上手不太习惯,到后来简直是大爱,VIM很强大,任何都可以去配置,去扩展,然后实现自己想要的效果。另外,对于像我这样的命令行流和Notepad流(还没用VIM之前一直用记事本写程序),而且还喜欢键盘直接操作和不喜欢用鼠标,更是如鱼得水,而且,它很轻。但是VIM有一个缺点,就是学习曲线太陡,也就是说一开始你学的很慢,但是到最后就如遇得水了。
OK,我们可以去官方网站下一个gvim,然后安装即可。安装好之后,我们可以安装几个插件,插件我直接上传上来,效果图如下。

注意,VIM是文本编辑器,不是IDE,但是却能通过插件实现IDE的功能,也就是说,开发C/C++,JavaScript,C#,PHP都可以用这个,因为它不是一个IDE,只是文本编辑器,但是又是万能的IDE。废话不多说,直接上插件。
前两个安装到vim安装目录下vim72目录里即可,后面ctags是一个exe文件,放到你的全局变量的文件夹下即可。安装后打开VIM,输入wm初始化窗口。
VIM对我来说能提高效率的地方就是可以用键盘和命令完成所有操作,而我也觉得逐渐丢弃鼠标是一件很好的事情,因为鼠标有时候也很浪费时间。例如我们可以按Ctrl+W然后按方向键去切换窗口,按wm打开窗口和关闭窗口,在相应的函数的地方直接按Ctrl+]就可以找到定义的地方,是很快的。还有命令,非常非常的快。
废话说太多了,大家自己查什么是命令模式,输入模式,还有自己查应用吧,坚持半天,你就会发现这个很强大。
终于到来的正题:开发C/C++
OK。步入正题,我们如何开发一个C/C++应用程序,或者开发一个自定义的应用程序呢(例如我开发Firefox插件,我如何用VIM去开发呢?)
首先我们知道设置一个编译器的命令式:compiler,而我们要用到的是msvc,所以我们就需要输入:compiler msvc,如果是gcc的话就输入:compiler gcc,VIM的图形化版本已经给我们提供了选项,可以自己设置编译器,不过最好还是用命令,要不用VIM就没有任何意义了。
设置了编译器之后我们可以输入:make来编译,每一个编译器都在vim的compiler文件夹下有一个对应的vim命令,例如我们用msvc,可以看到就是msvc.vim,我们可以打开这个文件,发现make命令就是调用了nmake命令,于是我们只需要找nmake命令即可。我们可以设置环境变量如下,也可以设置到自己的命令行工作区中。
- set LIB=%LIB%;C:\Program Files\Microsoft Visual Studio 9.0\VC\lib;C:\Program Files\Microsoft SDKs\Windows\v6.0A\Lib
- set INCLUDE=%INCLUDE%;C:\Program Files\Microsoft Visual Studio 9.0\VC\include
- set path=%path%;C:\Program Files\Microsoft Visual Studio 9.0\VC\bin
其中LIB和INCLUDE是必备的,我就不说了,path是为了将nmake放到环境变量中,然后我们使用。(这里最好是命令行工作区和环境变量里都设置好)
设置好之后我们就可以在VIM开发程序了,但是用make还是不行,因为我们的nmake需要一个makefile文件,makefile文件需要指定很多东西,很麻烦,所以这里我就写了一个很通用的makefile文件,代码如下。
# 指定编译器
CPP = cl
# 编译参数,最新的VS2008好像不需要GX参数
CPPFLAGS = /EHSc /GX /MT /NODEFAULTLIB
# 输出文件
OUTPUT = Main.exe
# 要编译的文件(可用*及空格分隔多個文件)
SRC=*.cpp
# 替换原則: OBJ 文件= SRC 文件换成 .obj
OBJ=$(SRC:cpp=obj)
# 主要编译指令: 先编译所有的 OBJ, 然后建立 exe
all:$(OBJ) $(OUTPUT)
@echo ========== Complate ==========
# 连接指令
$(OUTPUT): $(OBJ)
@echo ========== Linking ==========
link.exe /out:$*.exe $(OBJ)
# 编译指令
.cpp.obj:
@echo ========== Compiling ==========
$(CPP) $(CPPFLAGS) -c $<
# 重建
rebuild:clean all
# 清除编译的代码和生成的临时性的东西
clean:
@echo ========== Clean ==========
del *.obj *.exe
@echo .
我们保存为makefile即可(无后缀名),然后我们就可以在命令行和VIM里面去开发C/C++应用程序了。
编译自己的程序应用
VIM令一个扩展不错的地方就在于我们可以编译自己的应用,例如很多IDE都不支持的应用,如Firefox插件,还有一些IDE不太好用的,如Python和Ruby,还有JavaScript。这个时候我们就可以自己写一个扩展去编译,例如我们看msvc的代码。
" Vim compiler file
" Compiler : Miscrosoft Visual C
" Maintainer : Bram Moolenaar <Bram@vim.org>
" Last Change: 2005 Nov 30
if exists("current_compiler")
finish
endif
let current_compiler = "msvc"
" The errorformat for MSVC is the default.
CompilerSet errorformat&
CompilerSet makeprg=nmake(这里可以换成其他的调用的程序)
我们可以看到,其实就是makeprg参数为nmake即可,这个时候,我们如果要编译Firefox插件,我们直接写一个exe文件,名字称为比如ffbuild,然后用ffbuild去处理即可,我们直接将CompilerSet makeprg=ffbild设置之后,然后编写一个ffbuild.exe放置到环境变量设置的文件夹内即可。
我们如果需要传参数的话,我们直接在make命令后加参数即可。
VIM很好很强大,现在我只接触到了九牛一毛而已,如果真的对VIM很感兴趣,我建议还是去国外的网站,直接看用户手册好了。