web-dev-qa-db-fra.com

Que fait Sublime Text lorsque j'enregistre un fichier?

Je regardais des fichiers avec fsnotify qui est une bibliothèque Go, et j'ai constaté que de nombreux événements étaient déclenchés lorsque j'enregistrais un fichier.

Pourquoi Sublime Text fait-il autant?

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
33
jiyinyiyong

Sublime Text 3 (que je suppose que vous utilisez) utilise les sauvegardes atomiques par défaut (il peut être désactivé en définissant "atomic_save": false dans vos paramètres utilisateur), ce qui signifie qu'il crée des fichiers temporaires, puis écrase le fichier d'origine (et supprime le fichier temporaire) lors de l'enregistrement. Voir ce fil sur les forums Sublime pour un peu plus d'informations, en particulier la réponse de jps (l'auteur de Sublime) sur ses inconvénients.

Fondamentalement, la sauvegarde atomique est utile car si quelque chose devait se produire pendant la sauvegarde, vous (théoriquement) ne devriez pas vous retrouver avec un fichier d'origine corrompu. Les inconvénients incluent la perte potentielle de métadonnées de fichier (bien que Sublime utilise des API natives OS X et Windows pour éviter cela), un comportement inattendu dans les répertoires avec des autorisations non standard (par exemple, ils permettent la modification des fichiers existants, mais pas la création de nouveaux), et des problèmes lors de l'enregistrement sur certains lecteurs réseau ou services tels que Dropbox, que j'ai personnellement rencontrés.

[~ # ~] modifier [~ # ~]

Depuis que j'ai initialement répondu à cette question, je suis tombé sur un certain nombre de questions où les compilateurs/préprocesseurs d'observation des fichiers post-sauvegarde tels que LESS/SASS/SCSS, Guard, etc. ne faisaient pas leur travail parce que le fichier d'origine qu'ils regardaient avait été supprimé par sauvegarde atomique, puis recréé, mais ils ne le regardaient plus. Il peut également affecter gravement la vitesse d'E/S des fichiers lorsque vous travaillez avec des systèmes de fichiers réseau, SSHFS en particulier. C'est une bonne idée en théorie, mais cela peut faire des ravages si vous ne savez pas qu'il est là ou ce qu'il fait, donc si vous travaillez sur des fichiers en réseau/partagés/surveillés, il est probablement préférable de tourner il hors tension. Accédez simplement à Preferences -> Settings-User et ajoutez cette ligne

"atomic_save": false

à la fin (le fichier doit être valide JSON , alors assurez-vous qu'il y a une virgule , après la ligne précédente). Économisez et vous êtes prêt à partir!

[~ # ~] mise à jour [~ # ~]

À partir de Sublime Text 3 Build 3072, atomic_save est maintenant désactivé par défaut! Si vous êtes un utilisateur enregistré, vous pouvez télécharger la dernière version de développement ici . Cette fonctionnalité n'a pas été portée sur la version bêta publique (actuellement la version 3065), mais nous espérons qu'une nouvelle version sera bientôt disponible. En février/mars 2015, le rythme de développement de Sublime s'est considérablement accéléré, avec un certain nombre de nouvelles fonctionnalités ajoutées. Une fois les bogues résolus, une nouvelle version publique devrait être disponible.

mise à jour de la MISE À JOUR

"atomic_save": false est (à partir de mars 2015) maintenant dans les paramètres par défaut de Build 3080 et supérieur.

71
MattDMo

S'il est lié au fichier name.php, et après avoir enregistré un autre fichier name.php-tmp, vous pouvez alors supprimer PHPTools package De Préférence -> Parcourir les packages , Il sera corrigé.

2
Kaushik Das