在vim编辑太多inotify事件(Too many inotify events while ed

2019-07-29 03:27发布

我试图用inotifywait监控特定的文件夹,如果需要重新编译。 问题是,我使用vim严重,当我在vim编辑我其实修改的任何文件,会触发一些“多余”的事件,是这样的:

:w
sass/somefolder/ CREATE 4913
sass/somefolder/ CREATE some
sass/somefolder/ MODIFY some

我花了一些时间来实现,实际上一切都与OK inotifywait -我已经尝试使用nano和一切工作就如同预期的,只有“修改”被触发,只有一次。

我试图编辑(只用于测试目的,不判断我硬)Emacs和有问题使用Emacs,以及 - 每个我按Ctrl-X + Ctrl + S键修改时间触发的3倍。

现在的问题是如何解决与VIM多余事件的问题?

顺便说一句, directorybackupdir在我.vimrc是不是被监视的文件夹中。

UPD: 此链接解释了为什么实际的事情发生了,他们是如何发生的,但我仍然不知道如何解决这个问题。 嗯,当然,我可以忽略4913包含字符串,但这是太缺憾甚至一个谁试图使用的inotify编译SASS)))

UPD:VIM版本7.3.429

Answer 1:

如果您正在寻找触发一个动作(如重新编译代码)已编辑的文件后,您通常要看看IN_CLOSE_WRITE事件,而忽略其他一切。

你绝对希望监视IN_MODIFY事件,因为,因为你已经发现,它们可以同时编辑一个文件引发了很多次。

所以:

inotifywait -e close_write ...


Answer 2:

更好的编辑这样做的强制执行原子。 换句话说,你不会用半书面文件,如果电力死在错误的时刻结束。

一个选项,可以帮助是只使用自动命令BufWritePost里做你重新编译。

但是,如果你把Vim之外的其他变化,你可能要等待多个通知,并做了编译没有发生一段时间后,说了半秒。 这是怎么回事,以涵盖其他突发像做了源头控制上拉,例如。



Answer 3:

大多数编辑器将使用临时文件中写入撤销信息,或文件编辑,如果你提交并保存之前。 此外,大多数编辑器需要写一个临时文件交谈子壳和脚本。 我怀疑4913文件可能是你的vim设置的因素,或者您的数字用户ID的功能,uniquify文件。

你可以与strace VIM时看到的文件更新,并且会发生什么两侧,如叉+高管或其他文件被触摸这可能暗示其宏观或设施是导致此。



文章来源: Too many inotify events while editing in vim
标签: vim inotify