Comment s'assurer qu'aucune modification n'est apportée à un fichier

11

Existe-t-il de toute façon que je pourrais m'assurer qu'un fichier est verrouillé afin que je ne puisse pas y apporter de modifications. Existe-t-il une commande pour verrouiller / déverrouiller un fichier dans vim. Parfois, je voudrais qu'un fichier soit en mode lecture seule.

Rajeshwar
la source

Réponses:

12

Vous pouvez définir le fichier en lecture seule et non modifiable

:set readonly
:set nomodifiable

Pour plus d'aide, voir:

:h 'readonly'
:h 'modifiable'
Peter Rincker
la source
1
Vous pouvez également utiliser vim -Rou viewpour ouvrir automatiquement un fichier avec readonlyset (voir :help -R).
Martin Tournoij
9

Le moyen le plus simple consiste à ouvrir le fichier à l'aide du -Rdrapeau lors de l'ouverture du fichier pour définir l' readonlyoption.

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

Pour Vim, vous pouvez utiliser la commande viewlors de l'ouverture d'un fichier, ce qui équivaut à vim -R:

view filename.txt

Notez que l'option en lecture seule n'empêche pas une écriture forcée . Si vous utilisez :w!le fichier sera écrit malgré tout. Cependant, comme mesure de sécurité pour «ne pas toucher», -Rpeut être très utile pour prévenir les écritures accidentelles.

Une autre solution de contournement que vous pouvez utiliser consiste à ouvrir un tampon de fichier vide et à lire le fichier que vous souhaitez consulter:

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

C'est assez sûr car vous avez un tampon sans nom - vous ne pouvez pas écraser accidentellement le fichier que vous lisez (bien que vous puissiez le faire délibérément si vous avez tapé à nouveau le nom du fichier). Cependant, vous ne pouvez pas obtenir la syntaxe automatique en surbrillance de cette façon, selon vos paramètres.

Caractère générique
la source
Sur de nombreux Unices, le viewbinaire est souvent un lien dur du vibinaire, et sur ces systèmes, même régulier vi, quand il voit qu'il a été appelé view, ouvrira le fichier en mode lecture seule. Ce n'est donc pas uniquement vim
Olivier Dulac
@OlivierDulac, peut-être pas, mais je ne le vois pas spécifié dans POSIX, ni pourex ni pourvi . vi -R est spécifié.
Wildcard
Bon point. A voté.
Olivier Dulac