Despite the fact that user installed 'vim-enhanced' package, the alias didn't stop notifying user that 'vim' is not installed till the shell was restarted. Newly, if /usr/bin/vim suddenly appears (vim-enhanced is freshly installed) the alias is mostly no-op and vim is used directly. On top of ^, if user touches the ~/.i-know-vim-is-vi file, 'vi' is silently started instead of 'vim' without the warning. Resolves: rhbz#1907800
31 lines
1 KiB
Bash
31 lines
1 KiB
Bash
__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
|
|
/usr/bin/vim-/usr/bin/vi)
|
|
# apply only when founded vim and vi are in expected dirs from distro
|
|
alias vi=vim
|
|
alias view="vim -R"
|
|
;;
|
|
-/usr/bin/vi)
|
|
# apply only if founded vi is in expected dir from distro
|
|
alias vim=__vi_internal_vim_alias
|
|
;;
|
|
esac
|
|
fi
|