Abrí un archivo en modo de solo lectura; ¿Hay alguna manera de salir del modo de solo lectura?
wcada vez que quiero guardar. je
Abrí un archivo en modo de solo lectura; ¿Hay alguna manera de salir del modo de solo lectura?
wcada 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.
viewpero luego decide editarlo.
Puedes correr chmoddesde 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 .vimrcque 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 norohace 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 :wo :wqy 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, teeredirige la salida de vim :wa 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
!alwcomando será suficiente, como dijo Michael.