Redcar is cool, but I still can’t use Linux
With the arrival of Redcar, which is a TextMate-inspired “text-editor/IDE for Gnome in pure-Ruby”, Linux is becoming more appealing as an everyday OS. Honestly, I am almost ready to install Ubuntu in a VM just so I can try this out…
As cool as Redcar is, there isn’t one, or even a collection of applications that would make me switch to Linux. Let me put it this way, even if every application I use on OS X worked on Linux, I still couldn’t use Linux as my everyday, desktop OS. Why? Because OS X is the only OS that distinguishes between GUI editing and line editing.
Let’s start with a little background. The Mac was a GUI-based OS from the start, i.e., there was no command line. And because of this Apple, for whatever reason, created a new key on the keyboard: the Apple key (which is still in use today, but the Apple logo has been removed, and everyone refers to it as the “Command key”). There are two Apple/Command keys: one to the immediate left of the spacebar and one to the immediate right of the spacebar. (For some reason, I have never used the one to the right of the spacebar.)
So, what’s the Apple/Command key for? Well, it’s the equivalent of the Control key in Windows and Linux (but only for GUI editing in Linux, and now you can probably see where I am going with this…). If you want to “Select All” in a GUI Mac program, you use “Command A”, whereas in Windows and Linux, you would use “Control A”. Ok, so, great, what’s the difference? Well, what happens when I am writing an email and I want to go to the beginning of the line? Anyone? Anyone? … The suspense is killing me… On the Mac I would type “Control A”! How do I go to the beginning of the line in a GUI app on Linux? Please, you tell me. Oh, right, that special key, which is way out of my way, that had to be invented to do this simple task.
Now, let’s pull out the command line. How do I go to the beginning of the line? “Control A” of course (thank you emacs!). So, on Linux, if I am writing an email in Thunderbird and I want to select all, I hit “Control A”, but on the command line, “Control A” takes me to the beginning of the line… Excuse me? On OS X (and yes, this is with OS X, as (I believe) the only use for Control prior to OS X was the contextual menu support in OS 9), the Command key commands work in every app, and the Control key line editing commands work in every app.
Even in iPhoto, if I am editing the Title of a picture, I can use “Control A” to take me to the beginning of the line, and “Command A” to select all. Same is true for the Terminal (the command line) where I can use “Command F” to open the find dialog box (like on every other GUI app!) and search for something. And yes, “Command A” in the Terminal selects everything in the buffer, and then I can “Command C” to copy, switch over to another program, and “Command V” to paste.
As clean and amazing as this is, the pièce de résistance of this is that the command line “cut” — “Control K” — and “paste” — “Control Y” — both work in GUI apps, too, and uses a separate clipboard than the GUI cut and copy! So, this effectively gives me two clipboards! But, actually, it gives me n clipboards because the command line cut and paste are for that application only, whereas the the GUI cut, copy, and paste are global. So, this means I can use “Control K” in TextMate, and “Control K” in the Terminal, and when I do a “Control Y” in either of those apps, that app remembers the thing that I last “cut” in that application. This takes advantage of the fact that in OS X there are literally n clip/pasteboards.
Some Linux users have pointed out that you can switch to command line-like editing on a per-app basis — the concept is “enabling emacs key bindings” — but when you do this on Linux, you now have to use another key for doing GUI things like “select all”. So, to me, this is not a solution, in fact, it makes things worse because now you have to remember which apps have emacs key bindings enabled, and which don’t.
In closing, until Linux, or more precisely Gnome, KDE, or any other desktop environment makes a clear distinction between GUI editing and line editing, and it is implemented across all of the applications I would want to use every day, there is no way I can switch to Linux. Emacs line editing commands* are embedded in my brain, so are GUI editing commands, and it is a massive (which is an understatement) productivity killer to have them be inconsistent or just outright broken in Linux. And forget about Windows. I used Windows at work for 4 months and thought I was going to go nuts. I switched to Linux and got maybe another 4 months before I told my manager that I either get a Mac, or I’m leaving. (They gave me the Mac.)
* The GUI line editing in OS X is only a subset of the things you can do with emacs/command line. For instance, you can’t do “meta f” to skip ahead one word in the GUI, but for that, you have the “Option right arrow key”, which is universal in all GUI apps on OS X. The same goes for all word, line and page skipping, forward/back/up/down in GUI apps.

