Become an Eclipse hotkey showoff

Tips for using the Eclipse IDE

The great thing about Eclipse is that it's so feature rich. If you can't find a feature, then either you just haven't looked hard enough or there's a plug-in that adds it. The worst thing about Eclipse is also that it's so feature rich. The toolbars are crowded, the menus are congested, and the configuration dialogs remind me of the Minotaur's labyrinth (although configuration is much better in version 3.1). Even experienced Eclipse programmers are slow and clumsy users. I've looked over countless colleagues' shoulders and blurted out "Control-Shift-T" (open type) when seeing them struggling to find a class in the Eclipse navigation pane. And with a small conscious time investment, you too can stop fumbling around in Eclipse and become a hotkey showoff.

Proficiency in Eclipse is not only good for your own productivity (I know, contractors paid by the hour tend to favor text editors), but also for your CV. Since Eclipse is surfacing on many Java job descriptions these days, it has become a good buzz word to have on your CV. I put it on mine between POJO (plain-old Java object) and POJI (plain-old Java interface). More and more companies are moving to Eclipse since it's free and generally accepted by programmers (except for the few diehard IntelliJ and Emacs enthusiasts).

So that your CV is not all lies and/or to help increase your programming productivity, in this article, I give you a few Eclipse productivity tips. Note: If you're totally new to Eclipse and looking for a beginner's tutorial, please see Resources.

Eclipse features with hotkey combinations

Using Eclipse with hotkey combinations can be like playing a video game. Mortal Combat particularly comes to mind. To be good at Mortal Combat, you must memorize a slew of game-pad sequences. For example, to perform the Sub-Zero Skeleton Rip on your enemy, you must do a Back, Forward, Forward, Down, X-button on the game control pad. Well, Eclipse is no different. The joystick in this case is any combination of Control, Alt, Shift, letters, numbers, and F-keys.

Let's go through my favorites in order of most frequently used. (Note: these are tested in Eclipse version 3.02 and up.)

  1. Control-Shift-T: Open type. Forget manually navigating through the source tree unless you're procrastinating.
  2. Control-Shift-R: Open resource (looks for more than just Java files).

    A tip to go along with these first two combinations is in the Navigator view, accessed from the yellow double-arrowed Link With Editor icon. This will make the file you open appear in the navigator hierarchy, which is often good orientation information. Turn it off if things get too slow.

  3. F3: Open declaration. Alternatively, you can click on the Declaration tab (in the Java perspective, go to Window, then Show View, then Declaration). This key shows entire method declarations in the declaration pane when you click on a method call in the code.
  4. Alt-left arrow: Go back in navigation history. Works like a Web browser's back button and comes in handy after jumping around using F3.
  5. Alt-right arrow: Go forward.
  6. Control-Q: Go to last edit location. This key combination is also handy after you've been jumping around the code, especially if you've drilled down too deeply and have forgotten what you were doing.
  7. Control-Shift-G: Find references in workspace. Prerequisite to most refactors. For methods, this key combination is basically the opposite of F3, allowing you to navigate backwards up a method stack to find a method's callers. A feature related to this is turning on occurrence marking. Go to Window, then Preferences, then Java, then Editor, then Mark Occurrences and select a few checkbox options. This highlights all occurrences in the code when you click an element designated for marking. I personally only use Mark Local Variables. Beware: Enabling too many highlights can slow Eclipse.
  8. Control-Shift-F: Reformat code (according to code style settings). Our team agreed on a coding style, and we posted the Eclipse code style-rules files to our wiki. To do that, we sat together in Eclipse and went to Window, then Preferences, then Java, then Code Style, and configured Code Formatter, Code Templates, and Organize Imports. We used the Export function in each of these screens to generate the config files. We put these on the wiki and everyone imported them into their Eclipse.
  9. Control-O: Quick outline. Within the editor, this key combination allows you to jump to a method or attribute by typing a few letters of the name.
  10. Control-/: Comment/uncomment a line. Can also work on many lines at a time.
  11. Control-Alt-down arrow: Copy highlighted line(s).
  12. Alt-down arrow: Move line(s) down. Alt-up arrow works as well

Other hotkeys are listed on the menus. You can view a list of all keys by pressing Control-Shift-L (since version 3.1). Press Control-Shift-L a second time and it will take you into the Keys Preferences dialog where you can customize the key bindings. I welcome your Eclipse tips in the Talkback section.

Extra Eclipse nuggets

I'll conclude with a few related tips that come to mind:

Lock the Console window: In the Console view (Window, then Show View, then Other, then Basic, then Console), try the scroll lock icon to keep console output from slipping out of view.

Use the Ant view: In my Java or Debug perspective, I like to have the Ant view also showing so I can quickly run Ant tasks. Find this at Window, then Show View, then Other, then Ant. Then just place the view in a corner of the screen. Add build.xml files to it using the Add Buildfiles icon. Version 3.1 even has support for debugging Ant scripts!

Auto-iterate over a collection: for + Control-Space: If you didn't know already, Control-Space is auto completion. In Eclipse, you can auto-complete constructs too. In the scope of an array or a collection, try typing for (without a trailing space) and then pressing Control-Space. Eclipse will ask you which collection you'd like to iterate over and write the loop code for you!

Use the Hierarchical layout: The default layout (Flat) in the Package Explorer view distracts me with its full package names in a navigation tree. I like the package/file system view of my sources much better, which is called the Hierarchical layout in Eclipse. Switch to this in the Package Explorer view by clicking on the black down-arrow icon, then select Layout, then Hierarchical.

View multiple files at once: You can see more than one file at the same time by dragging a nonactive tabified editor to the bottom or side scroll bar of the open/active editor. That's the best way I can describe this nugget.

Open two instances of Eclipse simultaneously: To merge my changes from one CVS branch to another, I like to open two instances of Eclipse in different workspaces at the same time. Then I can see all the changes I've made by comparing them with the latest version in CVS (right click on the project, then select Compare With, then Latest from HEAD) and apply each change to another CVS branch. The easiest way to launch multiple instances of Eclipse is to use the Eclipse Launcher.

The Implementors plug-in: Add the possibility of jumping to the implementation of an interface. If you're a dependency injection fan or are just working with well-written interface-based code, you'll need this plug-in to speed code navigation. You'll find it at SourceForge.

Like the band Modest Mouse sings in their song "Out of Gas," "Opinions were like kittens I was giving them away," these are my Eclipse kittens. Please give them a good home.

Sam Brodkin is is a freelance Java technologist living in Rotterdam, the Netherlands. Brodkin's professional career began eight years ago at Sun Microsystems, where he worked on the Sun Java System Web Server. His current focus and expertise lie in J2EE software development with special attention to maintainability and beautiful coding. Brodkin was an avid IntelliJ user for many years, but was forced, kicking, screaming, and complaining, to switch to Eclipse on his current project. Though never caught, he has been suspected of playing video games at work.

Learn more about this topic