fish_vi_key_bindings - set vi key bindings for fish

Synopsis

fish_vi_key_bindings
fish_vi_key_bindings [--no-erase] [INIT_MODE]

Description

fish_vi_key_bindings sets the vi key bindings for fish shell.

If a valid INIT_MODE is provided (insert, default, visual), then that mode will become the default . If no INIT_MODE is given, the mode defaults to insert mode.

The following parameters are available:

--no-erase

Does not clear previous set bindings

Further information on how to use vi mode.

Differences from Vim

Fish’s vi mode aims to be familiar to vim users, but there are some differences:

Word character handling

In vim, underscore (_) is treated as a keyword character by default, so word motions like w, b, and e treat foo_bar as a single word. In fish, underscore is treated as punctuation, so word motions stop at underscores. For example, pressing w on foo_bar in fish stops at the _, while in vim it would jump past the entire identifier.

The cw command

In vim, cw has special behavior: when the cursor is on a non-space character, it behaves like ce (change to end of word), but when the cursor is on a space, it behaves like dwi (delete word then insert).

In fish, cw always behaves like dwi - it deletes to the start of the next word (including trailing whitespace), then enters insert mode. To get vim’s cw behavior in fish, use ce instead.

Examples

To start using vi key bindings:

fish_vi_key_bindings

or set -g fish_key_bindings fish_vi_key_bindings in config.fish.