Naturally, there is a good discussion about editor power in the [SoftPanorama]
Another good discussion is in ESR's writings on Unix: http://www.catb.org/~esr/writings/taoup/html/ch13s03.html
Among the most powerful editors, I would elect the following:
To be a high powered editor, you have to have the following features (in my opinion):
Of course other people have other opinions, and one of those is that
an editor with all the features above would be considered bloated. 'High power'
should be interpreted in context, especially in terms of code size. If you
posit a 'lean and mean' editor (say no more than 32K, pref 16K or less) a
set of criteria might be:
- If text-based:
- command language which includes conditionals, looping etc
- orthogonal command language which is easy to learn but still powerful
- can be used in batch mode to process text (eg like a 'sed' or 'awk' filter)
- does not make assumptions about text, i.e. full 8-bit clean, no word-processor-like modification of text, can handle various types of end-of-line markers.
- If screen-based:
- all keystroke sequences 'soft'
- ability to learn keystroke macros
- intuitive model of the mapping from text to screen display, consistently treats either the text as the source of truth, or the screen, but not some indecisive mixture of the two
- does not force keystroke repetition to get things done (leading to RSA! (Repetitive Strain Injury!))
- Ideally both text based and screen based in one small and simple package
- allows escape to command mode for complex edits
- starts in screen mode if display supports it, otherwise in command-line mode (and always the latter if invoked from a batch script)
I think some of those cited features are not so important.
- RepeatCommand can be useful but most editors I've used don't have it and I very seldom miss it. Its greatest use is for macro playback. NotepadPlusPlus has a special Run Macro Multiple Times function (via a dialog box), which is a little clunky but sufficient -- and it does offer "repeat until end of file" in addition to a specific count.
- A built-in FileManager: useful but not critical; for me, it's as simple to switch to my always-open File Manager window as to switch to a File Manager pane within the editor. Maybe this feature is useful in non-desktop environments, but it's old school and certainly should not be a requirement for a "powerful editor." ProjectFileManagement, however, which maintains an easy-to-access list or tree of a specific set of files, is very nice to have.
Features that I consider indispensable:
- Unobtrusive mouse-free Search: I should be able to hit the "find" key and have a small prompt open, out of the way of the text I'm looking at, causing no shift in position of the text I'm looking at and minimal movement of anything else on the screen. I should be able to type hotkeys to repeat the search in either direction and to toggle case-sensitivity and whole-word matches. (VisualStudio 2013 has finally gotten this right, after years of clunky dialog boxes opening up that require tab-key navigation or mouse clicks to get to every feature.)
- Additional and typical, if not strictly necessary, aspects of this feature include IncrementalSearch, RegularExpressions, and HighlightAll?.
- Proper text management:
- Unicode UTF-8 and UTF-16, with and without BOM, as well as ANSI/Win-1252; other encodings are gravy.
- Proper support for LineEndings.
- Customizable KeyBinding with the ability for keystroke (or chord) to map to nearly any function in the editor. "Nearly any function" meaning, "any function that I'd want to do often enough to map to a single keystroke."
- — KismetCow