设置和插件为root(`sudo vim`)时?


15

当我需要以根用户身份编辑文件并使用sudo vim somefile.conf并且我无法使用任何键绑定,设置和插件时,这真令人沮丧。

当我需要以root身份进行编辑时,是否可以获取所有自定义内容?

我正在为插件使用vim-plug。


5
附带说明一下:sudo vim file最好写成sudo -e file(只要您设置了环境变量EDITOR=vim)。
lcd047

@ lcd047:你应该到了,他说评论
static_rtti

Answers:


15

除了以root身份打开vim外,您还可以通过重定向到tee来简单地另存为root。这是一个例子:

:w !sudo tee % > /dev/null

这对在您的.vimrc中使用别名可能很有用,我使用:Sw

command! -nargs=0 Sw w !sudo tee % > /dev/null

4
这是有用的I did a bunch of editing and then realized I should have used sudoedit,但一般情况下,我建议使用sudo -e/ sudoedit
jamessan

7

两件事情:

  1. 使用$ sudo -e file来编辑file$EDITORexport EDITOR=/path/to/vim如果$EDITOR尚未设置,则添加。

  2. 香草味是对抗插件成瘾的绝佳方法。


-1表示建议插件成瘾恢复(J / K,实际上没有
降低投票权

3
注意,它不会像root一样以root身份运行vim sudo vim。编辑将以您的普通用户身份进行,然后sudo处理更新原始文件。
jamessan

注意:有两个类似的选项sudo-E-e-E表示“保存器环境”,这不是您想要的环境。-e,则表示“不要运行命令,而是使用已定义的过程编辑文件”。
iksemyonov

3

看起来您所要做的就是符号链接root ~/.vimrc~/.vim/您自己的链接。

只要以root身份运行:

ln -s /home/<user>/.vimrc /root/.vimrc
ln -s /home/<user>/.vim/ /root/.vim/

那应该做到的!

(PS我刚刚发现了这个问题,想与其他菜鸟分享。请告诉我是否有更好的方法。)


1
这通常会引起一些问题,因为某些与vim相关的文件将被作为root写入您的主目录中,随后您会在尝试以自己的用户身份运行自己的vim配置时遇到错误。
Caleb 2015年

0

如果您提前知道需要以根用户身份编辑文件,请使用命令sudoedit <file>sudo -e <file>将使用常规的编辑器首选项在特殊环境中进行设置。复制文件并启动编辑器(以您的用户身份)对其进行编辑。退出时,文件将以root身份复制回到其原始位置。

这是最安全和建议的方法,但是如果a)您没有提前意识到,您将需要以root用户身份编写,或者b)想就地编辑和保存增量更改,则需要其他操作。为此,使用sudo tee smpl提出的解决方案无疑是正确的,但是可以对边缘情况进行一些小的改进。值得注意的是,在GUI和控制台界面中处理sudo密码提示的区别值得关注。

一个简单的设置方法是使用vim-eunuch插件。它有这个特殊的问题,还有一些其他方便的东西组合成一个方便的软件包。用法就像调用一样简单:SudoWrite。我什至使用稍微方便一些的访问映射:

cmap w!! call SudoWrite()

那应该使您能够使用root身份以root身份写入任何文件 :w!!


-1

另一个选择是运行sudo -E vim somefile.conf编辑,这将保留您的环境,因此.vimrc将使用和插件。


嘿,好戏!这对于Vi和许多其他命令很有用。
Robbie Wxyz

3
这具有与将配置链接到根目录的主目录相同的副作用:即,任何写入状态数据的vim操作或插件都将在主目录中执行此操作。这些文件最终归root拥有,并且由于普通用户将无法继续使用它们,因此稍后将导致错误。
Caleb 2015年
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.