I have been an Emacs user for the last 15 years or so. I have written hundreds of thousands of lines of code with it, written plugins for it, helped others to use it more effectively and about a month ago I gave it up.
It all started when I happened to be using VIM for a “short” edit session on a remote server. I had recently lost SSH tunneling to a group of remote boxes and figured it would be quick so I did not setup multi-hop tramp for this particular session.
I had edited a file making a bunch of changes then decided to undo some of them, made more changes and DOH! I really wanted those original changes back.
Now if this had been on my local box it would not have been an issue as I use git and would normally have committed that partial change and would have just reverted to it. In this case however I did not have git available and was thus left with needing to write that entire change again…
I remembered a little tool I had once seen for Emacs called undo-tree-mode which I had never gotten around to setting up; but I thought I would see if the same type of thing existed for VIM.
And was pleasantly surprised to find that not only does it exist but it was built in; no magic required!
This got me thinking about my tool choices…
I consider myself a pragmatic programmer and thus attempt to keep my tools sharp. To that end I have used VI for years but never for long edit sessions. I knew the basics of getting around and making changes but always considered VI/VIM a system administration tool rather then a programmers editor.
It wasn’t until the afore mentioned event that I started to think about VI/VIM as a text transformation system. A system designed explicitly to alter textual data from one form into another, like sed.
As for Emacs I always have thought of it as a tool chest in it’s own right but one that stands apart from the system on which it runs. It is a powerful editor but not really a text transformation system, at least I have never thought of it as one.
Once I started to think about editing as text transformation it was a downhill roll to taking the dive into VIM. I gave myself 2 weeks to pick it up or drop it. Now, a month later, I’m not looking back.
Sure I still hit the occasional CTRL-A only to find that it does not do what I meant (I do have 15 years of re-wiring to undo after all), but I have found that, in general, I am moving data around much faster then I have in any editor I’ve used before; for me that’s what editing is all about.