diff options
author | Aaron LI <aaronly.me@gmail.com> | 2016-01-31 14:44:03 +0800 |
---|---|---|
committer | Aaron LI <aaronly.me@gmail.com> | 2016-01-31 14:44:03 +0800 |
commit | 57257edd192eaebb285d781bac1969f0cb667ddb (patch) | |
tree | c0d4023624b81b6d9b0062d4484711fe937cc637 | |
parent | b8100b88c4fa4edacd6bf3e34074ab8678a44f1c (diff) | |
download | dotfiles-57257edd192eaebb285d781bac1969f0cb667ddb.tar.bz2 |
Add 'vi-mode.zsh' from 'oh-my-zsh'
-rw-r--r-- | _zsh/bindkeys.zsh | 6 | ||||
-rw-r--r-- | _zsh/vi-mode.zsh | 53 | ||||
-rw-r--r-- | _zshrc | 1 |
3 files changed, 54 insertions, 6 deletions
diff --git a/_zsh/bindkeys.zsh b/_zsh/bindkeys.zsh index 781d260..07ca090 100644 --- a/_zsh/bindkeys.zsh +++ b/_zsh/bindkeys.zsh @@ -15,11 +15,5 @@ bindkey "[A" history-search-backward # up arrow bindkey "^D" delete-char # ctrl-d bindkey "^F" forward-char # ctrl-f bindkey "^B" backward-char # ctrl-b -bindkey '^P' up-history -bindkey '^N' down-history -bindkey '^W' backward-kill-word - -## vi mode -bindkey -v # vim: set ts=8 sw=4 tw=0 fenc=utf-8 ft=zsh: # diff --git a/_zsh/vi-mode.zsh b/_zsh/vi-mode.zsh new file mode 100644 index 0000000..d786102 --- /dev/null +++ b/_zsh/vi-mode.zsh @@ -0,0 +1,53 @@ +# +# zsh/vi-mode.zsh +# +# Credits: +# https://github.com/robbyrussell/oh-my-zsh/blob/master/plugins/vi-mode/vi-mode.plugin.zsh +# 2015-11-18 +# + +# Updates editor information when the keymap changes. +function zle-keymap-select() { + zle reset-prompt + zle -R +} + +# Ensure that the prompt is redrawn when the terminal size changes. +TRAPWINCH() { + zle && { zle reset-prompt; zle -R } +} + +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%}" +fi + +function vi_mode_prompt_info() { + echo "${${KEYMAP/vicmd/$MODE_INDICATOR}/(main|viins)/}" +} + +# define right prompt, if it wasn't defined by a theme +if [[ "$RPS1" == "" && "$RPROMPT" == "" ]]; then + RPS1='$(vi_mode_prompt_info)' +fi + +# vim: set ts=8 sw=4 tw=0 fenc=utf-8 ft=zsh: # @@ -29,6 +29,7 @@ source ~/.zsh/prompt.zsh source ~/.zsh/completion.zsh source ~/.zsh/aliases.zsh source ~/.zsh/bindkeys.zsh +source ~/.zsh/vi-mode.zsh source ~/.zsh/functions.zsh source ~/.zsh/history.zsh source ~/.zsh/hooks.zsh |