Otworzyłem plik w trybie tylko do odczytu; czy jest sposób na wyjście z trybu tylko do odczytu?
wkażdym razem, gdy chcę zapisać. heh
Otworzyłem plik w trybie tylko do odczytu; czy jest sposób na wyjście z trybu tylko do odczytu?
wkażdym razem, gdy chcę zapisać. heh
Odpowiedzi:
Możesz to zrobić:
:set noro
To powoduje rozbrojenie flagi tylko do odczytu, ale jeśli plik podstawowy nadal nie jest zapisywany przez ciebie, vim nadal nie będzie mógł do niego zapisać.
:set ro.
viewale zdecydujesz się go edytować.
Możesz uruchomić chmodz poziomu vima:
:!chmod +w %
!oznacza uruchomienie polecenia powłoki i %jest bieżącą nazwą pliku. Możesz także wymusić zapis pliku:
:w!
Oprócz odpowiedzi Michała Mrożka możesz dodać do swojego wiersza wiersz, .vimrcktóry pozwala na zapisanie pliku, który otworzyłeś z podwyższonymi uprawnieniami:
" Allows writing to files with root priviledges
cmap w!! w !sudo tee % > /dev/null
Jeśli plik jest tylko do odczytu, musisz tylko wpisać :w!!, pojawi się monit o podanie hasła, a następnie plik zostanie pomyślnie zapisany.
Podczas :set norowykonywania zadania nie sprawdza, czy plik jest otwierany przez inną instancję vima, ani nie aktualizuje pliku, jeśli został zmieniony zewnętrznie.
Aby go edytować i sprawdzić pliki wymiany (domyślnie jest to otwarcie pliku za pomocą vima), po prostu użyj polecenia edit (: help edit):
:e
Uwaga: jeśli plik był manipulowany od tego czasu (nawet poza vimem), zaktualizuje on zmiany w bieżącym buforze (co zwykle uważam za pożądane).
Proszę bardzo, choć trochę się spóźniłem, może już rozwiałeś swoje wątpliwości;) Nie widziałem żadnego z komentarzy w sposób, który znam z vimem , więc dodaję:
Gdy edytujesz plik, naciśnij :wlub :wq, i zobaczysz irytujący komunikat „ E45„ tylko do odczytu ”jest ustawiona (dodaj! Aby zastąpić) ”
Możesz pisać
:w !sudo tee %
w zapisuje bufor, !sudo wywołuje powłokę z sudo, teeprzekierowuje wyjście vim :wdo wyjścia za pomocą tee, i% jest bieżącą nazwą plikuI to powinno wystarczyć. Zauważ, że pojawi się monit o ponowne załadowanie pliku w vimie, za co musisz nacisnąć L
!dowpolecenia załatwi sprawę , jak stwierdził Michael.