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

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

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

我用 vim 打开一个只读系统文件,甚至编辑它,因为我不够细心,或者因为系统上的 vim 配置不正确。一旦我完成更改,我就不得不将它们写入临时文件或丢失它们,因为 :w! 不起作用。

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

答案1

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

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

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

:w !sudo dd of=%

​‍

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

答案2

尝试:

:w !sudo tee % >/dev/null

相关内容