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

 夜月丶凉如诗 发布于 2023-02-09 19:46

我正在使用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,所以请确保,在上一行之后有一个逗号).保存,你很高兴!

UPDATE

截至Sublime Text 3 Build 3072,atomic_save默认情况下已禁用!如果您是注册用户,可以在此处下载最新的开发版本.此功能尚未移植到公共测试版(目前是Build 3065),但希望很快就会发布新版本.截至2015年2月/ 3月,Sublime的开发速度已大幅提升,并增加了许多新功能.一旦这些错误得到解决,就应该有一个新的公共版本.

更新到UPDATE

"atomic_save": false 是(截至2015年3月)现在是Build 3080及更高版本的默认设置.

1 个回答
  • 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,所以请确保,在上一行之后有一个逗号).保存,你很高兴!

    UPDATE

    截至Sublime Text 3 Build 3072,atomic_save默认情况下已禁用!如果您是注册用户,可以在此处下载最新的开发版本.此功能尚未移植到公共测试版(目前是Build 3065),但希望很快就会发布新版本.截至2015年2月/ 3月,Sublime的开发速度已大幅提升,并增加了许多新功能.一旦这些错误得到解决,就应该有一个新的公共版本.

    更新到UPDATE

    "atomic_save": false 是(截至2015年3月)现在是Build 3080及更高版本的默认设置.

    2023-02-09 19:47 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有