vi-add-eol
(unbound) (A
) (unbound)Move to the end of the line and enter insert mode.
vi-add-next
(unbound) (a
) (unbound)Enter insert mode after the current cursor position, without changing lines.
backward-delete-char
(^H ^?
) (unbound) (unbound)Delete the character behind the cursor.
vi-backward-delete-char
(unbound) (X
) (^H
)Delete the character behind the cursor, without changing lines. If in insert mode, this won’t delete past the point where insert mode was last entered.
backward-delete-word
Delete the word behind the cursor.
backward-kill-line
Kill from the beginning of the line to the cursor position.
backward-kill-word
(^W ESC-^H ESC-^?
) (unbound) (unbound)Kill the word behind the cursor.
vi-backward-kill-word
(unbound) (unbound) (^W
)Kill the word behind the cursor, without going past the point where insert mode was last entered.
capitalize-word
(ESC-C ESC-c
) (unbound) (unbound)Capitalize the current word and move past it.
vi-change
(unbound) (c
) (unbound)Read a movement command from the keyboard, and kill
from the cursor position to the endpoint of the movement.
Then enter insert mode.
If the command is vi-change
, change the current line.
For compatibility with vi, if the command is vi-forward-word
or vi-forward-blank-word
, the whitespace after the word is not
included. If you prefer the more consistent behaviour with the
whitespace included use the following key binding:
bindkey -a -s cw dwi
vi-change-eol
(unbound) (C
) (unbound)Kill to the end of the line and enter insert mode.
vi-change-whole-line
(unbound) (S
) (unbound)Kill the current line and enter insert mode.
copy-region-as-kill
(ESC-W ESC-w
) (unbound) (unbound)Copy the area from the cursor to the mark to the kill buffer.
If called from a ZLE widget function in the form ‘zle
copy-region-as-kill
string’ then string will be taken as the
text to copy to the kill buffer. The cursor, the mark and the text on the
command line are not used in this case.
copy-prev-word
(ESC-^_
) (unbound) (unbound)Duplicate the word to the left of the cursor.
copy-prev-shell-word
Like copy-prev-word
, but the word is found by using shell parsing,
whereas copy-prev-word
looks for blanks. This makes a difference
when the word is quoted and contains spaces.
vi-delete
(unbound) (d
) (unbound)Read a movement command from the keyboard, and kill
from the cursor position to the endpoint of the movement.
If the command is vi-delete
, kill the current line.
delete-char
Delete the character under the cursor.
vi-delete-char
(unbound) (x
) (unbound)Delete the character under the cursor, without going past the end of the line.
delete-word
Delete the current word.
down-case-word
(ESC-L ESC-l
) (unbound) (unbound)Convert the current word to all lowercase and move past it.
vi-down-case
(unbound) (gu
) (unbound)Read a movement command from the keyboard, and convert all characters
from the cursor position to the endpoint of the movement to lowercase.
If the movement command is vi-down-case
, swap the case of all
characters on the current line.
kill-word
(ESC-D ESC-d
) (unbound) (unbound)Kill the current word.
gosmacs-transpose-chars
Exchange the two characters behind the cursor.
vi-indent
(unbound) (>
) (unbound)Indent a number of lines.
vi-insert
(unbound) (i
) (unbound)Enter insert mode.
vi-insert-bol
(unbound) (I
) (unbound)Move to the first non-blank character on the line and enter insert mode.
vi-join
(^X^J
) (J
) (unbound)Join the current line with the next one.
kill-line
(^K
) (unbound) (unbound)Kill from the cursor to the end of the line. If already on the end of the line, kill the newline character.
vi-kill-line
(unbound) (unbound) (^U
)Kill from the cursor back to wherever insert mode was last entered.
vi-kill-eol
(unbound) (D
) (unbound)Kill from the cursor to the end of the line.
kill-region
Kill from the cursor to the mark.
kill-buffer
(^X^K
) (unbound) (unbound)Kill the entire buffer.
kill-whole-line
(^U
) (unbound) (unbound)Kill the current line.
vi-match-bracket
(^X^B
) (%
) (unbound)Move to the bracket character (one of {}
, ()
or []
) that
matches the one under the cursor.
If the cursor is not on a bracket character, move forward without going
past the end of the line to find one, and then go to the matching bracket.
vi-open-line-above
(unbound) (O
) (unbound)Open a line above the cursor and enter insert mode.
vi-open-line-below
(unbound) (o
) (unbound)Open a line below the cursor and enter insert mode.
vi-oper-swap-case
(unbound) (g~
) (unbound)Read a movement command from the keyboard, and swap
the case of all characters
from the cursor position to the endpoint of the movement.
If the movement command is vi-oper-swap-case
,
swap the case of all characters on the current line.
overwrite-mode
(^X^O
) (unbound) (unbound)Toggle between overwrite mode and insert mode.
vi-put-before
(unbound) (P
) (unbound)Insert the contents of the kill buffer before the cursor. If the kill buffer contains a sequence of lines (as opposed to characters), paste it above the current line.
vi-put-after
(unbound) (p
) (unbound)Insert the contents of the kill buffer after the cursor. If the kill buffer contains a sequence of lines (as opposed to characters), paste it below the current line.
put-replace-selection
(unbound) (unbound) (unbound)Replace the contents of the current region or selection with the contents of the kill buffer. If the kill buffer contains a sequence of lines (as opposed to characters), the current line will be split by the pasted lines.
quoted-insert
(^V
) (unbound) (unbound)Insert the next character typed into the buffer literally. An interrupt character will not be inserted.
vi-quoted-insert
(unbound) (unbound) (^Q ^V
)Display a ‘^
’ at the cursor position, and
insert the next character typed into the buffer literally.
An interrupt character will not be inserted.
quote-line
(ESC-'
) (unbound) (unbound)Quote the current line; that is, put a ‘'
’ character at the
beginning and the end, and convert all ‘'
’ characters
to ‘'\{No value for `dsq'}
’.
quote-region
(ESC-"
) (unbound) (unbound)Quote the region from the cursor to the mark.
vi-replace
(unbound) (R
) (unbound)Enter overwrite mode.
vi-repeat-change
(unbound) (.
) (unbound)Repeat the last vi mode text modification. If a count was used with the modification, it is remembered. If a count is given to this command, it overrides the remembered count, and is remembered for future uses of this command. The cut buffer specification is similarly remembered.
vi-replace-chars
(unbound) (r
) (unbound)Replace the character under the cursor with a character read from the keyboard.
self-insert
(printable characters) (unbound) (printable characters and some control characters)Insert a character into the buffer at the cursor position.
self-insert-unmeta
(ESC-^I ESC-^J ESC-^M
) (unbound) (unbound)Insert a character into the buffer after stripping the meta bit and converting ^M to ^J.
vi-substitute
(unbound) (s
) (unbound)Substitute the next character(s).
vi-swap-case
(unbound) (~
) (unbound)Swap the case of the character under the cursor and move past it.
transpose-chars
(^T
) (unbound) (unbound)Exchange the two characters to the left of the cursor if at end of line, else exchange the character under the cursor with the character to the left.
transpose-words
(ESC-T ESC-t
) (unbound) (unbound)Exchange the current word with the one before it.
With a positive numeric argument N, the word around the cursor, or following it if the cursor is between words, is transposed with the preceding N words. The cursor is put at the end of the resulting group of words.
With a negative numeric argument -N, the effect is the same as using a positive argument N except that the original cursor position is retained, regardless of how the words are rearranged.
vi-unindent
(unbound) (<
) (unbound)Unindent a number of lines.
vi-up-case
(unbound) (gU
) (unbound)Read a movement command from the keyboard, and convert all characters
from the cursor position to the endpoint of the movement to lowercase.
If the movement command is vi-up-case
, swap the case of all
characters on the current line.
up-case-word
(ESC-U ESC-u
) (unbound) (unbound)Convert the current word to all caps and move past it.
yank
(^Y
) (unbound) (unbound)Insert the contents of the kill buffer at the cursor position.
yank-pop
(ESC-y
) (unbound) (unbound)Remove the text just yanked, rotate the kill-ring (the history of
previously killed text) and yank the new top. Only works following
yank
, vi-put-before
, vi-put-after
or yank-pop
.
vi-yank
(unbound) (y
) (unbound)Read a movement command from the keyboard, and copy the region
from the cursor position to the endpoint of the movement
into the kill buffer.
If the command is vi-yank
, copy the current line.
vi-yank-whole-line
(unbound) (Y
) (unbound)Copy the current line into the kill buffer.
vi-yank-eol
Copy the region from the cursor position to the end of the line into the kill buffer. Arguably, this is what Y should do in vi, but it isn’t what it actually does.