たのしい工学

プログラミングを学んで、モノをつくりたいひと、効率的に仕事をしたい人のための硬派なブログになりました

vimでsudoをつけ忘れたときに強制上書きする方法

   

vimでファイルを編集し終わって、よし、保存しようと思い、

:w
E45: 'readonly' オプションが設定されています (! を追加で上書き)

sudo vimし忘れた!みたいなことが結構有ります。
そんなときは、このコマンドを使って無理やり保存してしまいます。

:w !sudo tee % > /dev/null

Vimコマンドでは、! がシェルコマンドの呼び出し、% が編集中のファイル名です。

すなわち、root権限でteeを実行し、編集中のファイルと同名のファイルに無理やり書き込んでいるのです。
このコマンドを実行後に、「編集中に上書きされました」と警告が出ますが、気にせずそのまま「q!」で終了します。

すると変更は書き込まれています。

 - プログラミング系