使用 Vim 有一段时间了,SpaceVim 也陆续出了好几个版本。自动保存这个功能一直没有加上,其实并不是没有这个需求,而是没有找到合适的逻辑去实现。最新版SpaceVim新增了自动保存的功能,当然这一功能默认是关闭的。下面来简单介绍一下如何启用自动保存功能。
前因
再使用Vim编辑代码时,经常会出现无意间关闭了Vim,或者各种插件问题导致Vim不能正常工作。忘记保存文件而导致文件编辑内容丢失。不知道大家有没有遇到过,我自己时遇到过好多次。最近,刚刚用上win11,发现office左上角自带了一个自动保存按钮。突然脑洞大开,是时候给SpaceVim也增加这一功能了。
再网上搜索了vim自动保存,发现有不少的插件提供这一功能,总的来说有如下两种逻辑:
1、将文件定期保存到指定的备份文件夹,比如~/.vim/backup
2、定期执行:w命令。
我更倾向于后者。
基本配置
自动保存功能,包含在edit模块里面,可以通过如下配置进行设置:
[[layers]]
name = 'edit'
autosave_timeout = 300000
autosave_events = ['InsertLeave', 'TextChanged']
autosave_all_buffers = false
目前 edit
模块支持如下配置选项:
autosave_timeout
: 设置自动保存的时间间隔,默认是0,表示未开启定时自动保存。这个选项设定的值需要是毫秒数,并且需要小于100*60*1000 (100 分钟) 且 大于1000(1分钟)。比如设定成每隔5分钟自动保存一次:[[layers]] name = 'edit' autosave_timeout = 300000
autosave_events
: 设定自动保存依赖的Vim事件,默认是空表。比如需要在离开插入模式时或者内容改变时自动保存:[[layers]] name = 'edit' autosave_events = ['InsertLeave', 'TextChanged']
autosave_all_buffers
: 设定是否需要保存所有文件,默认是只保存当前编辑的文件,如果该选项设定成true
则保存所有文件。[[layers]] name = 'edit' autosave_all_buffers = true
autosave_location
: 设定保存文件的位置,默认为空,表示保存为原始路径。也可以设定成一个备份文件夹,自动保存的文件保存到指定的备份文件夹里面,而不修改原始文件。[[layers]] name = 'edit' autosave_location = '~/.cache/backup/'