2009-10-22 15 views
19

A veces abro un archivo de solo lectura en vi, olvidándome de hacer chmod +w antes de abrirlo. ¿Hay forma de cambiar el archivo desde vi?Cómo cambiar el permiso de archivo desde vi

Algo así como !r chmod +w [filename]?

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

Respuesta

46

sólo tiene que utilizar

:!chmod +w % 

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

+1

Gracias --- esto fue útil. Una pequeña molestia es que vim ahora advierte sobre la necesidad de volver a cargar el archivo (W16). ¿Hay alguna manera de detenerlo sin configurar autoread? – Rmano

1
:!chmod <perms> <file> 

y si vi todavía no quiere escribirlo,

:se cpo-=W 
6

Ha intentado

!chmod +w % 

El% representa el nombre del archivo actual.

También podría asignar una clave para esto como Ctrl-W.

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

Nota que escriba Ctrl-V Ctrl-M para obtener el <CR>

31

Si usted tiene los derechos para escribir en el archivo, a continuación, sólo se puede utilizar el signo de exclamación a la fuerza:

:w! 

Si usted no tiene los derechos y la necesidad de cambiar de usuario, pero todavía quiere escribir en el fichero, a veces puede ir para algo así como

:w !sudo tee % 
+0

sí, pero no quiero escribir w! todo el tiempo ... solo w – vehomzzz

+3

No desea escribir en el archivo todo el tiempo ;-) –

4

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

De acuerdo con el archivo version8.txt:

setfperm() define los permisos de un archivo

Esta función puede ser llamada a través del comando "llamada" en Vim.

Esto se hace como sigue:

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

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

getfperm ({fname}) getfperm() El resultado es una Cadena, que es la lectura, escritura y ejecución de los permisos del archivo dado {fname}. Si {fname} no existe o su directorio no se puede leer, se devuelve una cadena vacía . El resultado es de la forma "rwxrwxrwx", donde cada grupo de indicadores "rwx" representa, 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 este se reemplaza por la cadena "-". Ejemplo: : echo getfperm ("/ etc/passwd") Se espera que (desde el punto de vista de seguridad) muestre la cadena "rw-r - r--" o incluso "rw ------ - ".

Un ejemplo mínimo:

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

Esto añade leer, escribir y ejecutar permisos para el archivo "foo.txt" en el directorio actual.

2

Después de editar su archivo con vim, presione "esc" y luego ":". a continuación, escriba el siguiente comando:

w !sudo tee % 

luego presionar "Enter". A continuación, escriba

:q! 

para salir con éxito desde el editor.

Cuestiones relacionadas