Vi mode
What
Display the current Vi mode (insert / normal / visual …) in the prompt. Useful
when using ZSH keymaps via bindkey -v, PowerShell PSReadLine
-EditMode Vi, or fish vi key bindings so you can tell at a
glance which mode you are in.
In ZSH, adding this segment automatically registers a zle-keymap-select hook.
In PowerShell, it registers a PSReadLine Vi mode change handler.
In fish, it registers an --on-variable fish_bind_mode handler
(only when vi or hybrid key bindings are active). All of them re-render the
prompt every time the active mode changes.
PowerShell support sets PSReadLine's ViModeIndicator to Script, replacing
cursor-shape mode indicators such as Cursor. The mode is then shown by this
segment in the prompt instead.
fish support overrides fish_mode_prompt to hook into bind mode changes and so
that fish's built-in [N] / [I] mode indicator does not show up next to the
mode rendered by this segment. Make sure nothing else in your config overrides
fish_mode_prompt.
Sample Configuration
- json
- yaml
- toml
Template (info)
{{ .Mode }}
Properties
| Name | Type | Description |
|---|---|---|
.Mode | string | the normalized mode: insert, normal, visual, viopp, replace, or the raw keymap when unmapped |
.Keymap | string | the raw mode value ($KEYMAP in ZSH, e.g. main, viins, vicmd, visual, viopp; viins or vicmd in PowerShell PSReadLine; viins, vicmd, visual or replace in fish) |