我可以在不离开vim的情况下获得root权限吗?

15

有时候我需要编辑一些需要管理员权限的文件(例如在 /etc 下的文件),但是我忘记以sudo权限来运行vim了。

编辑完成后,当我输入:wq来保存并离开时,我发现即使使用!wq命令也无法保存,因为该文件只读。

如果我离开重新编辑该文件,那么之前所有的修改都会丢失,但如果不这样做,我也不能保存我的编辑内容。那么,如何在vim中获得root权限以便进行写入操作而不必离开vim呢?


我认为你不能这样做,只需复制其中的内容,关闭vim,使用sudo运行并粘贴。编辑:或者像darryn.ten回答的那样操作。 - Gonçalo Vieira
@darryn.ten 没有所谓的“正确”答案,只有“有帮助的”和/或“被接受的”答案 :) - sehe
1
@sehe - 语义...已被接受 - darryn.ten
最简单的解决方案当然是使用Emacs,它不允许在你没有保存权限的情况下编辑文件。咧嘴笑,闪人 - Sven Marnach
2个回答

24

要强制保存,请使用以下命令

:w !sudo tee %

它会提示您输入密码。


1
我总是在需要的时候记不住这个 :/ - Michael Berkowski
我强迫自己记住它,因为我经常使用它。 - darryn.ten
6
一种常见的解决复杂命令记忆难题的方法是创建自定义命令::command! W w !sudo tee % >/dev/null。该命令用于在保存文件时使用sudo权限,而不必记住长长的命令。 - ib.
我已经测试过了,它按预期工作,非常感谢。你能告诉我为什么要使用这个命令,它是什么意思吗? - Yongqiang Zhou
我已经在我的vimrc中将其绑定到w!!,但经常会ssh到没有我的vimrc的盒子。 - darryn.ten
3
@Andy:请参考问题"vim如何使用sudo命令保存文件?"。 - ib.

3
提到使用tee的技巧很不错;如果您经常需要这样做,我建议使用SudoEdit插件,它提供了:SudoWrite命令(甚至还有一个sudo:协议处理程序)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接