スーパーユーザーとしてvimファイルを書き込みますか?


10

これは私によくあるユーザビリティの問題です:

読み取り専用のシステムファイルをvimで開いたり、編集したりしています。十分な注意力がないため、またはシステム上のvimの構成が不適切なためです。変更が完了したら、一時ファイルに変更を書き込む必要があるか、:w!動作しません。

スーパーユーザーとして現在のバッファーを書き込むことができるvimコマンド(:W !!!)はありますか?(Vimは自然にsudoまたはsuのパスワードを要求します)



1
SOは間違いなく間違いですが、2つのSUの質問は、sudoeditコマンドで解決される個別の問題に対処します。この質問は、最初に入力するのを忘れて、エディタを起動した後に昇格することに重点を置いています。
2010年

回答:


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

説明:を使用すると!、プログラムを実行できます。その前に:wを付けることで、ファイルの内容(vimにあるもので、元のファイルではなく、より正確にはバッファ)が標準入力のコマンドに渡されます。%はファイル名に置き換えられます。これにより、>/dev/nullコンテンツが再び画面に出力されなくなります(これは、の通常の動作ですtee)。

さらに短い方法を見つけました。ddは標準出力に出力しないため、ヌルのものを保存できます。

:w !sudo dd of=%

同じことは:r、指定されたコマンドの出力を挿入するためのものです。たとえば、次のコマンドを使用して、現在の日付をファイルに挿入できます。:r !date


本当にありがとう、あなたは私の人生をずっと良くしました!(ブライアンも)
zimbatm 2010年

2つ目の方法を追加しました。
マリアン

それは本当に素晴らしいです!
アンソニージョルジオ

undofilesでは機能しません
Christian Brabandt '20

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.