I have been programming python in much of my spare time, largely inspired by http://www.swc.scipy.org/. As a result I have started to use subversion, and have become increasingly interested in software engineering. I now write unit tests for much of my code, and have felt a tremendous increase in quality and enjoyment in my everyday coding!
Recently I also tried using WingIDE which is an amazing product. I wish it was more straitforward to define a keyboard alias (such as Control-[ short for Escape). I can only figure out how to use keyboard macro’s for built in functions — which is more than I need . . .
All this brings me to the topic of this post, I want WingIDE like functionality in vim. This is mostly motivated by poverty, I find the Personal addition of Wing to be missing must have features (source assistant, and svn integration), and Professional is way out of my budget. This made me think more about vim, which is supposedly highly customizable, people even argue it is already ready to be a modern IDE. I find said post a little short on details, and I simply am not will to use the command line debugger after having tasted the sweetness of a proper integrated debugging experience.
With this in mind I am now ready to collect the plugins and know-how to recreate the features of Wing that I find amazing. The top ones that come to mind are:
- Symbolic debugging!
- Subversion integration.
- Source assistant (this shows the documentation for each function, object, variable, etc . . . it is really nice).
- Smart completion using tab (I will want to use Ctrl-n, Ctrl-p to navigate the pop-up, which was something I could figure out how to do in Wing). This means that I will have to figure out how to get vim to only tab when it makes sense (that is if I press tab twice, it will do nothing, as indentation is only legal for block structure). I like this secondary feature greatly, I remember similar functionality from emacs, so it should be doable.
I am sure there are others that I will notice, but if I have this I will be very, very happy. This might mean I will have to learn to script vim with python, which will be interesting itself. I will write about this as I make progress. Ultimately it will be nice to collect plugins, tips etc into one package that is documented and easy to install that gives some IDE feeling to vim (and not just say it is possible, which is what I mostly see).
Note: I have seen pida, and I find it poorly documented, and outside of subversion integration it covers IDE features I care less about. That being said, it might serve as a basis for the work I envision. Though I worry it solves a more general problem than I am interested in. An IDE platform seems overkill to me, I would rather have vim, and only vim give the features.