En Vim, cuando escribo una copia del búfer actual en un nuevo archivo usando :w [filename]
, parece que Vim usa los permisos de archivo predeterminados (es decir, establecidos por umask o lo que sea) para el nuevo archivo. Sin embargo, si el búfer actual se cargó desde un archivo existente, ¿no debería ser el comportamiento "correcto" duplicar los permisos de ese archivo? Por ejemplo, si estoy editando un archivo ejecutable y escribo una nueva copia del archivo, ¿por qué Vim no escribe un nuevo ejecutable ? ¿Hay alguna forma de obligar a Vim a comportarse como lo describo, aparte de hacer algo como ! chmod --reference % [newfilename]
después de escribir el nuevo archivo?
unix
vim
file-permissions
Kyle Strand
fuente
fuente
chmod
por usted. AFAIK, vim no tiene esto incorporado.Respuestas:
Podrías hacer algo como esto. Primero, capture el nombre del archivo original.
Luego, cuando guarde el nuevo archivo, cambie sus permisos para que sean los mismos que los del archivo original.
Simplemente ponga ambos comandos automáticos en su ~ / .vimrc.
fuente
echo system(
etc. asilent echo system(
etc. Esto evita que se cuelgue "presione ENTRAR para continuar".call system(...
imprimir cualquier cosa en la pantalla, pero estaba tratando de evitar el problema de que el comando fallara en silencio. Si no crees que alguna vez fallará, o preferirías vivir con el fracaso ocasional en lugar del molestoPress ENTER...
, entonces estoy de acuerdo con tu sugerencia. Sin embargo, creo que una mejor solución sería escribir una función que capture la salida del sistema () y la repita solo si no está vacía. Lo hice en complementos y funciona bastante bien.Press ENTER,
sin embargo, por lo que creo o me quedo consilent
o usocall
. ¡Gracias de nuevo por las sugerencias!Asegúrese de que no haya cambios sin guardar en el archivo y luego úselo
cp
para hacer una copia. Eso dará como resultado una copia con los mismos permisos que el original.fuente