Skip to content

Meow Made me Leave Evil-Mode

· 5 min
meow emacs

I recently discovered Meow as a modal editing replacement for evil-mode, and it has become a mainstay in my recent vanilla emacs configuration.

Meow piggybacks on the Kakoune/Helix style of editing (of which I had never used prior, and I quite like it!) to visually select and then act upon text in a way that makes sense. Essentially flipping vim’s verb/noun (dw for example) to selection/action (wd) means that everything is seen before acted upon. No more guessing if I wanted to “d 3 w’s” - I see the selection before I act. Theoretically, this means you get the speed of vim without the mistakes. In practice, well there is the muscle memory learning curve to overcome - which for me has been a few weeks of missed keypresses, nothing like switching to Colemak DH.

What meow allows for is a modal layer on top of vanilla binds, while avoiding the pollution of evil-mode in everything. .

Meow is the antithesis to this: tremendously lightweight, permitting emacs to shine through and do what it does best, all while being customizable to the point that I have replicated most of vim’s ideas into my keybinds without the evil debt.

Let’s discuss why I think meow is a great addition to a vanilla emacs config if you want modal editing without the weight of evil.

A return to vanilla#

Coming from Doom emacs, I had the desire to use the default emacs binds as much as possible as I moved to my recent vanilla config. I was already using C- a ton in orgmode, magit, etc. and found I was already using the defaults much of the time. The thing that I missed was modal editing within brackets/parens/multi-lines etc. and there are just ways the vim way of doing things are more natural to me.

But, I was over evil for a few reasons:

Pollution#

When you run evil-mode, you start to see how much it takes over. Evil is heavy, and slows down the configuration without a doubt. When I looked at my previous configuration, evil-define-key this and state overrides were everywhere, making evil a dependency that was tightly coupled with the way I used emacs. This was forcing me into reconstruction of emacs; I didn’t want to be held hostage any longer.

When you start to pull evil out of emacs, you see how powerful emacs is without the “vim pollution.”

Weight#

Evil slows emacs down, not just at startup time, but it is extra baggage that has to load in complex modes if you use evil-collection. Elfeed was a big wakeup call, in which my emacs would hang for seconds on updating. Since switching to meow, the lag is gone.

Emacs as a final place to hang my hat#

Emacs has been, for over a year, the only place I would edit text, or in recent months, generally use a computer. When I feel something is worth doing, it is worth going all in on.

Is Meow the final answer? I am not sure, but it seems like a very capable jumpoff point from evil to vanilla.

Keymaps#

By default, meow is built for the QWERTY keyboard, but there are defaults for colemak, dvorak, etc. But you probably won’t care as you can map keys however you want. I have gone and set these up in a “vim-like” way - in that many of the keys are “familiar” to evil/vim users, but also don’t fight the meow idea. You can see my keybinds here where I emulate Doom’s SPC leader, including some of the comfiest navigational keybinds, and my own functions.

God mode#

Meow has a built-in version of “god mode” in which you hit SPC as a pass through to any emacs keys, replacing modifiers for one-shot commands.

Instead of hitting C-x C-s for example, SPC x s does the exact same thing. This passes through to x, c, g, m by default, but can be customized to your ideal and so as not to conflict with other binds. So, you can avoid the “emacs pinky” excuse (though you are running a split, ortholinear, columnar staggered, ZMK/QMK firmware keyboard, right?) for not using emacs.

Multi cursor#

Not only do you get God mode built in, you get multicursor support with meow beacon which permits multi-line edits, as well as macro support with kmacro.

I have mapped most keys to vim-like positions, just to get up and running quickly, so I select lines with l, hit G to open multiple cursors, Q to start kmacro, and then @ to call the macro back. This is very handy for code editing specifically.

Composition#

With flash or avy, you can easily select precisely where you want to go, visually start a selection, and jump to another location. This is not just a meow thing, but composes well with meow.

Conclusion#

Meow respects Emacs for that which it is without trying to turn it into something that it is not. Will I stay in meow-land forever? I am not entirely sure. But - I do know that at least it has stripped much of the baggage I was carrying, and moved me closer to vanilla emacs binds. It doesn’t come with a massive opinion or try to lock you into using the modes across emacs, and it gracefully falls through to emacs defaults without conflict. All I do know is that my startup time (if one cares about that sort of thing) is now ~0.3 seconds faster because the heaviness of evil is no longer.

As always, God bless, and until next time.

If you enjoyed this post, please consider Supporting my work, Working with me, or sending me an Email to tell me what you think.