在vim中每次编辑后保存文件

Nic*_*kiy 7 vim

我一直在vim中这样做:[在插入或正常模式下做某事],Esc,:ws

我这样做了几百次.相反,我想失去这个习惯,并且在对缓冲区进行任何更改后立即将vim保存到文件中.

一切都在SSD上运行,所以我不认为性能会成为一个问题.

rom*_*inl 14

将此简单映射添加到您的~/.vimrc:

inoremap <Esc> <Esc>:w<CR>
Run Code Online (Sandbox Code Playgroud)

<Esc>INSERT模式下自动写入当前缓冲区.

  • 看起来很明显,现在我考虑过它,但只解决了一半的问题.您可以编辑缓冲区而无需进入插入模式. (5认同)
  • 您可能更喜欢“autocmd InsertLeave * update”而不是映射。 (2认同)

XLI*_*LII 6

和可能会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如果您想在插入模式下获得相同的行为,请添加自动命令。


AlG*_*AlG 3

据我所知,除了编码之外(查看 VIM Wiki 作为起点)。VIM 交换文件几乎可以满足您的要求,用于恢复目的。

来自VIM 手册页

输入 200 个字符或四秒内未输入任何内容后,交换文件会更新

看起来这可以捕捉到大多数怪癖。您是否想避免某些特定问题?