在基于 Debian 的系统上,替代系统处理vi和vim可执行文件。所以如果vim安装了并且你执行了vi,你也会得到vim,我觉得这很好,因为我非常讨厌经典vi。
在 Fedora 17“Beefy Miracle”上,替代系统显然不能处理这两者中的任何一个。但是有一个配置文件,/etc/profile.d/vim.sh其中添加了一个 shell 别名来 make viexecute vim。出于某种原因,它不会为系统用户(包括 root)执行此操作。
但是,即使我手动为所有用户设置了别名,当我打电话时,我也会sudo vi启动经典vi而不是vim. 这可能是因为 sudo 不启动 shell 或配置文件仅在交互式 shell 会话中执行。
我现在正在寻找的是一种vi完全卸载经典的方法,以制作一个甚至可以在系统更新中幸存的符号链接。如何删除经典vi但不在vimFedora 17 上?或者还有更好的方法吗?
更新:随着yum provides vi我发现vi是由包提供的vim-minimal。但我不能简单地删除它,因为它会自动删除sudo带有它的包。即使我确实删除了它,然后尝试再次安装sudo,vim-minimal然后再次作为依赖项安装。
更新:根据要求,输出rpm -qf /usr/bin/vi:
vim-minimal-7.3.444-1.fc17.x86_64
Run Code Online (Sandbox Code Playgroud)
并且ls -l /usr/bin/vi:
-rwxr-xr-x. 1 root root 782248 13. Feb 2012 /usr/bin/vi
Run Code Online (Sandbox Code Playgroud)
# echo 'alias vi="vim"' >> /etc/bashrc'
或者 # alternatives --install /usr/bin/vi vi /usr/bin/vim 900
你vi是 Vim,但调用为vi,所以它进入历史兼容模式。推荐的操作是,如果你想运行 Vim 而不是 vi,运行vim而不是vi. 但是,如果您想vi始终在系统上的每个帐户上运行 Vim,请覆盖它/usr/local/bin:
cat >/usr/local/bin/vi <<\EOF
#!/bin/sh
exec /usr/bin/vim "$@"
EOF
chmod 755 /usr/local/bin/vi
Run Code Online (Sandbox Code Playgroud)