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 | 14 | 
2 files changed, 85 insertions, 4 deletions
| diff --git a/plugins/vi-mode/README.md b/plugins/vi-mode/README.md new file mode 100644 index 000000000..8519a5592 --- /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 before the cursor +- `ctrl-w`      : While in *Insert mode*: delete word before 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 f2745b409..4424bb29a 100644 --- a/plugins/vi-mode/vi-mode.plugin.zsh +++ b/plugins/vi-mode/vi-mode.plugin.zsh @@ -16,10 +16,7 @@ function zle-keymap-select zle-line-init zle-line-finish {  # Ensure that the prompt is redrawn when the terminal size changes.  TRAPWINCH() { -  if [[ -o zle ]]; then -    zle reset-prompt -    zle -R -  fi +  zle && { zle reset-prompt; zle -R }  }  zle -N zle-line-init @@ -34,6 +31,15 @@ bindkey -v  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%}" | 
