Sam*_*eer 38
每当文本更改时,这将保存缓冲区.(Vim 7.4)
autocmd TextChanged,TextChangedI <buffer> silent write
当您开始读取文件时,请将缓冲区变量设置为当前时间:
au BufRead,BufNewFile * let b:save_time = localtime()
Run Code Online (Sandbox Code Playgroud)
设置一个事件以检查自上次保存以来是否已经过了足够的时间,如果没有则更新:
au CursorHold * call UpdateFile()
Run Code Online (Sandbox Code Playgroud)
设置自动保存期限,以秒为单位:
let g:autosave_time = 1
Run Code Online (Sandbox Code Playgroud)
定义一个函数来保存文件(如果需要):
" 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
Run Code Online (Sandbox Code Playgroud)
然后,明确重置保存时间:
au BufWritePre * let b:save_time = localtime()
Run Code Online (Sandbox Code Playgroud)
我没有在vim 7.0及更高版本上测试过上述内容.此外,CursorHold事件不太可能足够用于这么小的自动保存期(它也不会在录制时触发) - 也许您也应该调用UpdateFile()CursorMoved.
另外,请考虑使用交换文件.默认情况下,在输入200个字符或4秒不活动后,交换文件将被写入.从交换中恢复非常简单,并且可能更加可靠,以防出现问题.
| 归档时间: |
|
| 查看次数: |
8796 次 |
| 最近记录: |