我一直在vim中这样做:[在插入或正常模式下做某事],Esc,:ws
我这样做了几百次.相反,我想失去这个习惯,并且在对缓冲区进行任何更改后立即将vim保存到文件中.
一切都在SSD上运行,所以我不认为性能会成为一个问题.
rom*_*inl 14
将此简单映射添加到您的~/.vimrc:
inoremap <Esc> <Esc>:w<CR>
Run Code Online (Sandbox Code Playgroud)
<Esc>在INSERT模式下自动写入当前缓冲区.
和可能会CursorHold有所CursorHoldI帮助。根据文档:
|CursorHold| the user doesn't press a key for a while
|CursorHoldI| the user doesn't press a key for a while in Insert mode
Run Code Online (Sandbox Code Playgroud)
这些事件在不活动后仅触发一次,并且取决于updatetime变量(默认值:4000ms)。所以你可以:
:au CursorHold <buffer> :update
Run Code Online (Sandbox Code Playgroud)
在正常模式下默认 4 秒不活动后,它将更新当前缓冲区文件(即仅在修改时保存)。
CursorHoldI如果您想在插入模式下获得相同的行为,请添加自动命令。
据我所知,除了编码之外(查看 VIM Wiki 作为起点)。VIM 交换文件几乎可以满足您的要求,用于恢复目的。
来自VIM 手册页;
输入 200 个字符或四秒内未输入任何内容后,交换文件会更新
看起来这可以捕捉到大多数怪癖。您是否想避免某些特定问题?