I want to recommend the excellent Vim editor. Although the learning curve is quite steep, once you have the basics under your belt, it really lends itself to efficient and effective code authoring.
Also, the extensibility of the program means you can do so much with very few commands. For instance, I have mapped the expression:
:let f=expand("%")|vnew|execute '.!ruby "' . f . '"'
to the user command:
This function has three parts, the first part assigns a temporary variable, f, the value of the filename. The vnew command opens a split window for the output of the third part which executes (.! means an external command) the ruby interpreter, spitting the output into the new buffer. Neat.