Jak upewnić się, że w pliku nie zostaną wprowadzone żadne zmiany

11

Czy w każdym razie mogę upewnić się, że plik jest zablokowany, więc nie mogę go zmienić. Czy istnieje polecenie blokowania / odblokowywania pliku w vimie? Czasami chciałbym, aby plik był w trybie tylko do odczytu.

Rajeshwar
źródło

Odpowiedzi:

12

Możesz ustawić plik tylko do odczytu i nie można go modyfikować

:set readonly
:set nomodifiable

Aby uzyskać więcej pomocy, zobacz:

:h 'readonly'
:h 'modifiable'
Peter Rincker
źródło
1
Możesz także użyć vim -Rlub, viewaby automatycznie otworzyć plik z readonlyustawieniem (patrz :help -R).
Martin Tournoij,
9

Najłatwiej jest otworzyć plik przy użyciu -Rflagi podczas otwierania pliku, aby ustawić readonlyopcję.

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

W przypadku Vima możesz użyć polecenia viewpodczas otwierania pliku, co jest równoważne z vim -R:

view filename.txt

Zauważ, że opcja tylko do odczytu nie zapobiega wymuszonemu zapisowi . Jeśli korzystasz, :w!plik zostanie zapisany niezależnie. Jednak jako środek bezpieczeństwa dla „patrz, nie dotykaj”, -Rmoże być bardzo pomocny w zapobieganiu przypadkowym zapisom.

Innym sposobem obejścia problemu jest otwarcie pustego bufora plików i odczytanie pliku, który chcesz obejrzeć:

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

Jest to dość bezpieczne, ponieważ masz bufor bez nazwy - nie możesz przypadkowo zastąpić czytanego pliku (chociaż możesz to zrobić celowo, jeśli ponownie wpiszesz nazwę pliku). Jednak w zależności od ustawień możesz nie uzyskać automatycznego podświetlania składni w ten sposób.

Dzika karta
źródło
W wielu Uniksach viewplik binarny jest często twardym dowiązaniem pliku vibinarnego, a na tych systemach, nawet zwykłych vi, gdy zobaczy, że został wywołany view, otworzy plik w trybie tylko do odczytu. Więc to nie tylko vim
Olivier Dulac
@OlivierDulac, być może nie, ale nie widzę tego określonego w POSIX - ani dla,ex ani dlavi . vi -R jest określony.
Wildcard
Słuszna uwaga. Pozytywne.
Olivier Dulac