web-dev-qa-db-fra.com

Comment puis-je quitter le mode lecture seule dans Vim?

J'ai ouvert un fichier en mode lecture seule; existe-t-il un moyen de sortir du mode lecture seule?

43
wrongusername

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.

49
Philip Kearns

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!
9
Michael Mrozek

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.

3
jasonwryan

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).

2
Sebastian Müller

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) "

E45 readonly option is set (add ! to override)

Vous pouvez taper

:w !Sudo tee %

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 actuel

Et cela devrait faire l'affaire. Notez que cela vous demandera de recharger le fichier dans vim, pour ce que vous devez appuyer sur L

enter image description here

1
xCovelus