Jak mogę wyjść z trybu tylko do odczytu w Vimie?

38

Otworzyłem plik w trybie tylko do odczytu; czy jest sposób na wyjście z trybu tylko do odczytu?

zła nazwa użytkownika
źródło
Jakie przeszkadzają ci w trybie „tylko do odczytu”? Jeśli po prostu chcesz zapisać plik, nawet jeśli wybierzesz opcję tylko do odczytu, dodanie polecenia !do wpolecenia załatwi sprawę , jak stwierdził Michael.
Bananguin
1
@ user1129682 to tylko niedogodność związana z pamięcią o wykrzykniku za wkażdym razem, gdy chcę zapisać. heh
wrongusername

Odpowiedzi:

43

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ć.

Philip Kearns
źródło
jak to odwrócić i wrócić tylko do odczytu?
Louis Hong
2
@LouisHong Bardzo łatwo: :set ro.
Philip Kearns
1
Jest to idealne rozwiązanie, jeśli otworzysz zapisywalny plik, viewale zdecydujesz się go edytować.
wisbucky
9

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!
Michał Mrożek
źródło
3

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.

jasonwryan
źródło
2

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).

Sebastian Müller
źródło
1

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ć)

Ustawiono opcję tylko do odczytu E45 (dodaj!, Aby zastąpić)

Możesz pisać

:w !sudo tee %

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ą pliku

I to powinno wystarczyć. Zauważ, że pojawi się monit o ponowne załadowanie pliku w vimie, za co musisz nacisnąć L

wprowadź opis zdjęcia tutaj

xCovelus
źródło