在 OS X 上使用 vim 写入文件不会触发文件更改事件
我正在使用 watchdog 来监视 OS X 上的 .less 文件更改事件。使用 TextMate 或 Sublime Text 的 less 文件会捕获修改事件。但是,如果我使用 vim 编辑内容,则不会触发文件修改事件(但会捕获使用 vim 创建的文件的文件创建事件)。我在 FSEvents 和 kqueue 中看到了相同的行为(我对这两者的了解几乎为零)。
我想知道有人可以解释这种行为吗?
I am using watchdog to monitor .less file change events on OS X. If I change the contents of a .less file with TextMate or Sublime Text the modification event is captured. However, if I edit the content with vim no file modification event is fired (but file creation events for files created with vim are captured). I have seen the same behaviour with FSEvents and kqueue (both of which I have practically zero knowledge of).
I wonder can anybody explain this behaviour?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
在 Watchdog 的自述文件 上,有一个部分专门针对您描述的问题:关于在 Vim 等编辑器中使用 watchdog。建议在
~/.vimrc
中使用set noswapfile
。On Watchdog's readme there is a section specifically targeting the problem you describe: About using watchdog with editors like Vim. It is suggested to use
set noswapfile
in your~/.vimrc
.Vim 通常不会创建临时文件然后重命名它。这是为了在写入文件时保留文件系统方面的内容,例如链接(软链接和硬链接)。 Vim 文档的 Writing 部分对此进行了简要讨论,详细信息请参阅
'backupcopy'
选项文档。您的文件更改事件可能仅限于更改目录条目。
Vim normally does not create a temporary file and then rename it. This is so that filesystem aspects such as links (both soft and hard) are preserved when writing files. This is discussed briefly in the Writing section of the Vim documentation, with further information in the
'backupcopy'
option documentation.Your file change events might be limited to changing directory entries.