Brandon Stiles

A Blog on Full-Stack Software Engineering and Inventing the Future

Switching from Vim to Emacs, In One Week

Posted on
emacs, vim, tmux

A Somewhat Retroactive Manifesto

Today is Wednesday at noon. I have ditched Vim, Tmux and iTerm for Emacs.1 And it has been difficult. I have been going to bed somewhat mentally exhausted. Have I been productive? No. Am I having fun? No. Am I making progress? I suppose. But maybe the better question is, why?

Vim is highly-likable. I use it for all my programming. And Vimwiki for organizing my life.2 But the last straw for me was dealing with PGP encryption for my Vimwiki files. It worked smoothly and as expected, but every time I exited a buffer containing decrypted PGP file content, the sensitive buffer text was left output on the terminal screen. Okay. The problem is not worth getting into because I have already moved on. You can take a look at my =.vimrc= configuration file here though. I'm three days into my Emacs transition and I've almost gotten to the point where I can write, test and maintain software in a manner similar to what I had before.

I picked up Vim and have been using it for the past few years because I had the common realization that, as a programmer, I spend a lot of time writing, not just code. Why not find the best editor out there, learn it, use it, in an attempt to increase productivity? This article describes my attempt at giving Emacs a try.

Past Emacs Experience

I read this comment by Stephen Diehl the other day and it humbled me:

Two realizations you eventually come to on software:

1) Most progress is an illusion

2) Real progress happens on the timescale of decades

As a relatively "green" programmer (it has been 10 years since I first started coding, not long as far as greybeards go), I'm happy with the progress I've made over the past three years.

For the record, I have no clue if he use Vim or Emacs.

My past experience with Emacs has been limited. In the past six months I have used it sparingly for Coq development. Emacs has unparalleled support for interactive theorem proving via the Proof General (PG) package. PG is, hands down, the best at what it does. Nothing I've tried in Vim comes close. I used maybe 20 commands, all from the interactive Emacs tutorial within Emacs (<C-h t>).3 Here they are:

Keystrokes Action
<C-n>/<C-p> next/previous line
<C-f>/<C-b> forward/back a character
<M-f>/<M-b> forward/back a word
<C-a>/<C-e> start/end of a line
<C-v>/<M-v> up/down page scroll
<C-/> undo
<C-g> cancel

And that's all I knew. I was actually, at the time, running Emacs in my terminal within a Tmux session. When I showed my friend he laughed and told me no one does that and that people usually use the stand-alone clone.

First Impressions

Non-Modal Editing

Non-modal editing? How odd? Why? Should I just Evil mode4?


How to Cope Without a Real Terminal or Tmux

Hell or Purgatory?

Pleasure and Pain Plotted Against Time




By enlightenment I'm referring to "cessation" definition. The cessation of grappling with learning a new editing computer program. The cessation of having second thoughts and reverting to Vim. The cessation of evangelization of my newly developed skill.

  1. All running on MacOS - stay tuned for another post in the future when I try out NixOs. [return]
  2. Vimwiki is exactly what is sounds like. A personal Wiki complete with journaling capabilities. It has been one year and 22 days since I started using it daily. The unexamined life is not worth living, or so I have been told. [return]
  3. This entire document is an org file. I made this table manually and then presses == and it automatically aligned itself. Bonus. [return]
  4. Vim-like keyboard bindings. [return]