From b609aa0e6c981f2039d777687cb01a84587f6edc Mon Sep 17 00:00:00 2001
From: Jim Hester <james.f.hester@gmail.com>
Date: Thu, 20 Sep 2012 08:03:09 -0400
Subject: [PATCH] Fix to restore bindings after switching to vi-mode

the vi-mode plugin destroys any bindings made before it is sourced due to the
'bindkey -v' call to switch to using vi-mode.  This patch saves the bindings
before invoking 'bindkey -v' then rebinds them afterwards, this fixes a number
of outstanding issues due to people using vi-mode and having things in oh-my-zsh
break due to the bindings being destroyed
---
 plugins/vi-mode/vi-mode.plugin.zsh | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/plugins/vi-mode/vi-mode.plugin.zsh b/plugins/vi-mode/vi-mode.plugin.zsh
index c47ab7211..d29eb1dda 100644
--- a/plugins/vi-mode/vi-mode.plugin.zsh
+++ b/plugins/vi-mode/vi-mode.plugin.zsh
@@ -5,7 +5,12 @@ function zle-line-init zle-keymap-select {
 zle -N zle-line-init
 zle -N zle-keymap-select
 
+#changing mode clobbers the keybinds, so store the keybinds before and execute 
+#them after
+binds=`bindkey -L`
 bindkey -v
+for bind in ${(@f)binds}; do eval $bind; done
+unset binds
 
 # if mode indicator wasn't setup by theme, define default
 if [[ "$MODE_INDICATOR" == "" ]]; then