More Vi Motions
June 24, 2021 ยท View on GitHub
Add more Vi Motions
Motions added:
| New* | Map | Keybinding | Motion |
|---|---|---|---|
| No | vicmd viins | \e[H \e[F (Home/End) | beginning/end of line |
| No | vicmd viopp | a' a" a` | select a quoted string or backticks |
| No | vicmd viopp | i' i" i` | select in a quoted string or backticks |
| No | vicmd viopp | a( a[ a{ a< ab a) a] a} a> aB | select a bracketed segment |
| No | vicmd viopp | i( i[ i{ i< ib i) i] i} i> iB | select in a bracketed segment |
| No** | vicmd | cs ds ys | change/delete/add surrounding quotes/brackets |
| No | visual | S | add surrounding quotes/brackets |
| Yes | viopp | v[motion] | Force motion character-wise, or toggle exclusivity (see :h forced-motion in Vim) |
| Yes | vicmd viopp visual | ) ( g) g( | move forward/back to start/end of command |
| Yes | vicmd viopp | as aS | select a command |
| Yes | vicmd viopp | is iS | select in a command (exclude terminating ; and control flow words) |
| Yes | vicmd viopp visual | (Not enabled by default) | Move forward/back to start/end of $WORDCHARS-dependant words |
| Yes | vicmd viopp visual | (Not enabled by default) | Move forward/back to start/end of shell words |
*("New": Plugins marked as "not new" are distributed with Zsh and are simply loaded by this plugin. Plugins marked as "new" are written and maintained in this repo.)
**(The cs ds ys commands don't work well by default due to KEYTIMEOUT problems/conflicting with the c d y commands. I wrap c d y here, this lets me fix this problem.)
Future additions(?):
Select in/a command list (Note, [;] is any kind of command terminator)
- Between
[;]while/[;]until/[;]repeatand[;]do/{/( - Between
[;]selectand[;]do/{/( - Between
[;]caseand[;]esac - Between
[;]doand[;]done - Between
[;]if/[;]elifand[;]then - Between
[;]thenand[;]elif/[;]fi - Between
[;]{and}[;]or[;](and)[;]