我正在观看fsnotify这是一个Go库的文件,我发现保存文件时会触发很多事件。
为什么Sublime Text会这么做?
2013/12/17 20:46:25 event: "parser.go": MODIFY
2013/12/17 20:46:25 event: ".subl317.tmp": MODIFY
2013/12/17 20:46:25 event: "parser.go": DELETE
2013/12/17 20:46:25 event: ".subl317.tmp": DELETE
2013/12/17 20:46:25 event: "parser.go": CREATE
2013/12/17 20:46:27 event: "parser.go": MODIFY
2013/12/17 20:46:27 event: ".subl3aa.tmp": MODIFY
2013/12/17 20:46:28 event: ".subl28d.tmp": CREATE
2013/12/17 20:46:28 event: ".subl28d.tmp": MODIFY
2013/12/17 20:46:28 event: "parser.go": MODIFY
2013/12/17 20:46:28 event: ".subl3aa.tmp": MODIFY
2013/12/17 20:46:28 event: "parser.go": DELETE
2013/12/17 20:46:28 event: ".subl3aa.tmp": DELETE
答案 0 :(得分:71)
Sublime Text 3(我假设您正在使用)默认情况下使用原子保存(可以通过在用户设置中设置"atomic_save": false
来禁用它),这意味着它会创建临时文件,然后覆盖保存时的原始文件(并删除临时文件)。请参阅Sublime论坛上的this thread以获取更多信息,尤其是jps
(Sublime'作者)对其缺点的回复。
基本上,原子保存是有用的,因为如果在保存期间发生任何事情(理论上)不应该以损坏的原始文件结束。缺点包括文件元数据的潜在丢失(尽管Sublime使用本机OS X和Windows API来防止这种情况),具有非标准权限的目录中的意外行为(例如,它们允许修改现有文件,但不允许创建新文件),以及保存到某些网络驱动器或Dropbox等服务时遇到的问题,我个人经历过这种情况。
由于我最初回答这个问题,我发现了许多问题,其中保存后文件监视编译器/预处理器(如LESS / SASS / SCSS,Guard等)没有做他们的事情因为原始文件他们正在观看已被原子保存删除,然后再次创建,但他们不再观看它了。使用网络文件系统时,它还会严重影响文件I / O速度,特别是SSHFS。理论上这是一个好主意,但是如果你不知道它在那里或者它在做什么,它会造成严重破坏,所以如果你做任何一种在网络/共享/观看文件上工作,最好只关闭它。只需转到 Preferences -> Settings-User
并添加此行
"atomic_save": false
到最后(文件必须有效JSON,因此请确保在上一行之后有一个逗号,
。保存,你很高兴去!
从Sublime Text 3 Build 3072开始,atomic_save
现在默认禁用!如果您是注册用户,则可以下载最新的开发构建here。此功能尚未移植到公共测试版(目前是Build 3065),但希望很快就会发布新版本。截至2015年2月/ 3月,Sublime的开发速度已大幅提升,并增加了许多新功能。一旦错误得到解决,就应该有新的公共版本。
更新到UPDATE
"atomic_save": false
(截至2015年3月)现在处于Build 3080及更高版本的默认设置中。
答案 1 :(得分:2)
如果它与 name.php 文件相关,并且在保存后您将获得另一个 name.php-tmp 文件,那么您可以删除PHPTools < / strong>包来自首选项 - &gt;浏览包,它将被纠正。