Wie speichere ich eine schreibgeschützte Datei in Vim für Windows?

8

Ich habe schon viel danach gesucht und jede Antwort bezieht sich auf Vim unter Linux. Gibt es eine Möglichkeit, eine schreibgeschützte Datei direkt von Vim in Windows zu speichern?

Durga Swaroop
quelle

Antworten:

11

Wie bei anderen vi / vim-Versionen können Sie :w!das Schreiben erzwingen, sofern Sie über Berechtigungen zum Überschreiben der schreibgeschützten Eigenschaft verfügen.

Wenn Sie die Datei beispielsweise als schreibgeschützt festgelegt haben, funktioniert das oben Gesagte. Wenn Windows selbst oder ein Administrator es schreibgeschützt festgelegt hat, benötigen Sie eine andere Option.

Wie @ dash-tom-bang kommentierte, ist ein gutes Beispiel Programmdateien, in denen Dateien standardmäßig geschützt sind. In diesem Microsoft Knowledgebase-Artikel wird erläutert, wie dies in der Praxis funktioniert.

rolinger
quelle
Mein Konto ist als Administrator festgelegt, :w!funktioniert aber nicht. Es heißt, dass die Datei nicht zum Lesen geöffnet werden kann. Obwohl ich außerhalb von vim genau das Gleiche tun kann.
Durga Swaroop
1
@ DurgaSwaroop: Hast du versucht gvimals zu öffnen Run as Administrator? Vielleicht würde es Ihren Zweck lösen ... oder auf andere Weise könnte es sein, dass die Datei von einer anderen Anwendung gesperrt wird ...
Cylian
1
@DurgaSwaroop: Der übergeordnete Prozess muss sein run as administrator, um seinen Unterprozess mit administrativen Aufgaben abzuschließen ... Bitte werfen Sie einen Blick auf windows.microsoft.com/en-in/windows/… .... andernfalls deaktivieren Sie die UACEinstellungen ... .
cylianischer
1
Das Bearbeiten von Dateien innerhalb der Programmdateihierarchie :w!funktioniert beispielsweise nicht und Sie müssen gVim als Administrator ausführen oder Vim an einer Eingabeaufforderung ausführen, die als Administrator ausgeführt wurde.
Dash-Tom-Bang
1
Danke @ dash-tom-bang, ich habe in meiner Antwort einen Verweis auf dieses gute Beispiel hinzugefügt.
Rolinger
2

Sie können mein SudoEdit- Plugin verwenden.

Christian Brabandt
quelle
Funktioniert das unter Windows richtig? In der Readme-Datei heißt es, dass dies wahrscheinlich nicht der Fall ist.
Durga Swaroop
Nach meinen Tests sollte es. Ich benutze Windows jedoch nicht oft und habe dafür nie ein Feedback erhalten. Das ist der Grund für die Readme. Dies hängt auch davon ab, welche Methode Sie verwenden.
Christian Brabandt
2

Es gibt eine andere Möglichkeit, die in den anderen Antworten nicht angesprochen wurde: vim weigert sich, eine Datei zu speichern, wenn sie von einer anderen Windows-Anwendung geöffnet und gesperrt wird. Viele normale Windows-Apps (z. B. Office) sperren geöffnete Dateien. Wenn dies das Problem ist, keine Unordnung mit Berechtigungen oder: w! wird dir helfen. Sie müssen lediglich die Datei in der anderen App schließen und können sie dann von vim speichern. Es ist bedauerlich, dass vim dem Benutzer diese Situation nicht eindeutig signalisiert.

JKna
quelle
0

Für win7: Start> Ausführen> Befehl (als Administrator) und führen Sie diese Befehle aus, um den Verzeichnisbaum für den Administrator beschreibbar zu machen:

cd parent/folder

:: /f file, /a admin,  /r recurse, /d y = nopromt
takeown /F . /A /R /D Y > nul:

:: /t /q /c .. traverse quiet continue
icacls . /t /q /c /reset
icacls . /t /q /c /grant    :r Everyone:F
icacls . /t /q /c /setowner Administrators 
mosh
quelle
0

Führen Sie gVim als Administrator aus, z. B. indem Sie mit der rechten Maustaste auf die Tastenkombination gVim in Ihrem Startmenü klicken oder die Tastenkombination Shift+ verwenden F10und als Administrator ausführen auswählen .

Öffnen Sie die Datei, die Sie bearbeiten möchten, und speichern Sie Ihre Änderungen :wwie gewohnt.

Kenny Evitt
quelle
-1

Geben Sie :f "newfilename"dann beim Verlassen :wden Befehlsmodus ein , um unter dem neuen Dateinamen zu speichern.

user2866244
quelle