I recently started a new assignment, where the predominant IDE in use is IntelliJ IDEA. Now, I am quite an Eclipse user having exploited its open source powers for the most part of my career. There are many reasons for this, the most obvious one being that is has been the de facto IDE for most projects I’ve been involved in. There have been a few occasions where I had the chance to try out, or switch to another IDE but I’ve never been forced to do it. And that’s why I’ve always gone back to Eclipse. The problem is that you get used to your IDE. It IS the main tool we developers use in our daily struggles to bring fluffy features into working software… You don’t want to start looking for a type hierarchy for five minutes, or an extract method refactor for another three, in the middle of your zen coding flow. I am one of those that try to learn and use as many of the available keyboard shortcuts as possible. First, it helps avoid hand and arm strain if I can avoid using the mouse, and second it minimizes the delay between having an idea and producing code. If I have to go looking in menus, or lift my hand for a split second, I percieve it as a mini-impediment in my thought process.
So, back to my new assignment, and IDEA. This time, the use of IDE was more of a requirement. I could still use Eclipse if I wanted to but I thought that this time I’d give it a real shot. At first, I tried using the Eclipse keyboard mapping available in IDEA, but I found it lacking some of my key (pun!) bindings. Instead I opted for the default bindings, used a keyboard chart on a separate screen and every time I got stuck fumbling at Ctrl-O or something similar, I made time for finding the exact equivalent. To my surprise, this learning process didn’t take too long, now that I had allowed myself to stop and really look things up.
I’m not going through a complete comparison of the two IDEs, but here a few initial observations. The IDEA Maven features are very neat, and is great for our profile-based build settings. Subversion seems to be a little bit lacking though, and I’d prefer Eclipse on that point. IDEA makes much more use of colors and markers (by default), which is actually a bad thing since I have impaired color vision. The Eclipse formatter seems to work more like I want it to, while the IDEA one doesn’t interfer as much with your line breaks. Eclipse templates such as “foreach” work better. Finally, you don’t really save things in IDEA as you might do in Eclipse, things are automagically saved and built.
Below is a short list of my most commonly used bindings, and the rough equivalents in both IDEs:
|Ctrl-G||Ctrl-L||Go to line|
|Ctrl-Shift-Backspace||Ctrl-Q||Go to last edit|
|Ctrl-Alt-B||(Ctrl-T->choose)||Go to implementation. Not sure about the Eclipse one here, but I usually open type hierarchy and choose implementation|
|Ctrl-B||F3||Go to interface/implementation|
|Ctrl-Space||Ctrl-Space||Note that you must use Ctrl-P (in IDEA) to see parameters of a method call you are making, e.g. method.(/*what args exist?*/)|
|Ctrl-H||F4/Ctrl-T||Type hierarchy (tabbed vs inlined)|
|Ctrl-F12||Ctrl-O||Method list (prefer the Eclipse one)|