以超级用户身份写入vim文件?


10

这是我经常发生的可用性问题:

我用vim打开了一个只读系统文件,甚至对其进行了编辑,因为我不够专心,或者系统上的vim配置错误。更改完成后,由于:w !,我不得不将其写入临时文件或丢失它们。将无法正常工作。

是否有vim命令(:W !!!)可让您以超级用户身份写入当前缓冲区?(Vim自然会要求您提供sudo或su密码)


相关问题(不是完全重复的问题):superuser.com/questions/23428/vim-sudo-vim-bad-idea ..superuser.com/ questions/ 106865/ … ..和SO一样,stackoverflow.com/
庸医吉x德

1
SO绝对是骗子,但是两个SU问题解决了用sudoedit命令解决的单独问题。这个问题更多地集中在忘记首先键入它,而在启动编辑器后提升它。
重载2010年

Answers:


15
:w !sudo tee % >/dev/null`

说明:使用!,您可以执行程序。通过给:w加上前缀,文件的内容(您在vim中拥有的东西,而不是原始文件,更确切地说是缓冲区)将在标准输入中提供给命令。%替换为文件名,>/dev/null避免再次将内容打印到屏幕上(这是的通常行为tee)。

我发现了更短的方法。dd不会打印到标准输出,因此您可以保存空值。

:w !sudo dd of=%

‍‍

与for相同:r,它将插入给定命令的输出,因此您可以例如使用来将当前日期插入文件中:r !date


非常感谢,您使我的生活更加美好!(也是布莱恩)
zimbatm

我刚刚添加了第二种方法。
玛丽安2010年

真的很整洁!
Anthony Giorgio

不适用于撤消文件-Christian Brabandt
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.