diff --git a/view_wrapper b/view_wrapper
new file mode 100644
index 0000000..f4c9b23
--- /dev/null
+++ b/view_wrapper
@@ -0,0 +1,3 @@
+#!/usr/bin/bash
+
+/usr/bin/vim -R "$@"
diff --git a/vim.csh b/vim.csh
deleted file mode 100644
index 47df221..0000000
--- a/vim.csh
+++ /dev/null
@@ -1,20 +0,0 @@
-# we need to use which twice - first for checking if
-# the command doesn't fail, the use it if doesn't fail
-set vim_cond = `command -v vim`
-set vi_cond = `command -v vi`
-
-switch ( $vim_cond-$vi_cond )
-  case /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'
-      breaksw
-  case -/usr/bin/vi:
-      # apply only if founded vi is in expected dir from distro
-      alias vim vi
-      breaksw
-endsw
-
-# just in case
-unset vim_cond
-unset vi_cond
diff --git a/vim.fish b/vim.fish
deleted file mode 100644
index a35220d..0000000
--- a/vim.fish
+++ /dev/null
@@ -1,25 +0,0 @@
-# This will avoid user defined aliases and possibly stuff defined earlier in the PATH.
-# Redirecting is for the case when the binary is missing.
-set vim_cond (command -v vim)
-set vi_cond (command -v vi)
-
-switch "$vim_cond-$vi_cond"
-  case /usr/bin/vim-/usr/bin/vi
-      # apply only if founded vim and vi are in the expected dir from distro
-      function vi
-        command vim $argv
-      end
-
-      function view
-        command vim -R $argv
-      end
-  case -/usr/bin/vi
-      # apply only when no vim is installed and founded vi is in the expected dir from distro
-      function vim
-        command vi $argv
-      end
-end
-
-# just in case
-set -e vim_cond
-set -e vi_cond
diff --git a/vim.sh b/vim.sh
deleted file mode 100644
index 2616693..0000000
--- a/vim.sh
+++ /dev/null
@@ -1,32 +0,0 @@
-__vi_internal_vim_alias()
-(
-  # run vim if installed
-  test -f /usr/bin/vim && exec /usr/bin/vim "$@"
-
-  # run vi otherwise
-  test -f /usr/bin/vi && exec /usr/bin/vi "$@"
-)
-
-__view_internal_vim_alias()
-(
-  # run vim -R instead of view if vim installed
-  test -f /usr/bin/vim && exec /usr/bin/vim -R "$@"
-
-  # run view otherwise
-  test -f /usr/bin/view && exec /usr/bin/view "$@"
-)
-
-
-if [ -n "${BASH_VERSION-}" -o -n "${KSH_VERSION-}" -o -n "${ZSH_VERSION-}" ]; then
-  # This will avoid user defined aliases
-  case "$(command -v vim)-$(command -v vi)" in
-    "/usr/bin/vim-/usr/bin/vi" | "-/usr/bin/vi")
-        # apply only when founded vim and vi are in expected dirs from distro
-        # we need to call a shell function to avoid shell restarts when vi/vim
-        # is being installed/uninstalled
-        alias vi=__vi_internal_vim_alias
-        alias view=__view_internal_vim_alias
-        alias vim=__vi_internal_vim_alias
-        ;;
-  esac
-fi
diff --git a/vim.spec b/vim.spec
index ce7d61b..3d02476 100644
--- a/vim.spec
+++ b/vim.spec
@@ -21,26 +21,26 @@ Summary: The VIM editor
 URL:     http://www.vim.org/
 Name: vim
 Version: %{baseversion}.%{patchlevel}
-Release: 2%{?dist}
+Release: 3%{?dist}
 License: Vim and MIT
 Source0: ftp://ftp.vim.org/pub/vim/unix/vim-%{baseversion}-%{patchlevel}.tar.bz2
-Source1: vim.sh
-Source2: vim.csh
-Source4: virc
-Source5: vimrc
-Source7: gvim16.png
-Source8: gvim32.png
-Source9: gvim48.png
-Source10: gvim64.png
+Source1: virc
+Source2: vimrc
+Source3: gvim16.png
+Source4: gvim32.png
+Source5: gvim48.png
+Source6: gvim64.png
+Source7: spec-template.new
+Source8: macros.vim
+Source9: vim-default-editor.sh
+Source10: vim-default-editor.csh
+Source11: vim-default-editor.fish
+Source12: view_wrapper
+
 %if %{withvimspell}
-Source13: vim-spell-files.tar.bz2
+Source100: vim-spell-files.tar.bz2
 %endif
-Source14: spec-template.new
-Source15: macros.vim
-Source16: vim-default-editor.sh
-Source17: vim-default-editor.csh
-Source18: vim-default-editor.fish
-Source19: vim.fish
+
 
 Patch2002: vim-7.0-fixkeys.patch
 Patch2003: vim-7.4-specsyntax.patch
@@ -130,6 +130,8 @@ Conflicts: %{name}-common < %{epoch}:8.1.1-1
 Conflicts: vim-enhanced < 2:8.2.2146-2
 Provides: vi
 Provides: %{_bindir}/vi
+# needs alternatives for post and preun scriptlets
+Requires: alternatives
 
 %description minimal
 VIM (VIsual editor iMproved) is an updated and improved version of the
@@ -151,6 +153,8 @@ Provides: bundled(libvterm)
 Provides: vim
 Provides: %{_bindir}/mergetool
 Provides: %{_bindir}/vim
+# needs alternatives for post and preun scriptlets
+Requires: alternatives
 Requires: vim-common = %{epoch}:%{version}-%{release} which
 # suggest python3, python2, lua, ruby and perl packages because of their 
 # embedded functionality in Vim/GVim
@@ -255,7 +259,7 @@ perl -pi -e "s,bin/nawk,bin/awk,g" runtime/tools/mve.awk
 
 # install spell files
 %if %{withvimspell}
-%{__tar} xjf %{SOURCE13}
+%{__tar} xjf %{SOURCE100}
 %endif
 
 %patch3000 -p1
@@ -402,7 +406,7 @@ cp vim enhanced-vim
 mkdir -p %{buildroot}/%{_bindir}
 mkdir -p %{buildroot}/%{_datadir}/%{name}/vimfiles/{after,autoload,colors,compiler,doc,ftdetect,ftplugin,indent,keymap,lang,plugin,print,spell,syntax,tutor}
 mkdir -p %{buildroot}/%{_datadir}/%{name}/vimfiles/after/{autoload,colors,compiler,doc,ftdetect,ftplugin,indent,keymap,lang,plugin,print,spell,syntax,tutor}
-cp -f %{SOURCE14} %{buildroot}/%{_datadir}/%{name}/vimfiles/template.spec
+cp -f %{SOURCE7} %{buildroot}/%{_datadir}/%{name}/vimfiles/template.spec
 cp runtime/doc/uganda.txt LICENSE
 # Those aren't Linux info files but some binary files for Amiga:
 rm -f README*.info
@@ -413,21 +417,23 @@ cd src
 # and put the stripped files into correct dirs. Build system (koji/brew) 
 # does it for us, so there is no need to do it in Vim
 %make_install BINDIR=%{_bindir} VIMRCLOC=/etc VIMRUNTIMEDIR=/usr/share/vim/%{vimdir} STRIP=/bin/true
+# make install creates vim binary and view symlink, they will be symlinks from alternatives
+# so remove them here
+%{_bindir}/rm -f %{buildroot}%{_bindir}/{vim,view}
 make installgtutorbin  DESTDIR=%{buildroot} BINDIR=%{_bindir} VIMRCLOC=/etc VIMRUNTIMEDIR=/usr/share/vim/%{vimdir}
 mkdir -p %{buildroot}%{_datadir}/icons/hicolor/{16x16,32x32,48x48,64x64}/apps
-install -m755 minimal-vim %{buildroot}%{_bindir}/vi
-install -m755 enhanced-vim %{buildroot}%{_bindir}/vim
+install -m755 minimal-vim %{buildroot}%{_bindir}/vi.origin
+install -m755 enhanced-vim %{buildroot}%{_bindir}/vim.origin
 install -m755 gvim %{buildroot}%{_bindir}/gvim
-install -p -m644 %{SOURCE7} \
+install -m755 %{SOURCE12} %{buildroot}%{_bindir}/view_wrapper
+install -p -m644 %{SOURCE3} \
    %{buildroot}%{_datadir}/icons/hicolor/16x16/apps/gvim.png
-install -p -m644 %{SOURCE8} \
+install -p -m644 %{SOURCE4} \
    %{buildroot}%{_datadir}/icons/hicolor/32x32/apps/gvim.png
-install -p -m644 %{SOURCE9} \
+install -p -m644 %{SOURCE5} \
    %{buildroot}%{_datadir}/icons/hicolor/48x48/apps/gvim.png
-install -p -m644 %{SOURCE10} \
+install -p -m644 %{SOURCE6} \
    %{buildroot}%{_datadir}/icons/hicolor/64x64/apps/gvim.png
-#cp -f %{SOURCE17} %{buildroot}/%{_datadir}/%{name}/%{vimdir}/ftplugin/spec.vim
-#cp -f %{SOURCE18} %{buildroot}/%{_datadir}/%{name}/%{vimdir}/syntax/spec.vim
 
 # Register as an application to be visible in the software center
 #
@@ -473,12 +479,11 @@ SentUpstream: 2014-05-22
 EOF
 
 ( cd %{buildroot}
-  ln -sf vi ./%{_bindir}/rvi
-  ln -sf vi ./%{_bindir}/rview
-  ln -sf vi ./%{_bindir}/view
-  ln -sf vi ./%{_bindir}/ex
-  ln -sf vim ./%{_bindir}/rvim
-  ln -sf vim ./%{_bindir}/vimdiff
+  ln -sf vi.origin ./%{_bindir}/rvi
+  ln -sf vi.origin ./%{_bindir}/rview
+  ln -sf vi.origin ./%{_bindir}/ex
+  ln -sf vim.origin ./%{_bindir}/rvim
+  ln -sf vim.origin ./%{_bindir}/vimdiff
   perl -pi -e "s,%{buildroot},," .%{_mandir}/man1/vim.1 .%{_mandir}/man1/vimtutor.1
   rm -f .%{_mandir}/man1/rvim.1
   cp -p .%{_mandir}/man1/vim.1 .%{_mandir}/man1/vi.1
@@ -539,19 +544,13 @@ chmod 644 %{buildroot}/%{_datadir}/%{name}/%{vimdir}/doc/vim2html.pl \
 chmod 644 ../runtime/doc/vim2html.pl
 
 mkdir -p %{buildroot}/%{_sysconfdir}/profile.d
-install -p -m644 %{SOURCE1} %{buildroot}/%{_sysconfdir}/profile.d/vi.sh
-install -p -m644 %{SOURCE1} %{buildroot}/%{_sysconfdir}/profile.d/vim.sh
-install -p -m644 %{SOURCE2} %{buildroot}/%{_sysconfdir}/profile.d/vi.csh
-install -p -m644 %{SOURCE2} %{buildroot}/%{_sysconfdir}/profile.d/vim.csh
-install -p -m644 %{SOURCE16} %{buildroot}/%{_sysconfdir}/profile.d/vim-default-editor.sh
-install -p -m644 %{SOURCE17} %{buildroot}/%{_sysconfdir}/profile.d/vim-default-editor.csh
+install -p -m644 %{SOURCE9} %{buildroot}/%{_sysconfdir}/profile.d/vim-default-editor.sh
+install -p -m644 %{SOURCE10} %{buildroot}/%{_sysconfdir}/profile.d/vim-default-editor.csh
 mkdir -p %{buildroot}/%{_datadir}/fish/vendor_conf.d/
-install -p -m644 %{SOURCE18} %{buildroot}/%{_datadir}/fish/vendor_conf.d/vim-default-editor.fish
+install -p -m644 %{SOURCE11} %{buildroot}/%{_datadir}/fish/vendor_conf.d/vim-default-editor.fish
 mkdir -p %{buildroot}/%{_datadir}/fish/vendor_functions.d/
-install -p -m644 %{SOURCE19} %{buildroot}/%{_datadir}/fish/vendor_functions.d/vi.fish
-install -p -m644 %{SOURCE19} %{buildroot}/%{_datadir}/fish/vendor_functions.d/vim.fish
-install -p -m644 %{SOURCE4} %{buildroot}/%{_sysconfdir}/virc
-install -p -m644 %{SOURCE5} %{buildroot}/%{_sysconfdir}/vimrc
+install -p -m644 %{SOURCE1} %{buildroot}/%{_sysconfdir}/virc
+install -p -m644 %{SOURCE2} %{buildroot}/%{_sysconfdir}/vimrc
 
 # if Vim isn't built for Fedora, use redhat augroup
 %if 0%{?rhel} >= 7
@@ -560,7 +559,7 @@ sed -i -e "s/augroup fedora/augroup redhat/" %{buildroot}/%{_sysconfdir}/virc
 %endif
 
 mkdir -p %{buildroot}%{_rpmconfigdir}/macros.d/
-install -p -m644 %{SOURCE15} %{buildroot}%{_rpmconfigdir}/macros.d/
+install -p -m644 %{SOURCE8} %{buildroot}%{_rpmconfigdir}/macros.d/
 
 (cd ../runtime; rm -rf doc; ln -svf ../../vim/%{vimdir}/doc docs;) 
 rm -f %{buildroot}/%{_datadir}/vim/%{vimdir}/macros/maze/maze*.c
@@ -591,6 +590,82 @@ echo ".so man1/vim.1" > %{buildroot}/%{_mandir}/man5/vimrc.5
 echo ".so man1/vi.1" > %{buildroot}/%{_mandir}/man5/virc.5
 touch %{buildroot}/%{_datadir}/%{name}/vimfiles/doc/tags
 
+
+%post enhanced
+# sets up symlinks for vi=vim, view=vim -R (via wrapper) during installation
+# we need to copy original binary as vim.origin and ship it, otherwise we lose
+# the original binary
+# it will overwrite vi symlinks if they exist
+
+if [ -f %{_bindir}/vi ] && [ ! -L %{_bindir}/vi ]
+then
+  %{_bindir}/mv %{_bindir}/vi{,.origin}
+fi
+
+if [ -f %{_bindir}/vim ] && [ ! -L %{_bindir}/vim ]
+then
+  %{_bindir}/rm -f %{_bindir}/vim
+fi
+
+%{_sbindir}/alternatives --install %{_bindir}/vim enhanced-vim %{_bindir}/vim.origin 50 \
+--slave %{_bindir}/view enhanced-view %{_bindir}/view_wrapper \
+--slave %{_bindir}/vi enhanced-vi %{_bindir}/vim.origin
+exit 0
+
+%post minimal
+# go out if we are already using alternatives via vim
+[ ! -f %{_bindir}/vim.origin ] || exit 0
+
+if [ -f %{_bindir}/vi ] && [ ! -L %{_bindir}/vi ]
+then
+  %{_bindir}/rm -f %{_bindir}/vi
+fi
+
+if [ -f %{_bindir}/vim ] && [ ! -L %{_bindir}/vim ]
+then
+  %{_bindir}/mv %{_bindir}/vim{,.origin}
+fi
+
+if [ -f %{_bindir}/vim.origin ]
+then
+  %{_sbindir}/alternatives --install %{_bindir}/vim enhanced-vim %{_bindir}/vim.origin 50 \
+  --slave %{_bindir}/view enhanced-view %{_bindir}/view_wrapper \
+  --slave %{_bindir}/vi enhanced-vi %{_bindir}/vim.origin
+else
+  %{_sbindir}/alternatives --install %{_bindir}/vim minimal-vim %{_bindir}/vi.origin 40 \
+  --slave %{_bindir}/view minimal-view %{_bindir}/vi.origin \
+  --slave %{_bindir}/vi minimal-vi %{_bindir}/vi.origin
+fi
+exit 0
+
+%preun enhanced
+# get out if we don't uninstall
+[ $1 = 0 ] || exit 0
+
+# if vim-minimal is installed, set up symlinks to it
+if [ -f %{_bindir}/vi.origin ]
+then
+  %{_sbindir}/alternatives --install %{_bindir}/vim minimal-vim %{_bindir}/vi.origin 40 \
+  --slave %{_bindir}/view minimal-view %{_bindir}/view.origin \
+  --slave %{_bindir}/vi minimal-vi %{_bindir}/vi.origin
+else
+# otherwise remove all vim-enhanced symlinks
+  %{_sbindir}/alternatives --remove enhanced-vim %{_bindir}/vim.origin
+fi
+exit 0
+
+%preun minimal
+# get out if we don't uninstall
+[ $1 = 0 ] || exit 0
+
+# remove symlinks only if vim-enhanced isn't installed. Otherwise
+# the symlinks are set by vim-enhanced and they don't change.
+if [ ! -f %{_bindir}/vim.origin ]
+then
+  %{_sbindir}/alternatives --remove minimal-vi %{_bindir}/vi.origin
+fi
+exit 0
+
 # Refresh documentation helptags
 %transfiletriggerin common -- %{_datadir}/%{name}/vimfiles/doc
 %{_bindir}/vim -c ":helptags %{_datadir}/%{name}/vimfiles/doc" -c :q &> /dev/null || :
@@ -748,13 +823,9 @@ touch %{buildroot}/%{_datadir}/%{name}/vimfiles/doc/tags
 %endif
 
 %files minimal
-%dir %{_datadir}/fish/vendor_functions.d
-%{_datadir}/fish/vendor_functions.d/vi.fish
-%config(noreplace) %{_sysconfdir}/profile.d/vi.*
 %config(noreplace) %{_sysconfdir}/virc
 %{_bindir}/ex
-%{_bindir}/vi
-%{_bindir}/view
+%{_bindir}/vi.origin
 %{_bindir}/rvi
 %{_bindir}/rview
 %{_mandir}/man1/vi.*
@@ -765,11 +836,9 @@ touch %{buildroot}/%{_datadir}/%{name}/vimfiles/doc/tags
 %{_mandir}/man5/virc.*
 
 %files enhanced
-%dir %{_datadir}/fish/vendor_functions.d
-%{_datadir}/fish/vendor_functions.d/vim.fish
-%config(noreplace) %{_sysconfdir}/profile.d/vim.*
-%{_bindir}/vim
 %{_bindir}/rvim
+%{_bindir}/view_wrapper
+%{_bindir}/vim.origin
 %{_bindir}/vimdiff
 %{_bindir}/vimtutor
 
@@ -827,6 +896,9 @@ touch %{buildroot}/%{_datadir}/%{name}/vimfiles/doc/tags
 %config(noreplace) %{_sysconfdir}/profile.d/vim-default-editor.*
 
 %changelog
+* Thu Jan 21 2021 Zdenek Dohnal <zdohnal@redhat.com> - 2:8.2.2311-3
+- rebuilt
+
 * Mon Jan 11 2021 Zdenek Dohnal <zdohnal@redhat.com> - 2:8.2.2311-2
 - conflicting the version when the change happened doesnt make sense
 
