Подтвердить что ты не робот

Что такое Sublime Text, когда я сохраняю файл?

Я смотрел файлы с 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
4b9b3361

Ответ 1

Sublime Text 3 (который, как я полагаю, вы используете) использует атомные значения по умолчанию (его можно отключить, установив "atomic_save": false в пользовательские настройки), что означает, что он создает временные файлы, а затем перезаписывает исходный файл (и удаляет временный файл) при сохранении. См. этот поток на форумах Sublime для получения дополнительной информации, особенно ответ от jps (автор Sublime) на его недостатки.

В принципе, атомная экономия полезна, потому что, если что-то должно произойти во время сохранения, вы (теоретически) не должны заканчиваться поврежденным исходным файлом. Недостатки включают потенциальную потерю метаданных файлов (хотя Sublime использует собственные OS X и Windows API для предотвращения этого), неожиданное поведение в каталогах с нестандартными разрешениями (например, они позволяют изменять существующие файлы, но не создавать новые), и когда вы сохраняете некоторые сетевые диски или службы, такие как Dropbox, которые я лично испытал.

ИЗМЕНИТЬ

Поскольку я изначально ответил на это, я столкнулся с рядом вопросов, когда компиляторы/препроцессоры с последующим сохранением файлов, такие как LESS/SASS/SCSS, Guard и т.д., не выполняли свою задачу, потому что исходный файл, который они были наблюдение было уничтожено атомной экономией, а затем создано снова, но они больше не наблюдали за ним. Это также может серьезно повлиять на скорость ввода-вывода файлов при работе с сетевыми файловыми системами, в частности, с SSHFS. Теоретически это хорошая идея, но она может нанести ущерб, если вы этого не знаете или что это делает, поэтому, если вы будете заниматься какой-либо работой в файлах с сетевым/общим/просмотренным файлом, возможно, лучше всего просто повернуть это от. Просто перейдите в Preferences -> Settings-User и добавьте эту строку

"atomic_save": false

до конца (файл должен быть действительным JSON, поэтому убедитесь, что после предыдущей строки есть запятая ,)., Сохраните, и вам будет хорошо!

UPDATE

Как и в Sublime Text 3 Build 3072, atomic_save теперь отключен по умолчанию! Если вы являетесь зарегистрированным пользователем, вы можете загрузить последнюю версию здесь. Эта функция не была перенесена на публичную бета-версию (в настоящее время Build 3065), но, надеюсь, скоро будет выпущена новая версия. По состоянию на февраль/март 2015 года, Sublime темпы развития значительно выросли, добавив ряд новых функций. Как только ошибки будут разработаны из них, должна появиться новая публичная версия.

обновить до UPDATE

"atomic_save": false (по состоянию на март 2015 года) теперь находится в настройках по умолчанию из Build 3080 и выше.

Ответ 2

Если это связано с файлом name.php, а после сохранения вы получаете еще один файл name.php-tmp, вы можете удалить PHPTools из списка Предпочтения → Обзор пакетов, он будет исправлен.