Al iniciar la lectura de un archivo, defina una variable de memoria intermedia a la hora actual:
au BufRead,BufNewFile * let b:save_time = localtime()
Establecer un evento para comprobar si ha transcurrido suficiente tiempo desde la última parada de actualización no si:
au CursorHold * call UpdateFile()
establecer el período de almacenamiento automático, en cuestión de segundos:
let g:autosave_time = 1
definir una función para guardar el archivo si nee ded:
" save if needed/update the save_time after the save
function! UpdateFile()
if((localtime() - b:save_time) >= g:autosave_time)
update
let b:save_time = localtime()
else
" just debugging info
echo "[+] ". (localtime() - b:save_time) ." seconds have elapsed so far."
endif
endfunction
Entonces, para poner a cero el tiempo de guardar explícitamente:
au BufWritePre * let b:save_time = localtime()
no he probado lo anterior en VIM 7.0 y posterior. Además, es poco probable que el evento CursorHold sea suficiente para un período de guardado automático tan pequeño (tampoco se activa cuando se graba); tal vez también deberías llamar al UpdateFile()
en CursorMoved.
Además, considere el uso de archivos de intercambio. Por defecto, un archivo de intercambio se escribe después de 200 caracteres escritos o 4 segundos de inactividad. La recuperación del intercambio es bastante simple y tal vez más confiable, en caso de que algo salga mal.
Parece que esta característica ya está prevista para las próximas versiones de Vim (en Vim 7.3 ': help autosave' muestra de' todo.txt'). Por el momento, creo que no hay ningún autocmd/evento adecuado para escribir un vimscript para realizar guardar por cada segundo. Pero la solución propuesta por Michael debería funcionar para la mayoría de los casos, porque incluso si no realiza salvaciones cuando el cursor no se mueve, no es muy probable que realice ningún cambio sin mover el cursor. – mMontu
http://vim.wikia.com/wiki/Auto-save_current_buffer_periodically –
En vim 7.4, la función de autoguardado incorporada aún se incluye en la lista de mejoras para agregar en futuras versiones. –