Pregunta

A veces abro un archivo de solo lectura en vi, olvidando hacer chmod + w antes de abrirlo. ¿Hay alguna forma de cambiar el archivo desde vi?

Algo como ! r chmod + w [nombre de archivo] ?

¿Hay un atajo para referirse al archivo abierto actualmente sin deletrear su nombre largo?

¿Fue útil?

Solución

Solo usa

:!chmod +w %

en modo de comando. % será reemplazado por el nombre del archivo actual.

Otros consejos

Si tiene los derechos para escribir en el archivo, puede usar el signo de exclamación para forzarlo:

:w!

Si no tiene los derechos y necesita cambiar de usuario, pero aún desea escribir en el archivo, a veces puede optar por algo como

:w !sudo tee %

Sé que se trata de una publicación anterior, pero con Vim Version8 se ha incluido una función con la que puede cambiar los permisos de los archivos.

Según el archivo version8.txt:

  

setfperm () establece los permisos de un archivo

Esta función se puede llamar a través de la " llamada " comando en Vim.

Esto se hace de la siguiente manera:

:call setfperm("file name","permissions")

La estructura de los " permisos " La cadena toma la misma forma que se describe en la documentación de Vim:

  

getfperm ({fname}) getfperm ()           El resultado es una cadena, que es la lectura, escritura y ejecución           permisos del archivo dado {fname}.           Si {fname} no existe o su directorio no se puede leer, un           Se devuelve una cadena vacía.           El resultado es de la forma " rwxrwxrwx " ;, donde cada grupo de           " rwx " Las banderas representan, a su vez, los permisos del propietario.           del archivo, el grupo al que pertenece el archivo y otros usuarios.           Si un usuario no tiene un permiso dado, la bandera para esto           se sustituye por la cadena " - " ;. Ejemplo:               : echo getfperm (" / etc / passwd ")           Esto se espera que (desde un punto de vista de seguridad) se muestre           la cadena " rw-r - r - " o incluso " rw ------- " ;.

Un ejemplo mínimo:

:call setfperm("foo.txt","rwxrwxrwx")

Esto agrega permisos de lectura, escritura y ejecución al " foo.txt " archivo en el directorio actual.

Has intentado

!chmod +w %

El% representa el nombre de archivo actual.

También puedes asignar una clave a esto como Ctrl-W.

:map <C-w> :!chmod +w %<CR>

Tenga en cuenta que escribe Ctrl-V Ctrl-M para obtener <CR>

Después de editar su archivo con vim, presione " esc " y luego ": " ;. Luego escribe el siguiente comando:

w !sudo tee %

Luego presiona " Entrar " ;. Luego escribe

:q!

para salir con éxito del editor.

:!chmod <perms> <file>

y si vi todavía no quiere escribirlo,

:se cpo-=W
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top