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
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
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.