Frage

Ich öffne manchmal ein Read-Only in vi-Datei, zu vergessen, chmod +w zu tun, bevor es zu öffnen. Gibt es Möglichkeit, die Datei zu ändern aus vi?

So etwas wie !r chmod +w [filename]?

Gibt es eine Verknüpfung zu der aktuell geöffneten Datei zu verweisen, ohne es lange Namen zu buchstabieren?

War es hilfreich?

Lösung

Verwenden Sie einfach

:!chmod +w %

im Befehlsmodus. % Wird durch die aktuellen Dateinamen ersetzt werden.

Andere Tipps

Wenn Sie die Rechte haben, in die Datei zu schreiben, dann können Sie nur Ausrufezeichen verwenden zu erzwingen:

:w!

Wenn Sie nicht über die Rechte und Benutzer ändern müssen, wollen aber trotzdem in die Datei schreiben, manchmal können Sie gehen für so etwas wie

:w !sudo tee %

Ich weiß, das ist eine alte Post, aber mit Vim Version8 einer Funktion, mit der aufgenommen wurde, können Sie die Dateiberechtigungen ändern.

Nach der version8.txt-Datei:

  

setfperm () legen Sie die Berechtigungen einer Datei

Diese Funktion kann dann über den „Ruf“ Befehl in Vim aufgerufen werden.

Dies geschieht wie folgt:

:call setfperm("file name","permissions")

Die Struktur des „Berechtigungen“ string nimmt die gleiche Form wie in der Vim-Dokumentation beschrieben:

  

getfperm ({fname}) getfperm ()           Das Ergebnis ist ein String, der die Lese-, Schreib- und Ausführungs           Berechtigungen der angegebenen Datei {fname}.           Wenn {fname} existiert nicht oder sein Verzeichnis nicht gelesen werden kann, wird eine           leere Zeichenkette zurückgegeben.           Das Ergebnis ist von der Form „rwxrwxrwx“, wobei jede Gruppe von           „Rwx“ Flaggen repräsentieren, die wiederum die Berechtigungen des Eigentümers           die Datei, gehört die Gruppe die Datei an, und andere Benutzer.           Wenn ein Benutzer nicht über eine gegebene Erlaubnis, die Flagge für diesen           „-“ wird mit der Zeichenfolge ersetzt. Beispiel:               : Echo getfperm ( "/ etc / passwd")           Dies wird hoffentlich (von sicherheitstechnischer Sicht) Anzeige           die Zeichenfolge "rw-r - r--" oder sogar "rw -------"

.

Ein minimales Beispiel:

:call setfperm("foo.txt","rwxrwxrwx")

Diese Lese fügt, Schreib- und Ausführungsberechtigungen für die „foo.txt“ Datei im aktuellen Verzeichnis.

Haben Sie versucht,

!chmod +w %

Das% stellt die aktuellen Dateinamen.

Sie können auch einen Schlüssel dazu wie Strg-W Karte.

:map <C-w> :!chmod +w %<CR>

Beachten Sie, dass Sie Strg-V Ctrl-M die <CR> zu bekommen

Nach dem Bearbeiten Sie Ihre Datei mit vim, drücken Sie „esc“ und dann „:“. Geben Sie dann den folgenden Befehl ein:

w !sudo tee %

Dann drücken Sie "Enter". Geben Sie dann

:q!

erfolgreich Ausstieg aus dem Editor.

:!chmod <perms> <file>

und wenn vi noch nicht will, es schreiben,

:se cpo-=W
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top