Emacs. Change inner/outer like in Vim
January 17, 2023
If you’re a former Vim user there is one feature I couldn’t find in any other editors.
Not sure what is the proper name of it but let’s call it change inside something.
Example (|
- is a cursor):
function() {
return 'hello |world'
}
If I press ci'
the result is going to be:
function() {
return '|'
}
or ci{
:
function() {|}
That’s incredibly useful feature because I don’t really need to think where my cursor is. I just place it somewhere around the place I need to remove and press that magical keybinding.
There is no such built-in function in Emacs. And this one is probably the only feature I miss the most.
For some time I’ve been using expand-region by Magnar Sveen
which is a different thing really. It just expands a selection by some logical semantic blocks and can be used
as a replacement to that ci'
.
But still I need to think how many times I should call that expand-region
function before the thing I need is selected.
So today I discovered change-inner.el by already mentioned Magnar Sveen.
It uses expand-region internally and does exactly what ci<symbol>
does.
Bindings suggested in the package readme, M-i
/ M-o
, are pretty easy to used to.
So if you ever missed that change inner/outer Vim feature give this lib a shot.
Feel free to contact me for feedback or questions. Find my contacts on About page.