One plugin that is very useful for my VIM flow is this one:
https://github.com/wellle/targets.vim
It builds on the idea of the ci" command - where it jumps forward to find the nearest quotation, and changes inside, for other characters, like (), {}, [], etc.
It also supports argument text objects - which are handy for deleting and changing in function arguments. So cia would jump forward to an argument and change.
These motions and text objects are nice because they mean you can strike from a distance.
In terms of integration, it seems like it depends on whether the plugin story for this is implemented:
https://github.com/VSCodeVim/Vim/issues/590
If that happens, we might want to look at making the text objects extensible to support these scenarios.
Otherwise, we could potentially bake it in as a setting.
Note that ci" is already supported in VSCodeVim (and VIM out of the box), so potentially the work at least for those jump commands might not be too bad.
Anyone who wants this feature can feel free to get started on it. It would simply be too much work for me to port over every Vim plugin, but if you (or anyone else) wants to open up a WIP PR, or ask me questions on Slack, I'm happy to help you along the way. :)
Inspired by the recent addition of argument text objects #4653 I'm currently taking a shot at implementing the in ("inner next" such as cin(), an ("around next" such as can(), il ("inner last" such as cil(), and al ("around last" such as cal() commands from this plugin.
@Austin-Scott Sweet! Feel free to reach out if you need any guidance
Inspired by the recent addition of argument text objects #4653 I'm currently taking a shot at implementing the
in("inner next" such ascin(),an("around next" such ascan(),il("inner last" such ascil(), andal("around last" such ascal() commands from this plugin.
I've been looking into implementing the :normal command which would allow to create this type of text objects with operator-pending mode remaps (after PR #4735) which would allow to create remaps like onoremap in( :<C-u>normal! f(vi(<CR> and onoremap il( :<C-u>normal! F)vi(<CR>
It might take a while still.
Any news or progress here? - agree this would be super useful. In particular, the seeking behavior where I don't have to be within brackets or braces to make something like ci( work.
Sadly no. I haven't made any progress in the last few months. I still hope to eventual finish this, but I can't give any predictions as to when that will happen right now.
Most helpful comment
Inspired by the recent addition of argument text objects #4653 I'm currently taking a shot at implementing the
in("inner next" such ascin(),an("around next" such ascan(),il("inner last" such ascil(), andal("around last" such ascal() commands from this plugin.