I’ve discovered something amazing! It’s an old but powerful text editor called Emacs, which has been developed constantly from the early 1970′s to today.
I’m only just begining to learn about it. I had originally ignored it, thinking it was like its complicated sister program, vi. Vi is very confusing for me, because it has an “insertion mode,” which works pretty much like how you’d expect a text editor to work, and a “normal mode” which is completely insane.
Normal mode in vi lets you move the cursor around in different ways: h,j,k, and l move the cursor left, down, up, and right, respectively; w moves to the next word; b moves to the previous word; % moves from one end of a set of parentheses to another, and so on. You can also delete and move text in this mode: yy will remove the current line, for example, and p will place that line at the current cursor postion.
I’m sure it’s useful if you can adapt to having different modes for typing and and editing text, since you’ll never need to move your hands away from the home position on the keyboard. But I found vi too confusing to use, despite several attempts.
Emacs is similar, in that it’s designed to let you do everything efficiently from the keyboard. But Emacs doesn’t use a different mode for its added features; instead, you use keyboard shortcuts. Ctrl-F moves forward one character, while ctrl-b moves backwards one character. Alt-f and alt-b move forward and backword one word. Ctrl-K kills (cuts) everything from the cursor to the end of the line, and so on.
Vi’s biggest problem was that it would get in my way. If you’re in normal mode and start typing a sentence, you’ll do all kinds of strange things to your file. Emacs doesn’t get in my way; it behaves like I expect it to. This means I can learn new tricks piecemeal rather than having to memorize an entire new set of commands all at once.
The other thing I’m liking about Emacs is how easy it is to customize. It was trivially easy to change Ctrl-z from minimizing Emacs to making it undo. Adding markdown support was just a matter of copying a plugin and pasting a bit of code into a text file.
The next thing I’m going to have to explore in Emacs is orgmode, which I find intriguing.

