aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--_zsh/bindkeys.zsh6
-rw-r--r--_zsh/vi-mode.zsh53
-rw-r--r--_zshrc1
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: #
diff --git a/_zshrc b/_zshrc
index 1a54197..b647900 100644
--- a/_zshrc
+++ b/_zshrc
@@ -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