虽然eclim很强悍,但由于它并没有集成任何的java debug功能,因此用vim+eclim的组合开发java仍然显得力不从心。
我最终决定回到eclipse的怀抱中。同时,出于对逐渐丧失vim武功的担忧,我决定使用eclipse+viplugin的组合:编辑代码使用vim的指法,其它事情全部交给eclipse。
这样用了一段时间,节奏还不错,而且eclipse一些强大的功能让我刮目相看,并让我开始反思之前对待编辑器与IDE的态度。
IDE里面确实蕴含了比普通文本编辑器高级很多的技术。IDE会对程序文本进行真正的解析,之后才开始分析里面的结构。它们的“跳转到定义”一般都是很精确的跳转,而不是像文本编辑器那样瞎猜。
此外,IDE代码补全的精准度与速度都远远超过了vim的任何插件;IDE对于java的接口与实现、类与类的继承关系、反射等稍高级的功能都支持得非常好。
vim在这些方面确实做得不好,也不可能做得好。
这样说来,vim的唯一优势就只是它那极其符合人体工程学的指法带来的行云流水般的操作快感了。
不像php, python等所见即所得的解释性语言,java这种编译型的语言,若通过打日志来调试,那么每加一条调试用的日志代码,就要重新编译一次,实在是太低效了。而eclipse的调试功能确实是太强大了,调试过程中每个变量的值也都是清清楚楚。
很多长期使用vim/emacs的人都容易对IDE抱有或多或少的偏见。没错,开发shell, php, python, ruby这样的解释性语言,用vim/emacs确实非常合适,也能满足需求,相比之下用IDE开发它们就会显得有些笨拙。
但是最近开发java的经历让我逐渐冷静了下来,开始仔细地反思这件事情。就像没有万能的编程语言一样,也没有万能的编辑器。vim很强悍,emacs也很厉害,但是它俩在面对java这样的语言时,确实无法跟eclipse相提并论。
eclipse能让java程序员的头脑从琐碎的细节里面解脱出来,所以我们能够更加专注于程序本身的语义和算法,这样我们能写出更加优美和可靠的程序。这就是我用eclipse写java程序的时候相对于vim的感觉。我感觉到自己能够看见程序背后所表现的模型,而不只是看到程序的文本和细节。
最后我想说的是,eclipse这件事情对我触动很大。我开始渐渐认可这样的观点:程序员对诸如编程语言、编辑器这类事物产生宗教般的信仰或偏见确实是没有必要的。我们应该更加多元化地发展,学会尊重别的技术和别的事物,学会去发现、认可每件技术的优势与劣势。
天下武功,确实没有高低之分;只有习武之人,才有强弱之别。