sudo 时如何将 vim 设置为默认编辑器?

Kei*_*rup 4 vim sudo vi

我在 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 会如此困难,而且我真的很想了解这里发生了什么。

Mar*_*rco 6

这就是命令sudoedit的用途。它会创建一个在用户环境中编辑的临时副本。它参考SUDO_EDITORVISUAL并变量EDITOR找到一个合适的二进制文件。编辑后,副本会覆盖原始文件。


Ing*_*kat 5

如果你总是想使用vim而不是vi,你可以

$ sudo ln -s /usr/bin/vim /usr/local/bin/vi
Run Code Online (Sandbox Code Playgroud)

(这假设您/usr/local/bin 之前 /bin在您的PATH.)

诚然,这是一个(系统本地)黑客,但非常简单有效。