diff --git a/vim.sh b/vim.sh
index 58c3300..42282dc 100644
--- a/vim.sh
+++ b/vim.sh
@@ -1,3 +1,20 @@
+__vi_internal_vim_alias()
+(
+    # if user installs vim-enanced and alias is already set
+    test -f /usr/bin/vim && exec vim "$@"
+
+    # if user hates the "No vim found .." interrupting message
+    test -f "$HOME"/.i-know-vim-is-vi && exec vi "$@"
+
+    if [ -n "${ZSH_VERSION-}" ]; then
+        read -t 10 -s -k 1 '?No vim found, using vi, press ENTER to continue...' && echo ''
+    else
+        read -rep $'No vim found, using vi, press ENTER to continue...\n' -n1 -t 10 -s
+    fi
+    exec vi "$@"
+)
+
+
 if [ -n "${BASH_VERSION-}" -o -n "${KSH_VERSION-}" -o -n "${ZSH_VERSION-}" ]; then
   # This will avoid user defined aliases and possibly stuff defined earlier in the PATH.
   case "$(command -v vim)-$(command -v vi)" in
@@ -8,11 +25,7 @@ if [ -n "${BASH_VERSION-}" -o -n "${KSH_VERSION-}" -o -n "${ZSH_VERSION-}" ]; th
         ;;
     -/usr/bin/vi)
         # apply only if founded vi is in expected dir from distro
-        if [ -n "${ZSH_VERSION-}" ]; then
-          alias vim="read -t 10 -s -k 1 '?No vim found, using vi, press ENTER to continue...' && echo '' && vi"
-        else
-          alias vim="read -rep $'No vim found, using vi, press ENTER to continue...\n' -n1 -t 10 -s && vi"
-        fi
+        alias vim=__vi_internal_vim_alias
         ;;
   esac
 fi