J'ai ouvert un fichier en mode lecture seule; existe-t-il un moyen de sortir du mode lecture seule?
Vous pouvez faire ceci:
:set noro
Cela désactive l'indicateur de lecture seule, mais si le fichier sous-jacent n'est toujours pas inscriptible par vous, alors vim ne pourra toujours pas y écrire.
Vous pouvez exécuter chmod
depuis vim:
:!chmod +w %
!
signifie exécuter une commande Shell et %
est le nom de fichier actuel. Vous pouvez également forcer l'écriture du fichier:
:w!
En plus de réponse de Michael Mrozek , vous pouvez ajouter une ligne à votre .vimrc
qui vous permet d'écrire dans un fichier que vous avez négligé d'ouvrir avec des autorisations élevées:
" Allows writing to files with root priviledges
cmap w!! w !Sudo tee % > /dev/null
Si le fichier est en lecture seule, il vous suffit de saisir :w!!, vous serez invité à saisir votre mot de passe, puis le fichier sera correctement écrit.
Tandis que :set noro
fait le travail, il ne vérifie pas si le fichier est ouvert par une autre instance de vim ou met à jour le fichier s'il est modifié en externe.
Afin de le rendre modifiable et de vérifier les fichiers d'échange (qui est l'ouverture par défaut d'un fichier avec vim), utilisez simplement la commande d'édition (: aide à éditer):
:e
Notez que si le fichier a été manipulé depuis (même en dehors de vim), il mettra à jour les changements dans le tampon actuel (ce que je trouve normalement souhaitable).
C'est parti, bien qu'un peu en retard, peut-être avez-vous déjà résolu votre doute;) Je n'ai vu dans aucun des commentaires une manière que je connais avec vim , donc je l'ajoute:
Une fois que vous modifiez un fichier, vous appuyez sur :w
ou :wq
, et vous voyez le message ennuyeux " L'option E45" en lecture seule "est définie (ajoutez! pour remplacer) "
Vous pouvez taper
:w !Sudo tee %
w
écrit le tampon,!Sudo
appelle le Shell avec Sudo,tee
redirige la sortie de vim :w
à la sortie avec tee, et%
est le nom de fichier actuelEt cela devrait faire l'affaire. Notez que cela vous demandera de recharger le fichier dans vim, pour ce que vous devez appuyer sur L