2011-04-09 159 views
4

我想在Vim中实现一个AutoCmd,当当前缓冲区被修改时需要执行它。Vim缓冲区已被修改

我已经通读了文档中所有可用于AutoCmd的事件,但无法找到有助于确定何时修改缓冲区的内容。

这并不一定意味着“当写入缓冲区时”,因为当缓冲区被修改时需要调用我需要触发的操作,其中包括正在写入。

有关如何实现BufIsModified可实现此目标的任何想法?

注:What is a vimrc function to determine if a buffer has been modified?重复,因为这个问题是关于autocmd不仅缓冲区修改后的校验

+0

的可能重复:http://stackoverflow.com/q/6538779 – bitmask 2011-09-03 01:20:28

+2

这是奇怪的,这个问题怎么来的是另外一个问题重复,如果这是第一个问? – alfredodeza 2011-09-05 16:07:43

+1

什么重复?我如何获得http://stackoverflow.com/q/6538779作为** autocmd **工作? (原因我来到这里..) – antak 2012-10-24 04:29:55

回答

2

突然出现在我的脑海里的唯一的事情就是使用CursorMovedCursorMovedI事件。

HTH

+0

听起来像这样会工作,并在事件功能测试' &modified' vim变量,如果不变则为0,如果自上次写入磁盘后发生变化,则为1。 – 2011-04-09 19:26:29

+1

您可以运行一堆Ex命令来完全转换缓冲区,而无需移动光标或进入插入模式。 – intuited 2011-04-09 20:37:03

+1

我愿意与Ex命令妥协。答案与赫伯特的评论结合起来就是我想要的。谢谢! – alfredodeza 2011-04-09 23:57:42