This is lengthy; I want to show how very similar "demands" can lead to very different and incompatible "solutions".
mystran wrote:
If you do a lot of things, and constantly do a lot of things, it's better to have a highly-configurable, scriptable editor.
Which implies that it is upon you to hack the editor to suit your needs. I think this notion is flawed. I have a file to edit. If my editor of choice does not sufficiently support me - by inbuilt features, downloadable plug-in or whatever - the editor is the wrong tool.
Demanding strong scripting features for an editor is confusing editor
users with editor
developers.
Sometimes an XYZ user is also an XYZ developer, but more often they aren't. This is a misconception quite common in GNU land.
That being said, I would never ever again consider an editor without:
- regex-search/replace, just can't refactor without it
- syntax highlight, redefinable for any language
- auto-indentation, at least C-style + Lisp + General (text)
- file-type (eg. language) autodetection and per-filetype editor settings
- parenthesis matching (this speeds up a lot), both movement and visual
Fully ACK.
- ability to pipe files and selections to arbitary commands
Overkill, IMHO. There are only so many things you can do meaningfully with a text selection, and the editor should support that directly without you having to know additional commands to pipe to. For actions on files, there's the shell - that's not the editor's job to do.
- ability to run arbitary commands (especially make)
ACK.
- FULL keyboard-shortcut interface. No menus, no toolbars.
Erm... another thing I dislike in GNU land is that too many developers superimpose their private notion of "good UI" on their product.
You want no menus, no toolbars.
I want menus and toolbars. An option to enable / disable them would probably make both of us happy, but you sound like an editor having them is inherently bad.
And I
strongly dislike having to memorize ESC-colon-q-! or Ctrl-C, Ctrl-X and their ilk. I like to have an intuitive menu layout which also tells me of available shortcuts - I can search for the exotic options, and memorize their shortcuts if I use them often enough, instead of having to hunt down the spell in the manual. That's a
design concept, something not only related to text editors but software in general. Some people seem to like the notion of their system being a secret tome of the arcane; I like my system being as intuitively useable as possible.
- ability to send files to the editor from any shell
Well... are there (serious) editors that can't do that?
- resizeable split windows.. horiz or vert, I don't care.
- ability to do editing like search/replace on a limited region
- unlimited undo and redo
- crashed session recovery
ACK. And there we are, you using ViM and lookign down on GUI editor users, and me using UltraEdit and not able to stand using ViM for extended period of times. (I use it for a quick hack-away, a CVS commit message edit, or when I'm in a SSH and don't care for startin up UltraEdit to open-via-SSH, but I can't stand it for any serious editing.)
Proper mouse support for pasting/selection is a plus, but not really necessary.
Absolutely required for me.
CVS integration is nice, but being able to run commands give you that so no special integration is really needed.
Since I use CVS and Subversion on a regular basis, ClearCase and Arch occassionally, I don't care for "integration" at that point. Even if CVS is all you use, procedures are too different from project to project for a catch-all integration in your editor. (One project might be OK with every file-save equalling a commit, others might kill you for that.)
There are about a hundred other features I probably rely on, but that's the list that came to my mind without much thinking.
Macro recording and playback, open-by-FTP/SSH, integrated project management (closing project X and saving all windows / bookmarks, opening project Y where you left of), ctags integration (displaying function lists, jumping to function definitions), integrated diff.
That said, my editor has to work at least in terminal (although I normally use GViM) since remote X is SLOW and I need to remote constantly.
That's why I require open-by-FTP/SSH; as a GUI user, I can't really stand terminal-based editors, and I don't have X Window running as a rule. (Windows / Cygwin user.)