Eric's Blog 时光荏苒,岁月如梭

在 SpaceVim 中启自动保存

2022-02-06
Eric Wong

使用 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/'
    

分享到:

评论

目前只支持使用邮件参与评论。

目录