So stellen Sie sicher, dass keine Änderungen an einer Datei vorgenommen werden


11

Gibt es sowieso ich könnte sicherstellen, dass eine Datei gesperrt ist, so dass ich keine Änderungen daran vornehmen kann. Gibt es einen Befehl zum Sperren / Entsperren einer Datei in vim? Manchmal möchte ich, dass sich eine Datei im schreibgeschützten Modus befindet.

Antworten:


12

Sie können festlegen, dass die Datei schreibgeschützt und nicht änderbar ist

:set readonly
:set nomodifiable

Weitere Hilfe finden Sie unter:

:h 'readonly'
:h 'modifiable'

1
Sie können auch eine Datei mit set verwenden vim -Roder viewautomatisch öffnen readonly(siehe :help -R).
Martin Tournoij

9

Am einfachsten ist es, die Datei -Rbeim Öffnen der Datei mit dem Flag zu öffnen, um die readonlyOption festzulegen.

vim -R filename.txt
vi -R filename.txt

Für Vim können Sie den Befehl viewbeim Öffnen einer Datei verwenden. Dies entspricht vim -R:

view filename.txt

Beachten Sie, dass die Option readonly ein erzwungenes Schreiben nicht verhindert . Wenn Sie :w!die Datei verwenden, wird sie trotzdem geschrieben. Als Sicherheitsmaßnahme für "Look Don't Touch" -Rkann dies jedoch sehr hilfreich sein, um versehentliches Schreiben zu verhindern.

Eine andere Problemumgehung, die Sie verwenden können, besteht darin, einen leeren Dateipuffer zu öffnen und die gewünschte Datei einzulesen:

vim
# Then, from inside vim:
:r filename.txt

Dies ist ziemlich sicher, da Sie einen unbenannten Puffer haben - Sie können die eingelesene Datei nicht versehentlich überschreiben (obwohl Sie dies absichtlich tun könnten, wenn Sie den Dateinamen erneut eingeben). Abhängig von Ihren Einstellungen wird auf diese Weise möglicherweise keine automatische Syntaxhervorhebung angezeigt.


Auf vielen Unices ist die viewBinärdatei häufig eine feste Verknüpfung der viBinärdatei, und auf diesen Systemen öffnet die reguläre Datei die Datei im schreibgeschützten Modus , selbst viwenn sie als aufgerufen angesehen viewwird. Es ist also nicht nur vim
Olivier Dulac

@OlivierDulac, vielleicht nicht, aber ich sehe es nicht in POSIX angegeben - weder fürex noch fürvi . vi -R wird angegeben.
Wildcard

Guter Punkt. Upvoted.
Olivier Dulac
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.