以具有 root 权限的用户身份启动 Vim

以具有 root 权限的用户身份启动 Vim

我的自定义 Vim 文件位于 中~/.vim,设置位于~/.vimrc.但是,有时我必须编辑一些文件/etc等。
如果我像这样启动 Vim:

$ sudo vim /etc/rc.conf

由于 Vim 使用默认配置,我丢失了配置。那么:如何以 root 权限运行 Vim 来编辑文件而不丢失用户设置(位于我的主目录中)?
我努力了:

$ su username -c "vim /usr/lib/python2.7/setuptools/dist.py"

但 Bash 给了我Permission denied。但是,上述命令适用于例如:/etc/acpi/handler.sh。这是为什么?

笔记:用户名不是根。

答案1

而不是sudo vim /etc/rc.conf使用sudoedit /etc/rc.confsudo -e /etc/rc.conf.您可能需要将 EDITOR 环境变量设置为 vim。这将以普通用户身份运行 vim 本身,使用您的正常配置,在文件的副本上运行,当您退出时它将复制回来。

答案2

您可以使用-u告诉 vim 要加载哪个 rc 文件。例如

sudo vim -u ~user/.vimrc /etc/rc.conf

如果每次需要输入该内容很乏味,请创建一个别名:

alias sudovim='sudo vim -u ~user/.vimrc'

请注意,vim -u如果插件或调用的 rc 文件加载与 $HOME 相关的其他文件,则可能会导致插件或调用的 rc 文件失败 - $HOME 现在是 root 的主目录,而不是用户的主目录。这可以通过根目录中的符号链接或通过硬编码绝对路径来解决。

答案3

sudo vim -S /home/user/.vimrc /etc/rc.conf

这相当于:

sudo vim /etc/rc.conf+:source /home/user/.vimrc

并且也可以使用别名:

alias svim='sudo vim -S /home/user/.vimrc'

相关内容