保存文件时Sublime Text正在做什么?

时间:2013-12-17 12:52:07

标签: sublimetext sublimetext3

我正在观看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

2 个答案:

答案 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;浏览包,它将被纠正。