If you need to learn an editor for programming, make it emacs. Why?
If I need to make an rpm and I open emacs, and tell it to find a file which happens to end with the extension .spec
WHAM! A skeleton file appears with all the tags and macros already filled in with text color-coded.
And if I want to submit to my favorite version control,
esc-x load-library mercurial (or git or svn) puts emacs in the mood to drop down the right commands from its version control menu or to recognize the commands like ctrl-x v v to check in or out code from a repository, and to do everything one can do with a repository.
Optic fatigue occurs when one stares at the same colors for too long. I use konsole for terminal windows and change the colors frequently. With emacs not in a terminal window, I have more than 50 color themes to choose from, some of them comfortably low contrast, like Alice Blue, and some eye-stabbing like euphoria for when I need to stay awake.
I code a lot of python. When I need to test some coding for syntax, I don't leave emacs. I start the Python interpreter, and the screen splits, then I save my python file and import it to the interpreter to check syntax--an error will be readily apparent, and I can fix it immediatelty. When I am done, I can switch to an unsplit window and continue work.
Some folk say use vi, and I do use it on some older SUN systems... I have a regular rhythm--hit i and insert a char then hit escape and hit i again and type the next char... (barely better than ed, but it is what's available).
Usually my first install on any new system is zile. GNU zile is emacs without all the window dressing like browsing and email and irc and colors, just a C-coded binary that works in about 100k and uses emacs keycodes.
If emacs were as onerous as most try to make it sound, it should be amazing that so many folk were gluttons for self-flagellation by making emacs-like editors. MINCE Is Not Complete Emacs, the 31 flavors of micro-emacs, Jed, Zile, Joe and an oddball python coding or two plus web-based YMacs, are all emacsen. peppy http://peppy.flipturn.org/ is a different take, using emacs keycodes and coded in Python and it will edit nigh on everything, including chunks of binary data, and it has dozens of modes for programming languages, but its keycoding paradigm is emacsen.
YEah, emacs is worth learning, and so is vi. Of the rest, maybe Eclipse is as useful, if you can stand the hoggishness of its many inserts. And if you need something REALLY small, lightweight, and fast, check out e3. The x86 version is written in assembler and serves many keycode sets including Emacs and Vi. https://sites.google.com/site/e3editor/
And oh yes, I open emacs, type 17 pages, and BLAP! Lightning strikes and my power goes out. When power is restored, I look at the work and discover I lost the last 7 characters I typed.... And if I decide to follow the "recover crashed session" procedure, I can reduce it to 2 lost.
Python code doesn't believe in indentation, it DEPENDS on them. Emacs is aware of that and makes sure your indentation is proper. But if you decide to remove an "if" you will have a whole region in the wrong indentation status. With emacs you fix that by:
ctrl-space and arrow keys to highlight the region
ctrl-c < to outdent all the highlighted code. (ctrl-c > indents it again, correctly).
I think I have used more than 60 editors, and still the one I come back to is emacs, not because I can get function code stubs in C or proper indentation or color-coding, but because I can customize it beyond its already awesome capabilities. Richard Stallman's brainchild was adapted by so many...