当我需要以根用户身份编辑文件并使用sudo vim somefile.conf
并且我无法使用任何键绑定,设置和插件时,这真令人沮丧。
当我需要以root身份进行编辑时,是否可以获取所有自定义内容?
我正在为插件使用vim-plug。
当我需要以根用户身份编辑文件并使用sudo vim somefile.conf
并且我无法使用任何键绑定,设置和插件时,这真令人沮丧。
当我需要以root身份进行编辑时,是否可以获取所有自定义内容?
我正在为插件使用vim-plug。
Answers:
除了以root身份打开vim外,您还可以通过重定向到tee来简单地另存为root。这是一个例子:
:w !sudo tee % > /dev/null
这对在您的.vimrc中使用别名可能很有用,我使用:Sw
:
command! -nargs=0 Sw w !sudo tee % > /dev/null
I did a bunch of editing and then realized I should have used sudoedit
,但一般情况下,我建议使用sudo -e
/ sudoedit
。
两件事情:
使用$ sudo -e file
来编辑file
与$EDITOR
。export EDITOR=/path/to/vim
如果$EDITOR
尚未设置,则添加。
香草味是对抗插件成瘾的绝佳方法。
sudo vim
。编辑将以您的普通用户身份进行,然后sudo处理更新原始文件。
sudo
:-E
和-e
。-E
表示“保存器环境”,这不是您想要的环境。-e
,则表示“不要运行命令,而是使用已定义的过程编辑文件”。
看起来您所要做的就是符号链接root ~/.vimrc
和~/.vim/
您自己的链接。
只要以root身份运行:
ln -s /home/<user>/.vimrc /root/.vimrc
ln -s /home/<user>/.vim/ /root/.vim/
那应该做到的!
(PS我刚刚发现了这个问题,想与其他菜鸟分享。请告诉我是否有更好的方法。)
如果您提前知道需要以根用户身份编辑文件,请使用命令sudoedit <file>
或sudo -e <file>
将使用常规的编辑器首选项在特殊环境中进行设置。复制文件并启动编辑器(以您的用户身份)对其进行编辑。退出时,文件将以root身份复制回到其原始位置。
这是最安全和建议的方法,但是如果a)您没有提前意识到,您将需要以root用户身份编写,或者b)想就地编辑和保存增量更改,则需要其他操作。为此,使用sudo tee
smpl提出的解决方案无疑是正确的,但是可以对边缘情况进行一些小的改进。值得注意的是,在GUI和控制台界面中处理sudo密码提示的区别值得关注。
一个简单的设置方法是使用vim-eunuch插件。它有这个特殊的问题,还有一些其他方便的东西组合成一个方便的软件包。用法就像调用一样简单:SudoWrite
。我什至使用稍微方便一些的访问映射:
cmap w!! call SudoWrite()
那应该使您能够使用root身份以root身份写入任何文件 :w!!
。
另一个选择是运行sudo -E vim somefile.conf
编辑,这将保留您的环境,因此.vimrc
将使用和插件。
sudo vim file
最好写成sudo -e file
(只要您设置了环境变量EDITOR=vim
)。