I don't want to know about why you should not auto-save or there is swap file etc or whatever reason to not auto-save.
I simply want to auto-save the current working file to save in every 1 second in vim.
How can I achieve this?
I don't want to know about why you should not auto-save or there is swap file etc or whatever reason to not auto-save.
I simply want to auto-save the current working file to save in every 1 second in vim.
How can I achieve this?
The vim-workspace plugin has a fairly customizable auto-save feature that may suit your needs (with autoread so you get last writer wins behaviour). You can set it to always autosave (by default, it only autosaves while in a workspace session) and set your updatetime accordingly.
This saves the buffer whenever text is changed. (Vim 7.4)
autocmd TextChanged,TextChangedI <buffer> silent write
When you start reading a file, set a buffer variable to the current time:
Set an event to check if enough time has elapsed since the last save and update if not:
Set the auto-save period, in seconds:
Define a function to save the file if needed:
Then, to reset the save time explicitly:
I have not tested the above on vim 7.0 and later. Also, the CursorHold event is unlikely to be enough for such a small auto-save period (it also doesn't trigger when recording) - maybe you should also call
UpdateFile()
on CursorMoved as well.Also, consider using swap files. By default a swap file is writen to after either 200 characters typed or 4 seconds of inactivity. Recovery from swap is quite simple and maybe more reliable, in case something goes wrong.