Cum pot ieși din modul de citire numai în Vim?
On februarie 18, 2021 by adminAm deschis un fișier în modul readonly; există o modalitate de a ieși din modul readonly?
Comentarii
Răspundeți
Ați putea face acest lucru:
:set noro
Aceasta dezactivează semnalizatorul de numai citire, dar dacă fișierul care stă la baza dvs. încă nu poate fi scris de dvs., atunci vim nu va mai putea să-i scrie.
Comentarii
- cum să inversați acest lucru și să reveniți înapoi pentru a citi numai?
- @LouisHong Foarte ușor:
:set ro
. - Acest lucru este perfect dacă deschideți un fișier scriibil cu
view
dar apoi decideți să îl editați. - Poate fi util și reversul. De exemplu,
psql
are o comandă meta (\ev
) pentru a edita o vizualizare SQL, care deschide vim pentru a scrie. Dar, dacă vreau să mă asigur că nu ' nu schimb efectiv vizualizarea (în producție!) Pot imediat:set ro
. 🙂
Răspuns
Puteți rula chmod
din interior vim:
:!chmod +w %
!
înseamnă executarea unei comenzi shell și %
este numele de fișier curent. De asemenea, puteți forța să scrieți fișierul:
:w!
Răspuns
În plus la răspunsul lui Michael Mrozek , puteți adăuga o linie la .vimrc
care vă permite să scrieți într-un fișier pe care ați neglijat să îl deschideți cu permisiuni ridicate:
" Allows writing to files with root priviledges cmap w!! w !sudo tee % > /dev/null
Dacă fișierul este numai în citire, trebuie doar să introduceți : w ! ! , vi se va solicita parola și apoi fișierul va fi scris cu succes.
Răspuns
În timp ce :set noro
face treaba, nu verifică dacă fișierul este deschis de o altă instanță vim sau actualizează fișierul dacă este modificat extern.
Pentru a-l face editabil și a verifica dacă există fișiere swap (care este deschiderea implicită a unui fișier cu vim) trebuie doar să utilizați comanda edit (: help edit):
:e
Rețineți, dacă fișierul a fost manipulat de atunci (chiar și în afara vim), va actualiza modificările din buffer-ul curent (ceea ce mi se pare de dorit în mod normal).
Răspuns
Iată-mă, deși cam târziu, poate v-ați rezolvat deja îndoielile;) nu am văzut în oricare dintre comentarii pe care le știu cu vim , așa că îl adaug:
Odată ce editați un fișier, apăsați :w
sau :wq
și vedeți mesajul enervant „ opțiunea "readonly" E45 este setată (adăugați! pentru a suprascrie) „
Puteți tasta
:w !sudo tee %
-
w
scrie bufferul, -
!sudo
apelează shell-ul cu sudo, -
tee
redirecționează ieșireavim :w
către ieșirea cu tee și - este numele de fișier curent
Și asta ar trebui să facă truc. Rețineți că acest lucru va solicita reîncărcarea fișierului în vim, pentru ceea ce trebuie să apăsați L
Răspuns
Încercați aceasta:
vim -R "filename"
se deschide în modul numai citire, apoi faceți doar această comandă: q
Am încercat și a funcționat pentru mine
Comentarii
- Ne pare rău. Habar nu am ce spui.
Răspunde
Încearcă să folosești sudo
. Ca root
trebuie să deschideți fișierul. Sudo
este o comandă în care puteți solicita permisiunea de la Linux.
de ex.
sudo vim "filename"
Comentarii
- Acest lucru nu are nimic de-a face cu permisiuni sau privilegii.În plus, nu ar trebui să utilizați niciodată
sudo
pentru a rula un editor; utilizați în schimbsudoedit
.
!
law
va face trucul, așa cum a spus Michael.w
de fiecare dată când doresc să salvez. heh