Vivek Haldar had a nice rant about editors a couple days ago. In response to complaints that some editors are ugly, he writes:
The primary factor in looking good should be the choice of a good font at a comfortable size, and a syntax coloring theme that you like. And that is not something specific to an editor. Editors like Emacs and vi have almost no UI!
To illustrate his point, here’s what my Emacs looks like without text:
There’s just not much there, not enough to say it’s pretty or ugly.
When people say that Emacs is not pretty, I think they mean that plain text is not pretty.
For better and for worse, everything in Emacs is text. The advantage of this approach is consistency. Everything uses the same commands for navigation and editing: source code, error messages, directory listings, … Everything is just text. The disadvantage is that you don’t have nicely designed special windows for each of these things, and it does get a little monotonous.
When people say they love their text editor, I think they love text. They prefer an environment that allows them to solve problems by editing text files rather than clicking buttons. And as Vivek says, that is not something specific to a particular editor.
My desire of for a text editor to _be_ aesthetically pleasing AND useful. In my view, EMACS is not useful due to complexity of adoption – the ‘learning curve’ is steep and painful for many. I’ve chosen to abandon those hard fought EMACS skills for a simpler and less complex existence that focuses on the _words_. Apropos, vi.
Today I use Byword, Folding Text or MMDComposer to achieve a focus on the content and the subsequent playback. The use of VI, EMACS or other arcana editors, outside of programming, is no longer necessary and counter productive.
No, when I say emacs is ugly I’m talking about its default look; Flat colours, an ugly font, no subtle highlighting of the current line, an ugly cursour, stuff like that.
Frankly, emacs looks like it belongs on Windows 3.1. I wish someone would write a wrapper for it, so I could have it looking more like Visual Studio or Notepad++ or something like that, but still get all the nice keyboard shortcuts.
my Vim looks indescribably beautiful [1] on every machine I visit including the headless server variety.
I store what’s needed for the runtime path on Git & just clone it to any machine I’m on (as long, of course, as Git’s installed) & the many hours I’ve spent tweaking it (colours, syntax, etc) have paid off tremendously. Makes me far faster & productive than any GUI editor I’ve ever had to use (& of course, GUI editors ain’t much use on headless servers). It also means I have exactly the same environment every time…
[1] poetic license
Mine looks like that too!
Another crucial property of Emacs (and vi too) which *no* other editor has is lack of modality. There are no modal dialogs or events (or any dialogs) ever. Even when in the middle of doing something in the minibuffer, you can switch back to the regular buffer and keep editing. (Yegge pointed this out.)
The whole idea of emacs is customization. You can change the color of anything you can see, and in the new version there is built-in theme support, along with a package manager which can automatically download themes. So, being “ugly” is not a downside of emacs. The same can be said about vi(m) (my current editor of choice). The choice factor on text editors should be which one is the most comfortable for long sessions of text editing (I used to be an emacser, but got tired of doing hand contortionism to achieve what I can easily do on vim with 2 or 3 keystrokes), and the color-scheme+font should be one that’s easy on the eyes (zenburn is really good on any editor I’ve seen). Other factor of importance, especially when programming, is syntax comprehension. Not a single editor I’ve ever heard about beats emacs in this respect, even vim. In most languages you can just select the whole text, C-M-, and it’s indented. I dropped that when I changed to vim in favor of external indenting tools, but when writing code it’s good to have the current line indented to the correct position, and it also enables a better syntax highlighting than plain regexps like vim’s.
Canageek: You may not be able to make Emacs look like Visual Studio, but you can make Visual Studio use (some) Emacs keybindings. More here.
I’d appreciate the obligatory “my .emacs” posting. I’m curious what your setup on Windows is, if you use GNU Emacs or one of the modified-for-Windows distributions, etc. Thanks.
http://research.swtch.com/acme
B. K.: Thanks, but don’t think there’s much interesting in my .emacs file. I’ve blogged about a couple things some people may be interested in:
Shuffling windows
Clipboard history
I’ve got both the default and Cygwin versions installed. The only things I’ve changed is using Allman (BSD) style indents and how large the indents they are. GNU indents and K&R indents make my head hurt.
Well, no.
I did use an Emacs variant for several years, but fell out of practice, for a variety of reasons.
Now I use Eclipse most of the time, when programming. Introspection into the code, to produce outlines, code completion, formatting, and jump to use/definition/super/sub-class is important. Yes, I know vim and emacs can do these things (somewhat), but with less elegance. Eclipse is a bit of a CPU and memory hog, a complaint once leveled against emacs, but on my work boxes that is just not a problem. Eclipse is cluttered and klunky, but good enough. Someday – when I have a spare year – maybe I could hack the Eclipse framework to present something more elegant. (That spare time is unlikely.)
For day-to-day editing on the dozens of headless boxes (virtual machines and their hosts) use of vim is sufficient and pretty much always present by default.
For Windows (when I must) use of TextPad suffices. It is fast, does regular expressions, multiple file search, and jump-to-error on compile output (some of the biggest wins of emacs). I have used TextPad from the very earliest versions.
As I guy who occasionally spent time working on the fine details of GUI design, I just find Emacs offensive. An Emacs that operated on the abstractions of a real windowing GUI, rather than a “terminal” model is long, long overdue. (Yes, that would kill the headless server use case, but configuring Emacs on too many headless servers becomes quickly tedious.)
The above is of course, very subjective.
canageek – do you realize those things you mention take about 5 lines of .emacs editing and a package or two?
I’ve added pretty much all those things and it’s pretty trivial. Not to brag – I say this as very much an end-user who doesn’t hack elisp at all (other than the change a path string here and there variety).
rv; I figured that most of it could be done, though had no idea how or how hard it would be. I’ve tried to change things in emacs in the past, and given up because of how insane the documentation is.
@Preston L Bannister – Did you ever try XEmacs? I haven’t used it in many years, but it’s version of emacs with a GUI. You can select text with the mouse, etc. I always found it much more congenial than the terminal-based emacs. .Vi, similarly, has gvim. It’s not a gorgeous GUI, by any means, but you can scroll with your mouse wheel, select text with your mouse, drag the window separator, etc.
Of course I have tried XEmacs. It is horrible. The same for gvim. Like playing an instrument horribly out of tune. Neither is structured with the appropriate set of abstractions. Dozens of behaviors that are wrong for a GUI. When you spent a lot of years trying to get GUI interactions exactly right, this is more than slightly annoying.
Emacs and vim are too deeply embedded in the character terminal model. You just cannot hack on the GUI model.
In fact, Eclipse is very much the modern equivalent of Emacs. Massively extensible and extended. Lots of rough edges. Heavy use of resources. At the core, the same sort of notion. Growing constantly, and improving with each iteration.
I think Emacs is both beautiful and ugly. The underlying idea of an elisp machine running a text editor is extremely beautiful but it has the downside of not integrating that well with the underlying operating system.
The result is that even tho it’s all text, and you can make that part beautiful provided that you have a good font and a good text rendering system to render those fonts, it almost always feels disjoint from the environment and in some slight ways ugly. IMHO it’s the same on Windows, linux/gtk and OS X.
@EtherealMind, you think the Emacs is complex because you don’t ask (for example, at G+)
If you prefer either the Vi’s hotkey or Microsoft’s, you can choose evil-mode or ergoemacs. So NO learning curve for the keyboard layout, at least, all you need to do is click and install.
And you can copy master’s configuration from github without any modification. Just use it. For example, if you are web front end developer and you want REAL TIME javascript syntax checker, you can copy Steve Purcell’s configuration from internet. NO need to install any third party tools for that purpose. Easy enough?
I used to live and breath in emacs, but eventually it just fell out of favor for the kinds of things I wanted to do with it and the complexity of having to remember everything about it. I dont think I can really return to it as a useful tool that can make me productive.
At the moment, I’m happily using sublime, which works fine across Linux and Windows, though admittedly, it’s a GUI based app so it wont run headless… though perhaps there’s some nifty plugins to allow for remote editing?