The :Subvert command lets us generate a pattern based on
:Subvert /pumpkin
This has the same effect as the following search:
/\v\C%(PUMPKIN|Pumpkin|pumpkin)
The :Subvert command can also accept a comma-seperated list of alternatives wrapped in braces. These are assembled to form a pattern. For example, we could search for both ‘mouse’ and ‘mice’ by running the command:
:S/m{ouse,ice}
If we specify a pattern with words separated by underscores, the :Subvert command automatically matches the mixed case alternative too. For example:
:S/insert_mode
Would match insert_mode and InsertMode.
The :Subvert command comes in many different forms. In it’s most basic form, it resembles plain search. If you specify a file (or glob), then the command resembles :vimgrep. When a replacement field is specified, :Subvert behaves like the built-in :substitute command.
| Command | effect |
|---|---|
:S[ubvert]/pattern |
search in the current buffer |
:S[ubvert]/pattern/ {file} ... |
search in the specified file(s), collecting results in quickfix list |
:S[ubvert]/pattern/replacement/[flags] |
substitute in the current buffer |
Episode 48 shows how to use the :S/pattern/replacement/ form.
Coercing variable caseing
The cr mapping stands for coerce. It lets you switch between different casing styles:
| Mapping | effect |
|---|---|
crc |
coerce to camelCase |
crm |
coerce to MixedCase |
crs (also cr_) |
coerce to snake_case |
cru |
coerce to SNAKE_UPPERCASE |
cr- |
coerce to dash-case |
Further reading
- abolish by tpope
- repeat by tpope
:help :Subvert:help abolish-search:help abolish-coercion:help c_CTRL-R:help /\C- force case sensitivity in a search pattern:help /\v- use very-magic mode