More Things I Wish I'd Known (Open Source Development) Part 2 VIM
I avoided three things early on which I wish I had just gone ahead with at the time.
- Version Control with GIT
- Learning VIM (a very powerful text editor) Along with command line orientation.
VIM is known as a very sophisticated and complicated text editor for programmers. It's fearsome reputation for having a long learning curve led me to look for any other simple tool. Having been away from coding since the days when I used a 1200 baud hardcopy terminal, (a huge and welcome improvement from the 80 Column punch cards) except for some VB on Windows, I naturally began my search for Integrated Development tools that would do my code for me (like Visual Studio). Eclipse is a comprehensive Integrated Development Environment (IDE) similar in scale and features to Visual studio, but Open Source and free from IBM. It is a great tool with many great features, but it has its' own steep learning curve. Google App-engine which was one of my early explorations, requires Eclipse and I use an open source report writer Birt which is based on Eclipse, further, the Google development environment for Android is Eclipse based. So Eclipse is an important tool to have in the toolbox. Pydev, its' Python tool set is one of the best available.
Sometimes you just don't want to fire up Eclipse to change a few lines in a file or if you are doing editing on a server you may not have Eclipse available. It is really important to have knowledge of a good text editor that will work across all platforms.
I First thought of Notepad then Wordpad then Notepad ++ (an excellent product). At Pycon (the Interanational Python gathering) I realized that all the cool kids were using VIM (ok maybe a few were using Textmate or Emacs) but no one was using Notepad++, why? Well VIM is quicker and its earlier cousin VI is installed by default on virtually all systems (save windows). VIM has a great Windows version but it must be downloaded and installed.
Vim is a mode based editor. This means that it has keyboard commands for most editing operations. The recommendation is that you never use the mouse, and you never or rarely use insert mode, which makes Vim behave like those less efficient editors you are more used to. VIM feels really clunky and foreign at first. If you stick with it you will soon be going "oh wow that is cool!" and you too can become one of the cool kids! As well you will feel more confident every time you face the Terminal command line on the server. Not to mention that you will gain a better and better understanding of differing file formats and all the "helpful" invisible characters that Microsoft products hide in files, which in turn cause what IBM used to call "unpredictable results". I wish I had just started learning VIM earlier, it has so many features for coding, it is just shy of being a full Integrated development environment (IDE), and it has the benefit of being everywhere, so it is about the closest thing you can find to a universal tool.
My purpose here is just to give the recommendation for VIM, smart people have produced some great resources for learning VIM. Try these for starters.
Derek Wyatt has a very good set of Videos including this intro to VIM
Bram Moolenaar The originator of Vim has a very good intro
NET-Tuts put this list of 25 resources together