Quiero modificar archivos vimsin cambiar las marcas de tiempo de creación.
Los documentos no parecen mencionar nada sobre tal posibilidad.
Me gustaría lograr esto sin desactivar la función de intercambio / recuperación.
Supongo que una alternativa sería almacenar el tiempo en algún lugar y luego sobrescribirlo al salir.

Respuestas:
La respuesta de Sato sería correcta en una derivada estándar de Unix, donde a
ctimemenudo se confunde con el tiempo de creación pero en realidad es el tiempo de cambio de inodo, y "preservar" realmente no tiene sentido. Sin embargo, pregunté qué sistema operativo está usando el póster porque Mac OS X mantiene una hora de creación separada que es una fecha y hora de creación real, y no se actualiza modificando el archivo en su lugar o cambiando el modo del archivo o algo así, todo de los cuales se actualizanctime.Puede ver el tiempo de creación haciendo una Obtener información en un archivo en el Finder o
GetFileInfo <file>desde una línea de comandos (GetFileInforequiere la instalación de las herramientas del desarrollador). El tiempo se puede modificar usandoSetFile -d <datetime> <file>(también requiere herramientas de desarrollador).Entonces, parece razonable (para mí, no sé acerca de Bram :-)) pedir vim para mantener el tiempo de creación en Mac OS X, copiando el tiempo de creación del archivo original en el nuevo archivo, pero claramente no 't, y mirando a través de las fuentes vim, no veo ningún lugar donde lo haga. Entonces, desafortunadamente, parece que la respuesta a la pregunta del afiche es "Actualmente no es posible". Debido a que Mac OS X (con herramientas de desarrollo) permite obtener y configurar el tiempo de creación desde la línea de comandos, es posible armar un script vim que lo haga, aunque eso (actualmente) está más allá de mis capacidades de creación de scripts vim.
Editar
¡Decidí jugar con algo de scripting y realmente lo conseguí!
Agregue lo siguiente a su .vimrc:
Eso establece que los comandos automáticos se ejecuten antes de que se lea un archivo (para editar en un búfer, no para cosas como
:read) y después de que se escriba. Las primeras llamadasSaveFileCreateTimeque se utilizanGetFileInfo -dpara obtener el tiempo de creación del archivo y almacenarlo en la variable local del búferb:created. Después de que se escribe un archivo,RestoreFileCreateTimese llama. Sib:createdexiste, se usa en unsystemcomandoSetFile -dpara establecer la hora.Aquí hay un ejemplo:
Puede ver que el tiempo de cambio de inodo (como se muestra por
stat) ha cambiado, pero el tiempo de creación del archivo (como se muestra porGetFileInfo) no. ¡Éxito!Como se señaló anteriormente, esto requiere que las herramientas de desarrollador estén instaladas para obtener GetFileInfo y SetFile. Además, este es mi primer script real, ¡así que siéntete libre de señalar todos los horribles errores que he cometido!
fuente
vimun tiempo de ejecución alternativo usando esas herramientas, que sí he instalado por cierto, para preservar la fecha de creación?vimdiffusaba archivos propiedad de root y usuario. Hasta aquí todo bien. Debes publicar esto en la wiki de Vim Tips . Esa fue una gran respuesta, gracias.statcomando es para Linux, supongo. En OS X 10.8.5 usaríasstat -f %Sc.Agregue
set backupcopy=yesa su archivo vimrc para preservar el tiempo de creación de archivos en macOS.Para más información, ver
:help 'backupcopy'.Fuente: ¿Cómo puedo hacer que VIM mantenga la fecha de creación de un archivo? (OS X)
fuente
Lo que desea no es posible implementar en UNIX utilizando funciones de espacio de usuario estándar. El
ctimenúcleo actualiza automáticamente el archivo cuandoinodecambia el archivo . A diferencia deatimeymtime, no hay una función accesible para el usuario para establecerctimeun valor arbitrario.fuente
vim, en lugar de intercambiar archivos, simplementecp test.swp test.txt?less test.swpdebería responder a su pregunta.