2013-02-19 42 views
31

有時,當我使用vim some/path/newfile創建文件時,vim讓我編輯它,只有在我嘗試保存更改時纔會抱怨。Vim無法保存文件(E212)

E212 Can't open file for writing. 

這似乎只在新文件位於系統目錄中時纔會發生。

:w!不覆蓋此錯誤。

如何寫入當前緩衝區,而不必將其保存到臨時位置,退出,然後使用sudo重命名它?

+0

此外,有時如果你在'w'和'!'之間放置一個空格,它就會起作用。 (至少這對於我來說,在linux中使用較重的vim'vim-gtk'不僅僅是輕量級的'vim',儘管我相信它在普通的ole'vim中會起到同樣的作用。)我不知道'Peter'但是,答案是。 'w !!'也適用於我。 – dylnmc 2014-10-07 13:38:38

回答

46

這將要求您輸入root密碼,然後保存修改,你要求:

:w !sudo tee % 

然後在提示符下鍵入(L)OAD,重新加載該文件被保存後。

+1

這工作!也許它可以結合@Peter的答案在.vimrc文件中創建一個vim別名? – StuWeldon 2013-02-19 02:05:35

+0

它說我「shell返回1」 – clemlaflemme 2017-09-12 08:38:17

6

此行添加到您的.vimrc

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

,然後你可以做

:w!! 

當你進入這個位置,它會使用sudo寫入文件。非常便利。

+0

我喜歡這個想法。打字:w!用'!sudo tee>/dev/null'替換該命令,但它只是說n個「過濾行」,並且該文件實際上並未創建。它似乎是/ dev/null造成的? – StuWeldon 2013-02-19 01:59:04

+3

好主意 - 'w !!'比我的解決方案更容易記住。在OS X上適合我的是'cmap w !! %!sudo tee%' – 2013-02-19 02:19:16

5

您可以先mkdir然後保存。

+4

這沒有幫助。問題不在於不存在的目錄。它是關於將現有文件編輯爲(例如)普通用戶,當文件只能由root編寫時。在這種情況下,沒有丟失的目錄可以創建。 – 2014-07-14 18:55:50

0

如果在Windows 7或更高版本中出現這種情況,請以管理員身份運行VI編輯器。右鍵單擊該應用程序並選擇「以管理員身份運行」。這個問題將得到解決。此外,錯誤是由於管理權限。