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

zim*_*atm 10 vim

这是一个经常发生在我身上的可用性问题:

我用vim打开只读系统文件,甚至编辑它,因为我不够专心,或者因为系统上的vim配置不当。更改完成后,我不得不将它们写入临时文件或丢失它们,因为 :w! 不会工作。

是否有允许您以超级用户身份写入当前缓冲区的 vim 命令 (:W!!!)?(Vim 自然会询问您的 sudo 或 su 密码)

Mar*_*ian 15

:w !sudo tee % >/dev/null`
Run Code Online (Sandbox Code Playgroud)

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

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

:w !sudo dd of=%
Run Code Online (Sandbox Code Playgroud)

??

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


Bri*_*ian 5

尝试:

:w !sudo tee % >/dev/null
Run Code Online (Sandbox Code Playgroud)