键入时在VIM中自动保存

时间:2013-06-28 13:00:36

标签: vim

正如问题标题所述。我希望在我输入VIM(插入模式)时自动保存文件。

这可能吗?如何实现呢?

6 个答案:

答案 0 :(得分:3)

您可以使用AutoSave插件执行该操作:

https://github.com/907th/vim-auto-save

请注意默认情况下禁用AutoSave,运行:AutoSaveToggle启用/禁用它。

答案 1 :(得分:2)

这将处理只读缓冲区(如netrw)和未检测到的文件类型。使用TextChangedI而不是InsertLeave似乎会对在插入模式下键入的每个字符产生写入,这可能是您想要的,也可能不是您想要的。

augroup autosave
    autocmd!
    autocmd BufRead * if &filetype == "" | setlocal ft=text | endif
    autocmd FileType * autocmd TextChanged,InsertLeave <buffer> if &readonly == 0 | silent write | endif
augroup END

答案 2 :(得分:1)

Vim中没有自动保存的原生支持。 但您可以使用vim-auto-save插件来执行此操作。

此插件仅在默认情况下自动保存在正常模式下,但是a section in it's README描述了如何配置插件以便在插入模式下保存。 提示:您应该将插件配置为自动保存CursorHoldI和/或TextChangedI Vim事件。

请参阅插件文档,了解如何安装和使用它。

答案 3 :(得分:0)

我建议每当文本更改时保存缓冲区:

autocmd TextChanged,TextChangedI <buffer> silent write

我找到了here。它对我有用。

答案 4 :(得分:0)

907th / vim-auto-save自动保存文件。但是,如果您的.vimrc依赖于write事件,则可能有问题。

最近,我注意到https://github.com/chrisbra/vim-autosave,它将文件保存到备份目录,如果您的.vimrc依赖于写入事件,这听起来很有希望。

答案 5 :(得分:0)

不知道有人提到过这个。 自动保存每种文件类型

(在本例中是Markdown * .md文件)

autocmd BufNewFile,BufRead *.md :autocmd TextChanged,TextChangedI <buffer> silent write

这将在文件修改后立即写入文件内容,但仅用于Markdown(* .md)文件。