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

38

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

fauxusername
la source
Quelles sont les limitations en mode lecture seule qui vous dérangent? Si vous voulez simplement écrire le fichier, même si vous l’ouvrez en lecture seule, ajouter un a !à la wcommande suffira, comme l’a déclaré Michael.
Bananguin
1
@ user1129682 c'est juste le désagrément de ne pas oublier de mettre un point d'exclamation à wchaque fois que je souhaite enregistrer. heh
Pseudonyme

Réponses:

44

Vous pourriez faire ceci:

:set noro

Cela désactive l'indicateur en lecture seule, mais si vous ne pouvez toujours pas écrire dans le fichier sous-jacent, vim ne pourra toujours pas y écrire.

Philip Kearns
la source
Comment inverser cela et revenir en lecture seule?
Louis Hong
2
@LouisHong très facilement: :set ro.
Philip Kearns
1
C'est parfait pour si vous ouvrez un fichier accessible en écriture avec viewmais décidez ensuite de le modifier.
Wisbucky
9

Vous pouvez exécuter chmoddepuis vim:

:!chmod +w %

!signifie exécuter une commande shell et %correspond au nom de fichier actuel. Vous pouvez aussi simplement forcer l'écriture de fichier:

:w!
Michael Mrozek
la source
3

En plus de la réponse de Michael Mrozek , vous pouvez ajouter une ligne à votre .vimrcqui vous permet d'écrire dans un fichier que vous avez oublié 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 d'entrer :w!!, il vous sera demandé votre mot de passe et le fichier sera écrit avec succès.

jasonwryan
la source
2

Alors :set noroque le travail est effectué, il ne vérifie pas si le fichier est ouvert par une autre instance de vim ni ne met à jour le fichier s'il est modifié en externe.

Pour le rendre éditable et vérifier les fichiers d'échange (qui est le fichier par défaut ouvrant un fichier avec vim), utilisez simplement la commande d'édition (: help edit):

:e

Notez que si le fichier a été manipulé depuis (même en dehors de vim), il mettra à jour les modifications dans le tampon courant (ce que je trouve normalement souhaitable).

Sebastian Müller
la source
1

J'y vais, bien qu'un peu tard, peut-être que vous ayez déjà résolu votre doute;) Je n'ai vu aucun commentaire d'une manière que je connaisse avec vim , alors je l'ajoute:

Une fois que vous éditez un fichier, vous appuyez sur :wou :wqet vous voyez le message gênant " L’option " E45 'en lecture seule "est activée (ajoutez! Pour remplacer) "

L’option E45 readonly est définie (ajoutez! À remplacer)

Vous pouvez taper

:w !sudo tee %

w! sudo tee%

  • w écrit le tampon,
  • !sudo appelle la coquille avec sudo,
  • teeredirige la sortie de vim :wvers la sortie avec tee, et
  • % est le nom de fichier actuel

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

entrez la description de l'image ici

xCovelus
la source