プログラミングゆるめモ

プログラミングに関することをゆるくメモしてます

Linux

vi で書き込みが出来ない場合の対応方法 エラー E45 / E505 / E212

Linuxのエディター vi って使い難いですね(笑)
でも、簡単なエディットとかするときに、仕方なく使うこともあります。

編集を終えて、書き込みコマンド「:w」を実行すると
「E45: 'readonly' オプションが設定されています (! を追加で上書き)」
とか
「E505: "hogehage.php" は読込専用です (強制書込には ! を追加) 」
とかのエラーが出ることがあります。
メッセージ通りに、「:w!」を実行すると、今度は
「"hogehage.php" E212: 書込み用にファイルを開けません」
と出て、結局ファイルを保存することが出来ません。

ちゃんとパーミッションは設定してあるのに・・・

実はこれ、ファイルのパーミッションの問題ではなく
権限のないユーザだからエラーが出るのです。
root で書き込めば、エラーは出ません。
でも、viを終了して、rootに移行してまたviを起動して・・・って面倒ですね。
そんなときのための解決方法として、viのコマンドでrootに移行して書き込む方法がありました。

それが、これです。
「:w !sudo tee %」
パスワードを聞かれてきたら、パスワードを入力します。
すると、ちゃんと書き込みできます。

-Linux