2013-02-19 11 views
31

A volte quando creo un file utilizzando vim some/path/newfile, vim mi consente di modificarlo, solo per protestare quando tento di salvare le mie modifiche.Vim Impossibile salvare il file (E212)

E212 Can't open file for writing. 

Questo sembra accadere solo quando il nuovo file si trova in una directory di sistema.

:w! non sovrascrive questo errore.

Come posso scrivere il buffer corrente, senza doverlo salvare in una posizione temporanea, uscire, quindi rinominarlo con sudo?

+0

Inoltre, a volte se si inserisce uno spazio tra 'w' e'! ', Funziona. (Almeno questo funziona per me in linux usando vim-vt-gtk più leggero non solo leggero 'vim' anche se sono sicuro che funzionerebbe lo stesso in regular ole 'vim.) Non sapevo di' Peter' La risposta, però. 'w !!' funziona anche per me. – dylnmc

risposta

46

Questo vi chiederà la password di root, quindi salvare le modifiche come richiesto:

:w !sudo tee % 

quindi digitare (L) oad al prompt, di ri-caricare il file dopo che è stato salvato.

+1

Questo ha funzionato! Forse potrebbe essere combinato con la risposta di @ Peter per creare un alias vim nel file .vimrc? – StuWeldon

+0

mi dice "shell restituita 1" – clemlaflemme

6

aggiungere questa linea al vostro .vimrc:

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

e allora si può fare

:w!! 

quando si entra in questa posizione, e sarà scrivere il file usando sudo. Molto maneggevole.

+0

Mi piace questa idea. Digitando: w !! sostituisce il comando con '! sudo tee>/dev/null', ma dice semplicemente n" righe filtrate "e il file non viene effettivamente creato. Sembra che/dev/null lo stia causando? – StuWeldon

+3

Ottima idea - 'w !!' è molto più facile da ricordare della mia soluzione. Ciò che funziona per me su OS X è 'cmap w !! %! sudo tee% ' –

5

È possibile mkdir prima, quindi salvarlo.

+4

Ciò non aiuta. La domanda non riguarda le directory che non esistono. Si tratta di modificare i file esistenti come (ad esempio) un utente normale, quando il file può essere scritto solo da root. In tal caso, non esiste una directory mancante da creare. –

0

Se questo è il caso in Windows 7 o versioni successive, eseguire l'editor VI come amministratore. Fare clic destro dell'applicazione e selezionare "Esegui come amministratore". Questo problema sarà risolto. Inoltre, l'errore è dovuto ai privilegi di amministratore.

Problemi correlati