正如问题标题所提到的。我希望在我输入 VIM(插入模式)时自动保存文件。
这可能吗?如何实现?
我建议在文本更改时保存缓冲区:
autocmd TextChanged,TextChangedI <buffer> silent write
我在这里找到了。这个对我有用。
注意 (感谢@Kevin):不幸的是,如果您打开 vim 而不打开文件,则会导致错误,因为 vim 会尝试保存您键入的文本,但不会保存在哪里。
您可以使用 AutoSave 插件来执行此操作:
https://github.com/907th/vim-auto-save
请注意默认情况下禁用自动保存,运行:AutoSaveToggle
以启用/禁用它。
这将处理只读缓冲区(如 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
Vim 中没有对自动保存的原生支持。但是您可以使用vim-auto-save插件来执行此操作。
这个插件默认只在正常模式下自动保存,但它的 README中有一节描述了如何配置插件以在插入模式下保存。提示:您应该将插件配置为自动保存CursorHoldI
和/或TextChangedI
Vim 事件。
请参阅插件文档以了解如何安装和使用它。
不知道有没有人提到这个。按文件类型自动保存
(在这种情况下,它适用于 Markdown *.md 文件)
autocmd BufNewFile,BufRead *.md :autocmd TextChanged,TextChangedI <buffer> silent write
这将在文件内容被修改时写入文件内容,但仅适用于 Markdown (*.md) 文件。
907th/vim-auto-save 自动保存文件。但是如果你的 .vimrc 依赖于 write 事件,那么它可能有问题。
最近,我注意到https://github.com/chrisbra/vim-autosave,它将文件保存到备份目录,如果您的 .vimrc 依赖于 write 事件,这听起来很有希望。