diff options
Diffstat (limited to 'plugins/vi-mode')
| -rw-r--r-- | plugins/vi-mode/README.md | 75 | ||||
| -rw-r--r-- | plugins/vi-mode/vi-mode.plugin.zsh | 20 | 
2 files changed, 95 insertions, 0 deletions
diff --git a/plugins/vi-mode/README.md b/plugins/vi-mode/README.md new file mode 100644 index 000000000..03e67cca2 --- /dev/null +++ b/plugins/vi-mode/README.md @@ -0,0 +1,75 @@ +vi-mode +======= +This plugin increase `vi-like` zsh functionality. + +Use `ESC` or `CTRL-[` to enter `Normal mode`. + + +History +------- + +- `ctrl-p` : Previous command in history +- `ctrl-n` : Next command in history +- `/`      : Search backward in history +- `n`      : Repeat the last `/` + + +Mode indicators +--------------- + +*Normal mode* is indicated with red `<<<` mark at the right prompt, when it +wasn't defined by theme. + + +Vim edition +----------- + +- `v`   : Edit current command line in Vim + + +Movement +-------- + +- `$`   : To the end of the line +- `^`   : To the first non-blank character of the line +- `0`   : To the first character of the line +- `w`   : [count] words forward +- `W`   : [count] WORDS forward +- `e`   : Forward to the end of word [count] inclusive +- `E`   : Forward to the end of WORD [count] inclusive +- `b`   : [count] words backward +- `B`   : [count] WORDS backward +- `t{char}`   : Till before [count]'th occurrence of {char} to the right +- `T{char}`   : Till before [count]'th occurrence of {char} to the left +- `f{char}`   : To [count]'th occurrence of {char} to the right +- `F{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 cursor +- `I`   : Insert text before the first character in the line +- `a`   : Append text after the cursor +- `A`   : Append text at the end of the line +- `o`   : Insert new command line below the current one +- `O`   : Insert new command line above the current one + + +Delete and Insert +----------------- + +- `ctrl-h`      : While in *Insert mode*: delete character after the cursor +- `ctrl-w`      : While in *Insert mode*: delete word after the cursor +- `d{motion}`   : Delete text that {motion} moves over +- `dd`          : Delete line +- `D`           : Delete characters under the cursor until the end of the line +- `c{motion}`   : Delete {motion} text and start insert +- `cc`          : Delete line and start insert +- `C`           : Delete to the end of the line and start insert +- `r{char}`     : Replace the character under the cursor with {char} +- `R`           : Enter replace mode: Each character replaces existing one +- `x`           : Delete [count] characters under and after the cursor +- `X`           : Delete [count] characters before the cursor diff --git a/plugins/vi-mode/vi-mode.plugin.zsh b/plugins/vi-mode/vi-mode.plugin.zsh index a06100472..4424bb29a 100644 --- a/plugins/vi-mode/vi-mode.plugin.zsh +++ b/plugins/vi-mode/vi-mode.plugin.zsh @@ -14,12 +14,32 @@ function zle-keymap-select zle-line-init zle-line-finish {    zle -R  } +# Ensure that the prompt is redrawn when the terminal size changes. +TRAPWINCH() { +  zle && { zle reset-prompt; zle -R } +} +  zle -N zle-line-init  zle -N zle-line-finish  zle -N zle-keymap-select +zle -N edit-command-line +  bindkey -v +# allow v to edit the command line (standard behaviour) +autoload -Uz edit-command-line +bindkey -M vicmd 'v' edit-command-line + +# allow ctrl-p, ctrl-n for navigate history (standard behaviour) +bindkey '^P' up-history +bindkey '^N' down-history + +# allow ctrl-h, ctrl-w, ctrl-? for char and word deletion (standard behaviour) +bindkey '^?' backward-delete-char +bindkey '^h' backward-delete-char +bindkey '^w' backward-kill-word +  # if mode indicator wasn't setup by theme, define default  if [[ "$MODE_INDICATOR" == "" ]]; then    MODE_INDICATOR="%{$fg_bold[red]%}<%{$fg[red]%}<<%{$reset_color%}"  | 
