我在 CentOS 5.9 机器上工作,我只想输入
sudo vi 某个文件
并拥有我可信赖的带有语法高亮等功能的 vim。这看起来很简单,但经过多次尝试,它仍然无法正常工作。
root@localhost> which vi
alias vi='vim'
/usr/bin/vim
root@localhost> sudo which vi
/bin/vi
root@localhost> sudo -i which vi
/bin/vi
root@localhost> sudo -E which vi
/bin/vi
Run Code Online (Sandbox Code Playgroud)
我以 root 身份登录以确保默认vi somefile
调用 vim。它做了。我还尝试使用 -E 保留环境并使用 -i 运行登录脚本。那没有用。在我的 .profile 和 /etc/environment 中,我都将 EDITOR 导出为 vim,并将 vi 设置为 vim 的别名。
我还注释掉了 /etc/sudoers 中的 env_reset 行。
我还应该尝试什么?我不认为用 vim 替换 vi 会如此困难,而且我真的很想了解这里发生了什么。
这就是命令sudoedit
的用途。它会创建一个在用户环境中编辑的临时副本。它参考SUDO_EDITOR
,VISUAL
并变量EDITOR
找到一个合适的二进制文件。编辑后,副本会覆盖原始文件。
如果你总是想使用vim
而不是vi
,你可以
$ sudo ln -s /usr/bin/vim /usr/local/bin/vi
Run Code Online (Sandbox Code Playgroud)
(这假设您/usr/local/bin
之前 /bin
在您的PATH
.)
诚然,这是一个(系统本地)黑客,但非常简单有效。