我一直在vim中这样做:[在插入或正常模式下做某事],Esc,:ws
我每天都这样做数百次。相反,我想失去这个习惯,并且在对缓冲区进行任何更改后立即将vim保存到文件中。
所有东西都在运行SSD,所以我不认为性能会成为一个问题。
答案 0 :(得分:14)
将此简单映射添加到~/.vimrc
:
inoremap <Esc> <Esc>:w<CR>
在 INSERT 模式下的每个<Esc>
上自动写入当前缓冲区。
答案 1 :(得分:3)
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
这些事件在不活动后仅触发一次,并依赖于updatetime
变量(默认值:4000毫秒)。所以你可以:
:au CursorHold <buffer> :update
在正常模式下默认4秒不活动后,将更新当前缓冲区文件(即仅在修改后保存)。
如果要在插入模式下获得相同的行为,请为CursorHoldI
添加自动命令。
答案 2 :(得分:2)
我不知道,除了编码(check out the VIM Wiki for a starting point)。出于恢复目的,VIM交换文件几乎可以满足您的要求。
来自VIM man page;
交换文件在输入200个字符后或更新时更新 没有输入任何东西四秒钟
似乎会抓住大多数怪癖。您是否试图避免某些特定问题?
答案 3 :(得分:1)