2013-02-19 13 views
31

vim some/path/newfileを使用してファイルを作成すると、vimで編集できるようになり、変更を保存しようとすると文句を言うだけです。Vim Can not Save File(E212)

E212 Can't open file for writing. 

これは、新しいファイルがシステムディレクトリにある場合にのみ発生します。

:w!このエラーは無効になりません。

現在のバッファを一時的な場所に保存せずに終了してから、sudoを使用して名前を変更する方法はありますか?

cmap w!! %!sudo tee > /dev/null 

、あなたがこの位置に入ると、それはsudoを使用してファイルを書き込みますとき、あなたは

:w!! 

を行うことができます。

+0

また、 'w'と'! 'の間にスペースを入れると動作することがあります。 (少なくとも、これは軽量の 'vim'だけではなく、より重いvim 'vim-gtk'を使用するLinuxで私にとってはうまくいきますが、通常の 'vimでは同じように動作すると確信しています)でも、答えは。 「w !!」は私のためにも働く。 – dylnmc

答えて

46

これは、あなたが要求したとして、あなたの変更を保存し、rootパスワードの入力を求められます。それが保存された後

:w !sudo tee % 

は、次にファイルを再ロードするために、プロンプト(L)OADを入力します。

+1

これはうまくいきました!たぶん、これは@Peterの答えと結びついて.vimrcファイルにvimエイリアスを作成することができますか? – StuWeldon

+0

それは私に "シェル返された1"と言う – clemlaflemme

6

は、あなたの.vimrcに次の行を追加します。とても便利な。

+0

私はこの考えが好きです。入力:w !!コマンドを '!sudo tee>/dev/null'に置き換えますが、単にn" lines filtered "と表示され、ファイルは実際には作成されません。/dev/nullはそれを引き起こしているようですか? – StuWeldon

+3

素晴らしいアイデア - 'w !!'は私の解決策よりも覚えやすいです。 OS X上で動作するものは 'cmap w !! %!sudo tee% ' –

5

mkdirを最初に保存してから保存してください。

+4

これは役に立ちません。問題は、存在しないディレクトリについての問題ではありません。これは、既存のファイルを通常のユーザー(たとえば、ルートでのみ書き込むことができる)として編集することです。その場合、作成する欠落ディレクトリはありません。 –

0

Windows 7以降のエディションの場合は、VIエディタを管理者として実行してください。アプリケーションを右クリックし、[管理者として実行]を選択します。この問題は解決されます。また、エラーは管理特権によるものです。