Vim (or Emacs varying on religion) will always be my first answer to this question, over any point-and-click IDE.
As they write in The Pragmatic Programmer
Choose an editor, know it thoroughly, and use it for all editing tasks. [...] The editor will be an extension of your hand; the keys will sing as they slice their way through text and thought. That's our goal.
Make sure that the editor you choose is available on all platforms you use.
Vim is configurable, extensible, programmable and can be turned into an IDE with all the regular features. Lately I've been using Eclim to "bring Eclipse functionality to the Vim editor" (projects, better java support etc.) making it a complete platform with advanced IDE features.