我正在使用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
MattDMo.. 72
Sublime Text 3(我假设你正在使用)默认情况下使用原子保存(可以通过"atomic_save": false
在用户设置中设置来禁用它),这意味着它会创建临时文件,然后覆盖原始文件(并删除临时文件)保存.请在Sublime论坛上查看此主题以获取更多信息,尤其是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
默认情况下已禁用!如果您是注册用户,可以在此处下载最新的开发版本.此功能尚未移植到公共测试版(目前是Build 3065),但希望很快就会发布新版本.截至2015年2月/ 3月,Sublime的开发速度已大幅提升,并增加了许多新功能.一旦这些错误得到解决,就应该有一个新的公共版本.
更新到UPDATE
"atomic_save": false
是(截至2015年3月)现在是Build 3080及更高版本的默认设置.
Sublime Text 3(我假设你正在使用)默认情况下使用原子保存(可以通过"atomic_save": false
在用户设置中设置来禁用它),这意味着它会创建临时文件,然后覆盖原始文件(并删除临时文件)保存.请在Sublime论坛上查看此主题以获取更多信息,尤其是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
默认情况下已禁用!如果您是注册用户,可以在此处下载最新的开发版本.此功能尚未移植到公共测试版(目前是Build 3065),但希望很快就会发布新版本.截至2015年2月/ 3月,Sublime的开发速度已大幅提升,并增加了许多新功能.一旦这些错误得到解决,就应该有一个新的公共版本.
更新到UPDATE
"atomic_save": false
是(截至2015年3月)现在是Build 3080及更高版本的默认设置.