3f34ce4da4
* Update VI_KEYMAP on zle-line-finish. Fixes next prompt draw. * Also fix vi-mode prompt redraw in case previous prompt was canceled * Do not redraw fix prompt if VI_MODE_RESET_PROMPT_ON_MODE_CHANGE is unset * Use a local variable instead of global in function |
||
---|---|---|
.. | ||
README.md | ||
vi-mode.plugin.zsh |
vi-mode plugin
This plugin increase vi-like
zsh functionality.
To use it, add vi-mode
to the plugins array in your zshrc file:
plugins=(... vi-mode)
Settings
-
VI_MODE_RESET_PROMPT_ON_MODE_CHANGE
: controls whether the prompt is redrawn when
switching to a different input mode. If this is unset, the mode indicator will not
be updated when changing to a different mode.
Set it totrue
to enable it. For example:VI_MODE_RESET_PROMPT_ON_MODE_CHANGE=true
The default value is unset, unless
vi_mode_prompt_info
is used, in which case it'll
automatically be set totrue
. -
VI_MODE_SET_CURSOR
: controls whether the cursor style is changed when switching
to a different input mode. Set it totrue
to enable it (default: unset):VI_MODE_SET_CURSOR=true
-
MODE_INDICATOR
: controls the string displayed when the shell is in normal mode.
See Mode indicator for details.
Mode indicator
Normal mode is indicated with a red <<<
mark at the right prompt, when it
hasn't been defined by theme.
You can change this indicator by setting the MODE_INDICATOR
variable. This setting
supports Prompt Expansion sequences. For example:
MODE_INDICATOR="%F{yellow}+%f"
You can also use the vi_mode_prompt_info
function in your prompt, which will display
this mode indicator.
Key bindings
Use ESC
or CTRL-[
to enter Normal mode
.
NOTE: some of these key bindings are set by zsh by default when using a vi-mode keymap.
History
ctrl-p
: Previous command in historyctrl-n
: Next command in history/
: Search backward in historyn
: Repeat the last/
Vim edition
vv
: Edit current command line in Vim
NOTE: this used to be bound to v
. That is now the default (visual-mode
)
Movement
$
: To the end of the line^
: To the first non-blank character of the line0
: To the first character of the linew
: [count] words forwardW
: [count] WORDS forwarde
: Forward to the end of word [count] inclusiveE
: Forward to the end of WORD [count] inclusiveb
: [count] words backwardB
: [count] WORDS backwardt{char}
: Till before [count]'th occurrence of {char} to the rightT{char}
: Till before [count]'th occurrence of {char} to the leftf{char}
: To [count]'th occurrence of {char} to the rightF{char}
: To [count]'th occurrence of {char} to the left;
: Repeat latest f, t, F or T [count] times,
: Repeat latest f, t, F or T in opposite direction
Insertion
i
: Insert text before the cursorI
: Insert text before the first character in the linea
: Append text after the cursorA
: Append text at the end of the lineo
: Insert new command line below the current oneO
: Insert new command line above the current one
Delete and Insert
ctrl-h
: While in Insert mode: delete character before the cursorctrl-w
: While in Insert mode: delete word before the cursord{motion}
: Delete text that {motion} moves overdd
: Delete lineD
: Delete characters under the cursor until the end of the linec{motion}
: Delete {motion} text and start insertcc
: Delete line and start insertC
: Delete to the end of the line and start insertr{char}
: Replace the character under the cursor with {char}R
: Enter replace mode: Each character replaces existing onex
: Deletecount
characters under and after the cursorX
: Deletecount
characters before the cursor