Cómo cambiar el permiso de archivo desde vi
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?
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