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.
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.
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).
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!) ".
Du kannst Tippen
: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
!
demw
Befehl ein hinzufügen , wie Michael ausführte.w
jedem Speichern ein Ausrufezeichen gesetzt zu haben. hehAntworten:
Sie könnten dies tun:
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.
quelle
:set ro
.view
, sie dann jedoch bearbeiten möchten.Sie können
chmod
aus vim heraus ausführen :!
bedeutet, einen Shell-Befehl auszuführen und%
ist der aktuelle Dateiname. Sie können auch einfach das Schreiben der Datei erzwingen:quelle
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: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.
quelle
Während der
:set noro
Ausfü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):
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).
quelle
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
:w
oder:wq
und Sie sehen die ärgerliche Meldung " E45 'Readonly'-Option ist gesetzt (zum Überschreiben hinzufügen!) ".Du kannst Tippen
w
schreibt den Puffer,!sudo
ruft die Shell mit sudo auf,tee
leitet die Ausgabe vonvim :w
auf die Ausgabe mit tee um, und%
ist der aktuelle DateinameUnd 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
quelle