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.

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'

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.


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.