Como garantir que nenhuma alteração seja feita em um arquivo

11

Existe alguma maneira de garantir que um arquivo esteja bloqueado para que eu não possa fazer alterações nele. Existe um comando para bloquear / desbloquear um arquivo no vim. Algumas vezes eu gostaria que um arquivo estivesse no modo somente leitura.

Rajeshwar
fonte

Respostas:

12

Você pode definir o arquivo como somente leitura e não modificável

:set readonly
:set nomodifiable

Para obter mais ajuda, consulte:

:h 'readonly'
:h 'modifiable'
Peter Rincker
fonte
1
Você também pode usar vim -Rou viewpara abrir automaticamente um arquivo com readonlyset (consulte :help -R).
Martin Tournoij 01/04
9

A maneira mais fácil é abrir o arquivo usando o -Rsinalizador ao abrir o arquivo para definir a readonlyopção.

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

Para o Vim, você pode usar o comando viewao abrir um arquivo, que é equivalente a vim -R:

view filename.txt

Observe que a opção somente leitura não impede uma gravação forçada . Se você usar :w!o arquivo será gravado independentemente. No entanto, como medida de segurança para "olhar não toque", -Rpode ser muito útil para evitar gravações acidentais.

Outra solução alternativa que você pode usar é abrir um buffer de arquivo vazio e ler o arquivo que deseja examinar:

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

Isso é bastante seguro, pois você possui um buffer sem nome - não é possível substituir acidentalmente o arquivo em que leu (embora você possa fazê-lo deliberadamente se digitar o nome do arquivo novamente). No entanto, você pode não ter a sintaxe automática destacada dessa maneira, dependendo das suas configurações.

Curinga
fonte
Em muitos Unices, o viewbinário geralmente é um link vifísico do binário e, nesses sistemas, mesmo regular vi, quando vê que foi invocado como view, abrirá o arquivo no modo somente leitura. Portanto, não é VIM-única
Olivier Dulac
@OlivierDulac, talvez não, mas não o vejo especificado no POSIX - paraex ou paravi . vi -R está especificado.
Curinga
Bom ponto. Votado.
Olivier Dulac