> That means the code is sketchy sometimes, sure, but it's in my control. I wrote it, I understand it, and when it breaks, I know exactly where to look.

This resonates with me so hard. I'm not a "no external packages" purist, but there are a number of pieces of functionality that I wrote for myself because there wasn't anything quite like what I wanted.

One example is a function to expand the region (selection) to any arbitrary set of pairing delimiters that I define in a defvar (parens, quotes, brackets, or I can can supply a custom left/right regex for matching). Then, when I execute the function, it waits for a second keypress, which is the trigger key I've defined for that matching pair, and it will expand the region to the left and the right until it meets the applicable delimiter.

Repeating the same key presses results in selecting the left and right delimiters themselves, and another repeat will extend to the next set of matching delimiters, and so on.

Even though I use a treesitter-based expand-region plug-in, my custom function is still invaluable for when I want to jump past a series of valid treesitter object expansions, or when certain text objects are just not defined in treesitter.

Some of the helpful custom expansions I have defined are:

"w" to select what Vim considers a lowercase-w word

Space to select what Vim considers an uppercase-W word

"$" to select ${...}-style expressions

"/" to select everything between forward slashes

"*" to select between asterisks (useful when editing markdown)

It's really an invaluable function for me, personally, but I always talk myself out of trying to open-source it because it has some gotchas and limitations, and I just don't want to be on the hook for trying to make everyone who uses it happy.

> "w" to select what Vim considers a lowercase-w word

?!? Wtf does this mean and how did vi come up

Because any mention of Emacs must bring out the vi people, just as any mention of vi must bring out the Emacs people.

Because you people are cracking your eggs from the wrong end!

> Because you people are cracking your eggs from the wrong end!

That's because both ends are wrong. Eggs should be cracked from the side.

Can't believe this still needs to be said on this forum in 2026.

Cue RMS giving the Church of Emacs skit…

vim has two "word" motions, w and W, the lowercase w motion will see punctuation as a word boundary (as well as whitespace ) W only considers whitespace

Mind blown. Now I'm wondering if swapping `w` and `W` in the config is worth the penalty of diverging from the defaults. Decisions decisions.

Sure. how was that relevant to explaining their keymapping? Why would you not simply directly describe the behavior as you did rather than sending the same amount of energy to route people through an entirely unrelated editing paradigm?