Wie kann ich den schreibgeschützten Modus in Vim beenden?

38

Ich habe eine Datei schreibgeschützt geöffnet. Gibt es eine Möglichkeit, den schreibgeschützten Modus zu verlassen?

falscher Benutzername
quelle
Was sind die Einschränkungen im schreibgeschützten Modus, die Sie stören? Wenn Sie die Datei nur schreiben möchten, obwohl Sie sie schreibgeschützt öffnen, reicht es aus, wenn Sie !dem wBefehl ein hinzufügen , wie Michael ausführte.
Bananguin
1
@ user1129682 Es ist nur die Unannehmlichkeit, sich daran zu erinnern, nach wjedem Speichern ein Ausrufezeichen gesetzt zu haben. heh
wrongusername

Antworten:

43

Sie könnten dies tun:

:set noro

Dadurch wird das Nur-Lese-Flag deaktiviert, aber wenn die zugrunde liegende Datei von Ihnen immer noch nicht beschreibbar ist, kann vim immer noch nicht darauf schreiben.

Philip Kearns
quelle
Wie kann man dies rückgängig machen und zurückgehen, um nur zu lesen?
Louis Hong
2
@LouisHong Sehr leicht: :set ro.
Philip Kearns
1
Dies ist ideal, wenn Sie eine beschreibbare Datei mit öffnen view, sie dann jedoch bearbeiten möchten.
wisbucky
9

Sie können chmodaus vim heraus ausführen :

:!chmod +w %

!bedeutet, einen Shell-Befehl auszuführen und %ist der aktuelle Dateiname. Sie können auch einfach das Schreiben der Datei erzwingen:

:w!
Michael Mrozek
quelle
3

Zusätzlich zu der Antwort von Michael Mrozek.vimrc können Sie Ihrer Zeile eine Zeile hinzufügen , mit der Sie in eine Datei schreiben können, deren Öffnen Sie mit erhöhten Berechtigungen versäumt haben:

" Allows writing to files with root priviledges
cmap w!! w !sudo tee % > /dev/null

Wenn die Datei schreibgeschützt ist, müssen Sie nur eingeben :w!!, Sie werden zur Eingabe Ihres Kennworts aufgefordert und anschließend wird erfolgreich in die Datei geschrieben.

jasonwryan
quelle
2

Während der :set noroAusführung des Auftrags wird nicht geprüft, ob die Datei von einer anderen vim-Instanz geöffnet wurde, oder die Datei wird aktualisiert, wenn sie extern geändert wurde.

Verwenden Sie einfach den Befehl edit (: help edit), um die Datei bearbeitbar zu machen und nach Auslagerungsdateien zu suchen (dies ist die Standardeinstellung zum Öffnen einer Datei mit vim):

:e

Beachten Sie, dass, wenn die Datei seitdem manipuliert wurde (auch außerhalb von vim), die Änderungen im aktuellen Puffer aktualisiert werden (was ich normalerweise wünschenswert finde).

Sebastian Müller
quelle
1

Hier bin ich, obwohl ein bisschen spät, vielleicht hast du deinen Zweifel bereits gelöst;) Ich habe in keinem der Kommentare einen Weg gesehen, den ich mit vim kenne , also füge ich hinzu:

Sobald Sie eine Datei bearbeiten, drücken Sie :woder :wqund Sie sehen die ärgerliche Meldung " E45 'Readonly'-Option ist gesetzt (zum Überschreiben hinzufügen!) ".

E45 Readonly Option ist gesetzt (Add! To Override)

Du kannst Tippen

:w !sudo tee %

w! sudo tee%

  • w schreibt den Puffer,
  • !sudo ruft die Shell mit sudo auf,
  • teeleitet die Ausgabe von vim :wauf die Ausgabe mit tee um, und
  • % ist der aktuelle Dateiname

Und das sollte den Trick machen. Beachten Sie, dass dies dazu auffordert, die Datei in vim neu zu laden, wenn Sie L drücken müssen

Bildbeschreibung hier eingeben

xCovelus
quelle