公司的开发环境比较自由,没有要求使用统一软件和配置之类的,我选 择了vim.

从前有个文本编辑器……

它叫vi,读作/ˈviːˈaɪ/,最初的版本在1976年发布……那是龙、骑士 和魔法师的年代,一群住在山洞里的术士召唤了一只叫Unix的怪物, 各种混乱和灾难也随之而生;而vi,也几乎是和这只怪物同时诞生的, 人们传说它有着不可思议的力量,但凡亲眼见过它第一面的人,要么被 吓得魂飞魄散,要么获得魔力成为了强大的魔法师……

好吧我编不下去了。

我想说的其实是vim. 虽然vim算是vi的克隆版,但是除了作者不同外, 它们两个也可以算是两个完全不同的编辑器了,只不过刚好vim带了一个 兼容vi的工作模式而已。vim的大部分常用功能都是vi根本没有的,vim 比vi更现代化、更实用。vi只是单纯的编辑工具,而把vim叫做文本编辑 器的话就有点冒犯vim的意思了……

想学vi的同学,放弃吧,那东西是将近40年前写出来的;要学就去学vim, 并且随时确定一下自己真的是在学vim……

作为IDE的神话

网上盛传各种将vim搭建成IDE的方法,重点不外乎两个:

  1. 整合编译和调试功能
  2. 整合自动补全功能

结果,用vim写了一段时间的代码之后,我发现这两个功能其实很鸡肋:vim的 自动补全一直是短板,无论插件写得多好,补全的质量都显得弱弱的,从 长长的补全列表里选一项还不如直接到定义里找来得快;而编译功能很好 办,加一个自己的命令或者设一下compiler和makeprg一般就ok;至于调 试,我只能说实在不是vim适合干的事情,用tmux在旁边开个窗口干你想 干的事情还比较靠谱……所以,网上的各种IDE配置方法也很鸡肋。

其实真正重要的特性是项目管理文件组织,因为同时在改的文 件多了以后,每次找一个文件都要敲一长串路径是很可怕的事情,到最后 你会发现自己一直在敲路径和文件名……

针对这个问题,我最初用的是project插件,结果发现目录结构清楚 是清楚,但是有多个项目的时候找文件很悲剧,特别是在同一个代码库的 不同branch里,只能用/之类的查找命令,一不小心就窜到别的项目去 了;更悲剧的是,project的窗口用鼠标操作比键盘操作还方便,在命令 行下情何以堪啊……后来想试一下声名远播的NerdTree,看见琳琅满 目的选项我就直接放弃了……

最后机缘巧合之下我发现了CtrlP这个好东西,一装上就马上感觉被 它拯救了,而且突然明白,目录结构神马的都是浮云;CtrlP有以下几个 很重要的特性:

  1. 方便,窗口会自动切换,只要按C-p再直接输入文件名就可以开始搜索;
  2. 聪明,文件名不是完全匹配,而是可以跳过各种字符,例如找 some_long_file_name.c可以直接输入somefilec
  3. 搜索顶层路径根据VCS软件的信息自动确定,“项目”概念和VCS代码库 对应,不需要手工配置和干预。

基本上这是个安装后可以直接开始用的傻瓜插件,而且用起来异常顺手, 绝对是居家旅行必备工具——这才是写代码的软件应该有的功能!别忙着又 编译又调试神马的,拜托先把写代码这个最基本的功能干好了再说……

所以呀,用vim当IDE只是个神话,看不见摸不着;vim最擅长的还是编辑 文字,编译调试什么的让专业的make/编译器/调试器去干吧,最多封装一 层薄薄的命令让自己拍起来方便点,大家都"Do one thing and do it well"是最好的。

字体和颜色

从以前到现在我都迷恋深色背景的配色主题,因为浅色的背景看久了晃 瞎眼睛……以前用的是oceandeep,后来觉得某些高亮的配色太暗了, 换成了现在用的wombat,在gvim下显示的颜色对比度刚好,不会 太刺眼又不会太模糊;不过无论oceandeep还是wombat,在终端下对比 度都太强了,所以终端下的vim用的是default配色。

对于字体,我以前是很无所谓的,觉得只要是等宽的就可以;但是在试 过Inconsolata之后,就开始觉得其他编辑器和等宽字体都是在耍 流氓——特别是不区分0(零)和O(欧)的字体。

我的.vimrc

附上我自己的.vimrc文件,另外我还装了numberssnipmate, 还挺好用的,强烈推荐~