While I’ve seen numerous posts and videos over the years about the ability to “edit at the speed of thought” with vim, I have really never seen that take on (default) emacs. This is my attempt at said post after finally seeing the light and dropping all modal editing, choosing instead the default emacs binds and methodology of editing.
As a bit of a background, since 2017, I had been in the “headspace of a vim user” - I thought and acted on text modally. All editing was done in various modes (Visual, Insert, Normal, etc.) - and I carried this over to emacs for the last 6 years or so.
I had thought simply that I would use “vim inside emacs” with evil mode, and that would be that. Don’t get me wrong, this is a productive way of leaving behind vim/neovim for the wacky world of emacs, as many taste the power of emacs with pre-built “distributions” of emacs such as Spacemacs or DOOM that bake in this vim emulation as an invitation. They are an effective way to get the vim/neovim/vi user up and running in a foreign environment.
But, after a while, I started to find that the evil package (especially if using it globally) is a burden on the emacs “ethos” - conflicting with native binds so that you never fully get the emacs mental model, and it drastically pollutes one’s configuration with “evil-key” throughout (so much so that when I wanted to leave evil-mode behind, I had to spend not a trivial amount of time in decoupling all my configuration). Not only this, but I started to get the itch to see what the editor wars were really all about.
So, about six months ago, I did just this. I left evil mode and DOOM emacs for my very own configuration and to a helix/kakoune inspired layer in Meow. And - I found it to be really good!
If I was a user of regular keyboards, this would probably be the end of the story and this post would be about how I’m using meow after hundreds of hours.
However, if you know me, you know I am not a legacy keyboard user - nor do I use legacy typing styles.
In being far too down this rabbit hole, I’ve come to find the emacs way of editing text can be just as ergonomic, if not more so than the vim/modal way.
Big claim, Joshua! I can already hear.
But, I do truly believe that when you get out of the box of vim motions, you come to see the emacs way is very good in its own right.
So, here I am, fully vanilla, fully raw emacs after this multi-year journey home. This post is a discussion on what I have found along that path, and how I am “editing at the speed of thought” in my editor of a lifetime, Emacs.
How I solve ergonomics#
Before we begin, I additionally preface this post with the fact that I use kmonad on my laptop and run qmk on a custom keyboard at the workstation. Both configurations run homerow mods and allow my strongest fingers (namely my second and ring fingers) to perform the constant modifiers that emacs requires.
It is 2026 - we can use free and opensource software running on free/opensource hardware to solve the dreaded “emacs pinky”, my brothers in Christ.
If only swapping Capslock for Control, we can make a massive step toward the horrendous placement of the Ctrl key on most keyboards.
Side note: I always used to hit the ctrl key with my palm when typing, so if you have a traditional keyboard, the habit may save your pinky a bit.
Remember, Vim/neovim solve ergonomics with modes, but we can solve ergonomics with hardware.
This means that the sky is the absolute limit for customization and no two keyboard/emacs configurations will be alike, because everyone’s minds work differently, and everyone’s idea of “comfortable” is also very different. But, after some time, you can get to the point that you feel as if you are in the cockpit of a fighter jet, driving thought to fingers and back.
You are always in insert mode#
One comes to understand very quickly that there are no longer “modes” for editing text in emacs. Everything is one “mode”, meaning you make use of modifiers far more frequently than vim (almost all the time). For me, this only works with homerow mods or moving Ctrl to CapsLock at the very bare minimum.
This “one mode only” changes the way that I have thought about editing: you are always able to select, modify, hit macros, and (obviously) edit, it’s all within reach in one mode. Editing prose is especially nice in Emacs I’ve come to find.
The “flourish”#
What I first did not understand when seeing the constant and nagging “C” (or Control for the uninitiated) listed in the hotkeys for emacs was that I thought of it as a keypress.
But, what it really is - is a hold, similar to CAPITALIZING a word by holding shift.
This means that when you see C-x C-s you are really holding Control and quickly pressing x s. I refer to this as the “flourish” and it is why we look at emacs as a “chording” environment rather than a “modal” one.
TIP: In termux on the phone, you can actually hold Ctrl for a second and it will lock the key, then you can flourish to your heart’s content.
Default keys#
If you’re a seasoned emacs user, then feel free to skip ahead. This is a list of defaults that I don’t even think about anymore:
C-SPC: Set mark (you will use this a ton.)C-n/C-p: next line/previous lineC-f/C-b: forward/back character (I rebound these to ‘find-file and ‘consult-buffer respectively as I have arrows under the vim “hjkl” keys on my keyboards and try to move around as little as possible without searching)C-s/C-r: search forward (s) and backward (r)M-f/M-b: forward/back wordC-a/C-e: Goto beginning/end of lineC-o: open line (above at beginning of line, below if at end of line, or right where the key is pressed)C-g: your new “ESC” key - you’ll be hitting this all the timeC-x C-s: saveC-x C-f: find fileC-x C-c: quit emacsC-x C-o: delete excess linesM-d: delete word at pointC-k: kill to end of lineM-k: kill sentence. Note: emacs defaults to respecting sentence breaks as two spaces after a periodM-h: select paragraphM-z: zap to character. This is vim’s “dt” and you can just repeat to hit the next character.C-S-backspace: kills entire line
All of these “compose” into chords, in that again, you hit C-SPC and follow that (while still holding Control) with ‘n’ and you select a line.
Help#
C-h: is the preface to helpC-h k: See what a key/combo doesC-h e: open echo areaC-h f: describe function
The killring#
In emacs the lingo surrounding the way we cut/copy/paste text is different than someone that is familiar with WISIWYG editors is used to. Cutting is called “killing”, copying is called “saving”, and pasting is called “yanking”.
In modern terms, C-w cuts, M-w copies, C-y is your new “paste” key combo, M-y cycles the last things in your killring (clipboard) after yanking.
The Point and Searching#
I have come to see that when people talk about vim keys, many are literally talking about hjkl as an arrow key replacement.
They want to replace the arrow keys with something far more ergonomic, and I was one of those people!
Vim becomes insanely powerful when you start composing verbs with selections, and that takes some time to learn - but editing is never the same afterward.
It is why I do recommend people learn vim as a way to unlock their mind about how to interact with text and what the keyboard can really do - a keyboard can be layers deep even if there are only a minimal set of keys in front of you. My 34 key keyboard is actually as many keys as I want with layer modifiers.
But the point/search model of emacs is tremendously interesting when you see it for what it is in that it takes visual selection and imparts it in a single mode.
Hit C-SPC and then C-s (again, remember we are not taking our finger off Ctrl) and search forward to the place you want to select.
Lines, paragraphs, functions, anything become a couple keypresses away. Not only that, there are paragraph/sentence/line key native chords that allow manipulation of text with even less keys.
Macros and Customizations#
Find yourself repeating a flourish or movement a ton?
You can simply record a macro with F3 (or C-x () and then save it with F4 (or C-x )).
You can then bind said macro to any key/chord you want in the future.
Emacs is infinitely extensible in that if you can write elisp, you can change the environment holistically and totally.
I missed “meow-inner/outer” in that I had the ability to select within parens/brackets/quotes, so I wrote a quick macro to do just this, then translated it into elisp (with the clanker) and created a key for it.
Now when I hit M-o (outer selection) or M-i (inner selection) followed by ",', {, (, [ I have this functionality at my fingertips.
Readline integration#
Readline comes baked in with emacs keys, so you transfer the knowledge across domains very easily, from GUI to terminal emacs, and then to the command line. One thing that I found is that tmux in its default configuration plays nicely with this, whereas if you change the leader key up as I had, it conflicts and you will have a bad time.
Adding emacs keys anywhere in your system#
One thing I personally found is that I wanted emacs movement keys everywhere in my system, and you can do this very easily by adding
gtk-key-theme-name=Emacsto your settings.ini in ~/.config/gtk-3.0/
Conclusion#
I have come to find that emacs truly is an exceptional way to edit text in the native keybinds, and is infinitely extensible in configuration. Don’t like something? Change it, explore it, make it better. With that being said, I feel that I am done for some time in my configuration journey and it is time to build. I will revisit this post periodically with tips and tricks I learn from my fellow emacs users in the #technicalrenaissance channel, as I have already learned a ton from the bros.
As always, God bless, and until next time.
If you enjoyed this post, consider Supporting my work, Checking out my book, Working with me, or sending me an Email to tell me what you think.