Text editors

Is there a "one size fits all"?

Most of my active interaction with computers is about writing or editing text. Writing emails and case reports, authoring publications and preparing lectures, blogging and programming in my spare time — everything involves text. I’m not really into photography or video-editing, and I do my presentations in Beamer, so if it wasn’t for occasional audio editing and clicking links during web-surfing, I probably wouldn’t need a mouse/touchpad at all.

Of course, I want to make my text editing experience as smooth and comfortable as possible. There’s nothing more annoying that an instrument getting in the way of doing the job, and a good instrument that is comfortable to work with makes the work so much more fun. Essential instruments for working with text are the keyboard (a whole topic of its own) and the software you use — the text editor.

Oh, text editors! There are literally thousands out there, general-purpose and specialized, simple and fancy, brand-new and tested by generations of users. There are holywars and endless arguments about which editor is the best, yet there’s still no universal agreement on one text editor to rule them all. Which is totally OK: people are different, and their needs differ, too.

I must admit that I haven’t even found one true text editor for myself. I’ve been trying to find it for years, and I think I’m finally ready to give up. Maybe there just isn’t one true text editor that fits for all purposes…

Vim has been my go-to text editor for all things code- and admin-related for years. Writing scripts and Go programs, editing config files and HTML templates — Vim is awesome for all that. Little edits here and there, or tossing whole functions around during a big refactor, Vim makes it fast, simple and intuitive. Vim doesn’t get in the way and does exactly what you want it to do, exactly how you want it. Yes, the learning curve is steep, and I don’t claim to be an advanced Vim user; I’m still learning things after years of using it, but it works for me and it works just lovely.

That is, until I start writing in human language. As soon as I switch from coding to writing, even if all I’m writing is a readme file, the magic is gone. It took me quite some time to figure it out, but it looks like the problem is the way I do it: I usually edit the two latest sentences as I write, fixing the wording and changing phrases a little here and there. In Vim, I need to switch to normal mode to move the cursor, switch mode to make the edit, switch to normal mode again, go back to the end of the line, switch back to insert mode… Too much mode switching, Vim starts getting in the way.

Well, if I have issues with Vim modes, why not learn to use Emacs, right? That’s exactly what I figured. I gave it a try several times (and I think I’ll give it a couple more tries in future), not enough to start using it comfortably, but enough to get a general impression: Emacs is awesome. It’s a great piece of software, I really like the way it’s meant to be interacted with. And I understand why Emacs users use it for everything: all those commands get into your muscle memory, and it becomes really hard to switch to other software. It isn’t that big an issue with Vim: you learn very fast that “save file” is :w<Enter> in Vim and continue using <Ctrl>+s in your other software; with Emacs it’s orders of magnitude harder: it gets into your muscle memory and you start trying to save your files in LibreOffice or your email client with <Ctrl>+x s — and then, of course, you switch to Emacs for all your tasks to avoid this confusion.

The problem with Emacs though is that it’s unusable for a human using a conventional computer keyboard. My every attempt to use Emacs for a prolonged period of time resulted in terrible pain in my fingers, especially pinkies. It’s simply unbearable. I gave it a lot of thought, and it looks like I need to either use a custom keyboard or have my hands surgically switched, left to right and vice versa, so that I can use thumbs to press <Ctrl>. Hand surgery seems to be a little bit too radical a solution for me, and using a custom-made keyboard is not an option either: I need to be able to use my laptop, too1.

So here I am, still using Vim for coding, writing my emails in the email client’s built-in simple editor, doing all my LaTeX in TeXstudio, and composing this blog post in ReText. Different tools for different jobs, not a bad way to live either. Yet sometimes I paste a piece of code into a blog post and need to edit it a little, and then I wish the file was opened in Vim, and then I start dreaming for that universal general-purpose text editor — again. And give Emacs one more try, until my fingers can’t take it anymore.

  1. A very common solution among Emacs users seems to be programmatically switching <Ctrl> and <Caps Lock> keys, to put the <Ctrl> key where it is on the keyboards of yore. I may give it a try one day, but a) I like having a <Ctrl> key on each side of the keyboard, b) I use <Caps Lock> as a switch between Russian and English keyboards (I think any sensible user in need of multiple layouts should at least try it, it’s awesome), and c) the Emacs’ most-used <Ctrl>+x combination would still be uncomfortable, perhaps even more than now. ↩︎