If you want a flexible, powerful, extensible programming text editor that is lightning fast and you don't mind switching to other windows for code checking, debugging, and deployment, then look no farther than Sublime Text.
For programmers coming from other editors, Sublime Text supports TextMate bundles (excluding commands) and Vi/Vim emulation. The unofficial Sublime Text documentation makes disparaging and incorrect remarks about emacs users -- me, for example -- but I'll overlook them. Why does the unofficial Sublime Text documentation even exist? For one thing, the official documentation is less than complete -- much less.
When I said "nearly instant navigation" earlier I meant it. For example, to jump from the current location on the screen to the definition of
getResponseHeader in ajax.js, I can type
Command-P on a Mac or
Ctrl-P on a PC, then
aj to open a transient view into ajax.js, then
Enter to open a tab with
getResponseHeader selected. Sublime Text is able to keep up with my typing. It feels as responsive as some of the best old DOS editors such as Brief and Kedit.
Once I've selected
getResponseHeader, I can find all usages of the function in context by typing
Shift-Command-F on a Mac or
Shift-Ctrl-F on a PC, then
Enter. A new tab will show me the search results with the search term boxed in each five-line snippet. Double-clicking on boxed text brings up the full file context in a new tab.
Clicking on a file name in the left-hand Folders sidebar brings up a transient tab showing the file's contents. Clicking on a different file replaces that tab. Here again, Sublime Text is able to keep up with my typing and clicking. Similarly, the reduced-size navigation on the top right of the page lets me move within a file nearly instantly, without the overhead of scrolling. I wish Microsoft Word were as responsive.
Multiple selections and column selections make quick work of the sorts of annoying edits that used to require regular expressions. Do you need to turn a list of words into a JSON structure where each word is surrounded by double quotes and each quoted word is separated from the next by a comma? It takes about eight keystrokes in Sublime Text, no matter how many words you have in the list.
On my Windows development box, I use two wide monitors. On my MacBook, I use the Retina display plus a Thunderbolt display. Unless I'm editing on one display and debugging on the other, I usually want to see a lot of different source files and different views into source files simultaneously. Sublime Text supports multiple windows, split windows, multiple workspaces per project, multiple views, and multiple panes containing views. It's fairly simple to use all my screen real estate when I want to, and to consolidate when I need to make space for debugging and testing.
You can customize everything about Sublime Text: the color scheme, text font, the global key bindings, the tab stops, the file-specific key bindings and snippets, and even the syntax highlighting rules. Preferences are encoded as JSON files. Language-specific definitions are XML preferences files. There is an active community around Sublime Text that creates and maintains Sublime Text packages and plug-ins. Many features that I initially thought Sublime Text lacked -- including JSLint and JSHint interfaces, JsFormat, JsMinify, PrettyJSON, and Git support -- turn out to be available through the community, using the Package Installer.
One of the reasons for Sublime Text's great performance is that it is tightly coded. Another reason is that Sublime Text is not an IDE, and it doesn't need the bookkeeping overhead of an IDE.
From a developer's viewpoint, this is a tricky trade-off. If you're in a tight, test-driven, "red, green, refactor" development loop, then an IDE that is set up to edit, test, refactor, and track code coverage will help you the most. If you're doing code reviews or major edits, on the other hand, you'll want the fastest, most efficient editor you can find, and that editor might well be Sublime Text.