如何在vim中定期重复任何命令?

6

实际上,我希望自动保存当前文件,:w 命令可以将文件写入,因此我认为,当我以固定间隔(比如每30秒)重复执行此命令时,我就能实现我的愿望。但是我该如何做呢?


糟糕。我曾经设置过它,但在将我的vimrc放入版本控制之前,我将其删除了。它使用了updatetime,我想是这样的。但它自己创建了问题,使得自动保存对我来说不值得。现在我有inoremap <Esc> <Esc>:w<CR>,它做我需要的事情,而不是更多的事情。 - romainl
相关链接:https://dev59.com/xGw05IYBdhLWcg3w11W0?rq=1 - Ingo Karkat
相关链接:https://vi.stackexchange.com/a/38183/25982。使用此方法每X毫秒运行一次某个操作。 - nullromo
2个回答

4

Vimscript本身是单线程的,您不能定期执行命令。 最接近周期性触发器的是autocmds,特别是CursorHold事件,在'updatetime'(通常为4秒)后未按键时触发。

另一个用于自动保存的有趣事件是FocusLost,但该事件可能无法在终端中触发,只能在GVIM中触发。

使用它,可以定义类似于以下内容:

autocmd CursorHold,CursorHoldI <buffer> silent! write

我昨晚在谷歌上搜索了一些相关的内容,发现了一些很有希望的结果(包括一些专门用于自动保存的),它们都使用了CursorHold的方法。 - Wayne

1

请查看:help autosave


这会将你引导到todo.txt;截至Vim 7.3.584,它尚未实现。欢迎志愿者加入 :-) - Ingo Karkat
VIM 7.3 中提供了自动保存功能。 - Ifthikhan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接