Almost every programming language is overrated by its practitioners. – Larry Wall

Many people nowadays use IDEs or other fancy editors with good GUI for writing code. I was one of them until I tried Vim. I was overwhelmed by the keyboard shortcuts at first. I don’t even know how to quit it and it took me a long time to figure it out. But as I continued to use it, I found I was more and more used to these shortcuts.

The adoption of Vim opened a whole new world for me. Vim is so hard to use, so it made the CLI seemed very user-friendly. And to make myself more productive, I found a lot of CLI tools that I can’t even imagine before. My eyes had been appeased by GUI since the first time I saw a computer. The bond of GUIs and computer in my mind was so strong, that I can only eliminate it by force me not using them.

Arch, a Linux distribution without GUI by default, Xmonad, A window management program written with Haskell, Vifm, a vi-like file management tool, Tmux, a necessary Shell management program. Those important programs that composed my everyday life were unknown to me before I use Vim.

As the time goes, I decided to give Emacs a try. It feels totally different than Vim. Unlike Vim that emphasize too much on keyboard, Emacs provide plentiful ugly GUIs to execute commands. That’s not a good sign to me. I got used to the keyboard, so that anything makes me to use mouse seems stupid to me. I thought Emacs may not be for me.

However I didn’t give up, I tried Evil. It’s a package the simulate the behavior of Vim for Emacs. It’s not perfect as I remember but close. So I learned Elisp, the language used by Emacs, to help me migrating from Vim. I remapped a lot of keyboard shorts that I have set during those years of using Vim, modified some Emacs packages to make them behavior more like the plugins in Vim, made a color scheme the makes my Emacs looks the same as my Vim.

After I made Emacs the same as my Vim. I found I cannot go back. I’ve been using Vim for such a long time that I thought I would stick with it for the rest of my life. I was wrong. Elisp is much more powerful than VimL, the language used by Vim, which make the transition from it smooth. But when I switch back to Vim, I found that the customization in it is so hard. Writing and calling a function in Emacs is very easy, but in Vim, it’s not. VimL is the worst language I’ve ever seen. Although it allows you to call Python or Lua, you have to write some tricky code to communicate with Vim.

If you have never tried Vim or Emacs before, you should.