以root用户身份以我的用户身份启动Vim


10

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

$ sudo vim /etc/rc.conf

我丢失了配置,因为Vim使用了默认配置。因此:如何在没有丢失用户设置(位于我的主目录中)的情况下,以root权限运行Vim以编辑文件?
我努力了:

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

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

注意:用户名不是root。

Answers:


15

代替sudo vim /etc/rc.conf使用sudoedit /etc/rc.confsudo -e /etc/rc.conf。您可能需要将EDITOR环境变量设置为vim。这将使用您的常规配置以普通用户身份运行vim本身,并在您退出时将其复制回该文件的副本。


不错的解决方案!我也会检查这个。
rubik 2012年

我试了一下sudoedit /etc/rc.confsudo -e /etc/rc.conf它打开了vim,但是我的〜/ .vimrc没有被加载。我做错了什么?
装置

@apparat export EDITOR=vim首先尝试-它可能正在尝试运行vi,即使它是vim,我也不知道是否会加载vimrc。
2012年

好吧,我认为这是最好的答案。谢谢你俩。
rubik 2012年

@ Random832 export EDITOR=vim工作。我以为vi没有安装在我的系统上,而只是vim的符号链接。谢谢
apparat 2012年

6

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

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

如果每次需要输入时都感到乏味,请输入别名:

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

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


很好,谢谢。我这样解决了:alias svim="HOME=/home/user && sudo vim -u $HOME/.vimrc"
rubik 2012年

1

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'

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.