2013-02-19 31 views
31

Czasami, gdy tworzę plik używając vim some/path/newfile Vim pozwala mi edytować go, tylko narzekać, gdy próbuję zapisać swoje zmiany.Vim nie można zapisać pliku (E212)

E212 Can't open file for writing. 

Wygląda na to, że dzieje się tak tylko wtedy, gdy nowy plik znajduje się w katalogu systemowym.

:w! nie zastępuje tego błędu.

Jak mogę napisać bieżącego bufora, bez konieczności zapisywania go do tymczasowej lokalizacji, zjazd, a następnie zmień jego nazwę używając sudo?

+0

Czasami, jeśli wstawisz spację między 'w' i'! ', To działa. (Przynajmniej to działa dla mnie w Linuksie przy użyciu cięższego vim 'vim-gtk' nie tylko lekkiego' vim' chociaż jestem pewny, że działałoby to samo w regularnym ole 'vim.) Nie wiedziałem o 'Peter' odpowiedź. 'w !!' działa również dla mnie. – dylnmc

Odpowiedz

46

ten poprosi Cię o hasło administratora, a następnie zapisać zmiany, jak wnioskuje:

:w !sudo tee % 

Następnie wpisz (L) OAD w wierszu polecenia, aby ponownie załadować pliku po jego zapisaniu.

+1

To działało! Może można to połączyć z odpowiedzią @ Petera, aby utworzyć alias vim w pliku .vimrc? – StuWeldon

+0

mówi "powłoka zwrócona 1" – clemlaflemme

6

Dodaj tę linię do .vimrc:

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

a następnie można zrobić

:w!! 

gdy pojawi się w tej pozycji, a to napisać plik za pomocą sudo. Bardzo przydatny.

+0

Podoba mi się ten pomysł. Wpisywanie: w !! zastępuje polecenie '! sudo tee>/dev/null', ale po prostu mówi n" lines filtered ", a plik nie został faktycznie utworzony. Wygląda na to, że powoduje to/dev/null? – StuWeldon

+3

Świetny pomysł - 'w !!' jest o wiele łatwiejszy do zapamiętania niż moje rozwiązanie. To, co działa dla mnie na OS X to 'cmap w !! %! sudo tee% ' –

5

Można mkdir pierwszy, a następnie zapisać go.

+4

To nie pomoże. Pytanie nie dotyczy katalogów, które nie istnieją. Chodzi o edycję istniejących plików jako (na przykład) zwykłego użytkownika, gdy plik może być zapisany tylko przez root. W takim przypadku nie ma brakującego katalogu do utworzenia. –

0

Jeśli tak jest w systemie Windows 7 lub nowszych wersjach, uruchom edytor VI jako administrator. Kliknij prawym przyciskiem myszy aplikację i wybierz "Uruchom jako administrator". Ten problem zostanie rozwiązany. Ponadto błąd wynika z przywilejów administracyjnych.

Powiązane problemy