The primary goal of eclim is to bring Eclipse functionality to the Vim editor. The initial goal was to provide Eclipse’s java functionality in vim, but support for various other languages (c/c++, php, python, css, html, xml, etc.) have been added and several more are planned.
Eclim is less of an application and more of an integration of two great projects. The first, Vim, is arguably one of the best text editors in existence. The second, Eclipse, provides many great tools for development in various languages. Each provides many features that can increase developer productivity, but both still leave something to be desired. Vim lacks native Java support and many of the advanced features available in Eclipse. Eclipse, on the other hand, still requires the use of the mouse for many things, and when compared to Vim, provides a less than ideal interface for editing text.
That is where eclim comes into play. Instead of trying to write an IDE in Vim or a Vim editor in Eclipse, eclim provides an Eclipse plug-in that exposes Eclipse features through a server interface, and a set of Vim plug-ins that communicate with Eclipse over that interface. This functionality can be leveraged in three primary ways, as illustrated below.
- The first scenario is for those for which vim is their primary editing interface. In this scenario you run a headless instance of eclipse which all vim instances can then communicate with to provide the various eclipse features.
- The second scenario is for those who prefer using vim as their main interface, but frequently end up jumping back to eclipse for any features not provided by eclim. In this case you can run the eclim server inside of the eclipse gui and then interact with it via external vim instances just like the first scenario.
- The last scenario is for those who wish to use the eclipse interface full time, but want to use gvim as an embedded eclipse editor. Just like the previous use case, the eclim server is run inside of the eclipse gui and the embedded gvim will interact with it just like external vim instances would.