This is one word under Vim's definition:
CamelCaseACRONYMWords_underscore1234
w--------------------------------->w
e--------------------------------->e
b<---------------------------------b
With this plugin, this becomes six words:
CamelCaseACRONYMWords_underscore1234
w--->w-->w----->w---->w-------->w->w
e-->e-->e----->e--->e--------->e-->e
b<---b<--b<-----b<----b<--------b<-b
A word (lowercase) is any of the following:
word |
Example |
|---|---|
| Camel case words | [Camel][Case] |
| Acronyms | [HTML]And[CSS] |
| Uppercase words | [UPPERCASE] [WORDS] |
| Lowercase words | [lowercase] [words] |
| Hexadecimal literals | [0x00ffFF] [0x0f] |
| Octal literals | [0o644] [0o0755] |
| Binary literals | [0b01] [0b0011] |
| Regular numbers | [1234] [5678] |
| Other characters | [~!@#$] |
A WORD (uppercase) is any sequence of non-space characters separated by
spaces.
Default word/WORD mappings:
| Mode | Mapping |
|---|---|
nxo |
w/W |
nxo |
b/B |
nxo |
e/E |
nxo |
ge/gE |
xo |
aw/aW |
xo |
iw/iW |
c |
<C-R><C-W>/<C-R><C-A> |
Use g:wordmotion_prefix to apply a common prefix to each of the default word
motion mappings.
E.g.,
let g:wordmotion_prefix = '<Leader>'
NOTE: does not apply to the command line mode <C-R><C-W> and <C-R><C-A>
mappings.
Use g:wordmotion_mappings to individually replace the default word motion
mappings.
E.g.,
let g:wordmotion_mappings = {
\ 'w' : '<M-w>',
\ 'b' : '<M-b>',
\ 'e' : '<M-e>',
\ 'ge' : 'g<M-e>',
\ 'aw' : 'a<M-w>',
\ 'iw' : 'i<M-w>',
\ '<C-R><C-W>' : '<C-R><M-w>'
\ }
Unspecified entries will still use the default mappings.
Set the value to an empty string to disable the mapping.
NOTE: this overrides g:wordmotion_prefix.
Use g:wordmotion_spaces (default '_') to designate extra space characters.
E.g.,
let g:wordmotion_spaces = '_-.'
will produce the following result:
foo_bar-baz.qux
w-->w-->w-->w>w
All options can be applied dynamically by reloading the plugin.
E.g., to disable the w mapping:
let g:wordmotion_mappings['w'] = ''
unlet g:loaded_wordmotion
runtime plugin/wordmotion.vim
then later re-enable it
let g:wordmotion_mappings['w'] = '<M-w>'
unlet g:loaded_wordmotion
runtime plugin/wordmotion.vim
There are some special cases with how Vim's word motions work.
E.g.,
Vim:
^foo [b]ar$ -> dw -> ^foo[ ]$
^ baz$ ^ baz$
^[f]oo bar$ -> cw -> ^[ ]bar$
This plugin:
^foo [b]ar$ -> dw -> ^foo [b]az$
^ baz$
^[f]oo bar$ -> cw -> ^[b]ar$
This plugin faithfully follows the motion of w when executing dw and cw,
while Vim replaces these two special cases with the behavior of de and ce,
respectively.
If you want to restore Vim's special case behavior with dw and cw, you can
do this:
nmap dw de
nmap cw ce
nmap dW dE
nmap cW cE