VIM大作战之C++简易集成编译环境(Windows篇)

一切都要从这篇文章说起

Vim 实在是精致独特得有点像个林妹妹。但谁要是希望家里也有个林妹妹,光把自家丫头照着绣像打扮打扮是不行的,必须从零开始养成一个。而且就算真能养出来个“天上掉下来”一般的可人儿,管家婆的位置仍然没她的份。

——钗黛双收:若你也同Vim难割舍,却又看Emacs情切切

 

那时候刚工作不久,有一次去一个搞嵌入式的同事工位上讨论一个bug,只见他操作一个界面简洁的文本编辑器,但是这个编译器似乎不简单,有文本高亮,有自动补全,还可以子窗口嵌套,更夸张的是,这个同事以打字的速度敲着键盘,伴随着的是界面、光标刷刷的跳。在我还没搞明白发生了什么的时候,这个同事突然停下来,指着屏幕,告诉我他搞清楚了bug原因……

这就是Vim给我的第一印象,赤裸裸的逼格。

 

废话不多讲,以下是我想跟大家分享的vim比较有意思的东西,也是抛砖引玉吧。

vim和gvim

这里推荐KM上一篇很好的介绍Vim的文章:

http://km.oa.com/group/16841/articles/show/199187

linux的童鞋对VI或者VIM一点也不会陌生,因为这是标配。编辑代码,配置文件都得靠它。而在Windows下VIM确实显得有些非主流,因为选择比较多加上Vim奇葩的上手曲线。

 

Vim主要分两种,一个是在命令行或者控制台的vim,另外一个是带图形界面的gvim。这两者其实操作起来体验差不多,因为Vim下鼠标几乎无用……,不过Windows下gvim用起来还是舒服一些。

 

 

 

 

能做什么

一句话,就是把利用VC编译环境集成到Vim当中,这样可以在Vim中编辑,修改,运行一个简单的cpp程序。直接上图吧。

最大的好处就是轻量级,比起VS来讲,轻便快捷得多。特别是在写一段测试代码,或者试用一个不熟悉的API的时候。

不知道有多少同学跟我干过跟我一样的事情:

  • gvim main.cpp,写好,保存;
  • 打开VS的命令提示控制台;
  • cl.exe main.cpp;
  • 运行exe;
  • 如果编译,或者运行有问题,打开main.cpp,以上步骤重新来一遍。

 

现在这只是过去式了,F5,编译运行一键搞定。如果编译错误,也会把错误信息打出来。

这里给大家提供一个思路,根据自己的需要,发挥自己的想象力,把一些日常工作集成到Vim,或者利用Vim来做,当然前提是能够提高效率(提高逼格也行)。

PS:Vim有很强大的脚本,插件的支持,足够你折腾。

插件安装

安装gvim

Vim的最新版本可以在Vim官网上下载;

下载CPPBuild.zip(附件)

1)         解压缩CPPBuild.zip到本地

2)         修改vim的配置文件_vimrc,添加filetype plugin indent on,作用是打开vim插件功能。_vimrc的路径:[gvim安装目录]\_vimrc

3)         拷贝CPPBuild.vim到[gvim安装目录] vimfilesplugin

4)         根据当前系统,修改CPPBuild.vim,两个地方需要修改,一个是工作目录,另外一个是VC和Windows SDK的路径

5)         将剩下的文件拷贝到步骤4中设置的工作目录当中

6)         关闭所有gvim,重新打开任意一个新的gvim(目的是让CPPBuild.vim的修改生效),快捷键[Ctrl-K][Ctrl-P],此时gvim会打开一个新的标签页

7)         在步骤6打开的标签页下,快捷键[Ctrl-K][Ctrl-I]打开预编译头文件(可以根据自己需要修改),快捷键[F5],编译预编译头文件和CPPBuild.exe

8)         回到步骤6打开的标签页,[F5]编译运行,打完收工。

 

注:步骤7其实就是编译一次预编译头文件,这样做可以提高以后的编译效率。只需要做一次,以后可以跳过这个步骤。

CPPBuild

Vim插件CPPBuild的组成:

CPPBuild.vim:插件脚本,负责在Vim中绑定快捷键,实现CPP编译的主要逻辑;

CPPBuild.cpp:会被编译成CPPBuild.exe,实现无窗口的情况下调用cl.exe,编译cpp文件(直接调用会弹出一个控制台黑框);

vim_pch.h:预编译头文件,负责生成.pch文件;

vim_pch.cpp:预编译cpp文件;

template.cpp:模板cpp文件,包含main入口函数,拷贝这个文件的内容来生成临时的main.cpp;

CPPBuild的工作流程图如下:

 代码下载:http://pan.baidu.com/s/1sj7BXd7

原文地址:https://www.cnblogs.com/quark/p/3977629.html