Как убедиться, что в файл не внесены изменения

11

Есть ли в любом случае, я мог убедиться, что файл заблокирован, чтобы я не мог внести в него изменения. Есть ли команда для блокировки / разблокировки файла в vim. Иногда я хотел бы, чтобы файл находился в режиме только для чтения.

Rajeshwar
источник

Ответы:

12

Вы можете установить файл только для чтения и не изменяемый

:set readonly
:set nomodifiable

Для получения дополнительной помощи см .:

:h 'readonly'
:h 'modifiable'
Питер Ринкер
источник
1
Вы также можете использовать vim -Rили viewдля автоматического открытия файла с помощью readonlyнабора (см. :help -R).
Мартин Турной
9

Самый простой способ - открыть файл, используя -Rфлаг при открытии файла, чтобы установить readonlyопцию.

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

Для Vim вы можете использовать команду viewпри открытии файла, что эквивалентно vim -R:

view filename.txt

Обратите внимание , что чтения вариант не препятствует принудительной записи . Если вы используете :w!файл будет записан независимо. Тем не менее, в качестве меры безопасности для «внешний вид не трогают», -Rможет быть очень полезным в предотвращении случайных операций записи.

Другое решение можно использовать, чтобы открыть пустой буфер файла и чтения в файл, который вы хотите посмотреть на:

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

Это довольно безопасно , так как у вас есть неназванные буфера вы не можете случайно перезаписать файл , который вы читали в (хотя вы могли бы сделать это сознательно , если вы снова напечатали имя файла). Однако вы не можете получить автоматическую подсветку синтаксиса таким образом, в зависимости от ваших настроек.

Wildcard
источник
На многих юниксах, то viewдвоичный часто трудно звено viдвоичного, и в этих системах, даже регулярных vi, когда он видит , он был вызван в качестве view, файл будет открыт в режиме только для чтения. Так что это не ВИМ-только
Оливье Дюлака
@OlivierDulac, возможно, нет, но я не вижу его в POSIX - ни для,ex ни дляvi . vi -R как указано.
Wildcard
Хорошая точка зрения. Upvoted.
Оливье Дюлак