Emacs

Well, I have to put this somewhere. The Emacs platform is flexible and easy to write applications for. Without the great design of the platform, none of the things below would be possible. The fact that it’s a gui application running on a command-line engine 4 That may sound odd if you’re a hardcore terminal user (like myself) but trust me, it’s a good thing. Think of it a little like having an X11 client running with just terminal windows. You could get by without the X11 client, but it helps sometimes that it’s there. is brilliant.

Troubleshooting

Emacs has great built-in capabilities for figuring out what went wrong. If you experience some slowness in the editor, for example, you can figure out how to reproduce it and then execute profiler-start , reproduce it, and ask for a profiler-report with a neat breakdown into what was taking so long. It took me a long time to get used to this because I have seen it in exactly zero other editors.

God mode

By default, virtually any operation in Emacs requires you to hold down modifier keys like control, shift, meta, super etc. Put simply, God mode is an extension that gives you the option to toggle into a global modifier state: if you press escape, you enter a state where any key press is interpreted as though you held down modifier keys. This provides a modal editing experience5 Nota bene: This makes it sound Vim-like, but that is not the case. The command language of Emacs is nothing like that of Vim, which I still think is vastly superior. However, there are other reasons to prefer God mode. on top of vanilla Emacs. One of the strong points of God mode is that you still have access to all the regular Emacs keybinds in the “insert mode”. If I’m typing in the middle of a line and want to go to the end of the line, I can either take the God mode route of <esc> <e> <esc> – or I can take the Emacs route of C-e . I get the choice, and that’s surprisingly convenient. In my limited experience, God mode also integrates better with the rest of Emacs than Evil mode. That’s why I switched from Evil mode to God mode: I have found the threshold to entry to other parts of Emacs lower when you stay reasonably true to vanilla Emacs.

Evil mode

Evil mode is very nearly a full Vim emulation6 You will probably have to learn a tiny amount of Emacs to be comfortable with Evil mode, but it is telling that I remember someone saying something to the effect of “If it doesn’t work like in Vim, that’s a bug.” inside Emacs. If you want nothing but a good text editor, get Emacs and run Evil mode in it. Even if you are already a Vim user, please give Emacs and Evil mode a serious try. I know Vim emulations tend to suck, but Evil mode is really, really good. And you get all the benefits of the Emacs platform.

Keyfreq

This little gem sits in the background and records the commands that are executed by the Emacs cli engine during regular Emacs usage. Then at some point, you can review what commands you execute most often, and create better keyboard shortcuts for those, should you want to.

Versor

I haven’t dug too deep into Versor (versatile cursors) yet, but it appears promising. The idea is that we can view the arrow keys as traversing the document in two dimensions7 These dimensions are normally the Cartesian/rectangular coordinates (line; column)., and if we do, there is nothing stopping us from assigning different dimensions to the arrow keys depending on context, see table 1. Table 1: Ideas for arrow key dimensions in various contexts. Context left-right up-down English prose words paragraphs html documents sibling elements parent-child elements Java code expressions statements

Comint

Emacs has a built-in mode called comint, which probably stands for something like “command interaction”. That it does is launch a command-line application (like python or psql ) and then has some features to interact with it, like throwing expressions at it from your text file, or browsing its history, or whatever. The neat thing is that this turns even the most basic, un-human-friendly command line interface into a super high-level, nice thing to work with, nearly for free! It’s very cool.

tramp