我正在尝试inotifywait用于监视特定文件夹并在需要时重新编译.问题是我正在大量使用vim,当我在vim中编辑时,任何修改过的文件实际上会触发一些"冗余"事件,例如:
:w
sass/somefolder/ CREATE 4913
sass/somefolder/ CREATE some
sass/somefolder/ MODIFY some
Run Code Online (Sandbox Code Playgroud)
我花了一些时间才意识到实际上一切都还可以inotifywait- 我已经尝试使用nano,一切都按预期工作,只有"修改"被触发,只有一次.
我试过编辑(只是为了测试目的,不要用力判断我)Emacs以及Emacs也有问题 - 每次我按Ctrl-X + Ctrl + S MODIFY触发3次.
问题是如何解决vim中多余事件的问题?
顺便说一句,directory和backupdir我.vimrc都不是被监视的文件夹中.
UPD:这个链接解释了为什么事情会发生如何发生,但我仍然不知道如何解决这个问题.好吧,当然我可以忽略4913包含字符串,但即使对于试图使用inotify来编译SASS的人来说,这太过愚蠢)))
UPD:VIM版本是7.3.429
如果您想在编辑文件后触发操作(例如重新编译代码),通常需要查看IN_CLOSE_WRITE事件并忽略其他所有操作.
您绝对不希望监视IN_MODIFY事件,因为正如您所发现的,在编辑文件时可能会多次触发它们.
所以:
inotifywait -e close_write ...
Run Code Online (Sandbox Code Playgroud)