我的自定义 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.conf
或sudo -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'