在 Fedora 上用 Vim 全局替换 Vi

aef*_*aef 10 fedora vim vi

在基于 Debian 的系统上,替代系统处理vivim可执行文件。所以如果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带有它的包。即使我确实删除了它,然后尝试再次安装sudovim-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)

llu*_*lua 6

# echo 'alias vi="vim"' >> /etc/bashrc' 或者 # alternatives --install /usr/bin/vi vi /usr/bin/vim 900


Gil*_*il' 6

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)

  • 它甚至可以通过简单地使用 `sudo ln -s /usr/bin/vim /usr/local/bin/vi` 创建符号链接来工作。但是你必须在 `visudo` 中的 `Defaults secure_path="..."` 配置的最左侧添加 `/usr/local/bin`,否则将找不到符号链接。 (2认同)