Abrí un archivo en modo de solo lectura; ¿Hay alguna manera de salir del modo de solo lectura?
w
cada vez que quiero guardar. je
Abrí un archivo en modo de solo lectura; ¿Hay alguna manera de salir del modo de solo lectura?
w
cada vez que quiero guardar. je
Respuestas:
Podrías hacer esto:
:set noro
Eso deshabilita el indicador de solo lectura, pero si el archivo subyacente aún no se puede escribir, entonces vim aún no podrá escribir en él.
:set ro
.
view
pero luego decide editarlo.
Puedes correr chmod
desde vim:
:!chmod +w %
!
significa ejecutar un comando de shell y %
es el nombre de archivo actual. También puede forzar la escritura del archivo:
:w!
Además de la respuesta de Michael Mrozek , puede agregar una línea a la suya .vimrc
que le permita escribir en un archivo que ha descuidado abrir con permisos elevados:
" Allows writing to files with root priviledges
cmap w!! w !sudo tee % > /dev/null
Si el archivo es de solo lectura, solo tiene que ingresar :w!!, se le pedirá su contraseña y luego el archivo se escribirá con éxito.
Si bien :set noro
hace el trabajo, no comprueba si el archivo es abierto por otra instancia de vim o actualiza el archivo si se cambia externamente.
Para hacerlo editable y buscar archivos de intercambio (que es la apertura predeterminada de un archivo con vim) solo use el comando de edición (: ayuda a editar):
:e
Tenga en cuenta que si el archivo ha sido manipulado desde entonces (incluso fuera de vim), actualizará los cambios en el búfer actual (que normalmente me parece deseable).
Aquí voy, aunque un poco tarde, tal vez ya resolvió su duda;) No he visto en ninguno de los comentarios una forma que conozca con vim , así que lo agrego:
Una vez que esté editando un archivo, presione :w
o :wq
y verá el molesto mensaje " La opción 'solo lectura' E45 está configurada (¡agregar! Para anular) "
Puedes escribir
:w !sudo tee %
w
escribe el búfer, !sudo
llama al caparazón con sudo, tee
redirige la salida de vim :w
a la salida con tee, y%
es el nombre de archivo actualY eso debería hacer el truco. Tenga en cuenta que esto le pedirá que vuelva a cargar el archivo en vim, para lo que debe presionar L
!
alw
comando será suficiente, como dijo Michael.