web-dev-qa-db-ja.com

ファイルを保存するときに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
33
jiyinyiyong

Sublime Text 3(使用していると思います)は、デフォルトでアトミック保存を使用します("atomic_save": false(ユーザー設定で)、つまり、一時ファイルを作成し、保存時に元のファイルを上書きします(そして一時ファイルを削除します)。 Sublimeフォーラムの this thread を参照してください。特に、短所に関するjps(Sublimeの著者)からの返信については、こちらをご覧ください。

基本的に、アトミック保存は便利です。保存中に何かが発生しても、(理論的には)元のファイルが破損することはありません。欠点には、ファイルメタデータの潜在的な損失(Sublimeがそれを防ぐためにネイティブOS XおよびWindows APIを使用します)、非標準のアクセス許可を持つディレクトリでの予期しない動作(たとえば、既存のファイルの変更を許可しますが、新しいファイルの作成は許可しません)、および私が個人的に経験したいくつかのネットワークドライブまたはDropboxのようなサービスに保存する際の問題。

[〜#〜] edit [〜#〜]

最初にこれに答えてから、LESS/SASS/SCSS、Guardなどの保存後のファイル監視コンパイラ/プリプロセッサが監視していた元のファイルが原因で処理を行っていなかった多くの質問に遭遇しました。アトミック保存によって削除され、再度作成されましたが、それ以上は見ていませんでした。また、ネットワークファイルシステム、特にSSHFSを使用する場合、ファイルI/O速度に深刻な影響を与える可能性があります。理論上は良い考えですが、そこにあるのか、何をしているのかわからない場合は大混乱を招く可能性があります。そのため、ネットワーク化/共有/監視されたファイルに対して何らかの作業を行う場合は、たぶん有効にすることをお勧めしますオフ。 Preferences -> Settings-Userそしてこの行を追加します

"atomic_save": false

最後まで(ファイルは有効でなければなりません [〜#〜] json [〜#〜] ですので、コンマ,前の行の後)。保存して、準備完了です!

[〜#〜] update [〜#〜]

Sublime Text 3 Build 3072現在、atomic_saveがデフォルトで無効になりました!登録ユーザーの場合、最新の開発ビルドをダウンロードできます here 。この機能はパブリックベータ(現在はビルド3065)に移植されていませんが、新しいバージョンが間もなくリリースされることを願っています。 2015年2月/ 3月現在、Sublimeの開発ペースは大幅に向上しており、多くの新機能が追加されています。バグが解決されると、新しいパブリックバージョンが近々リリースされるはずです。

UPDATEへの更新

"atomic_save": falseは(2015年3月現在)ビルド3080以降のデフォルト設定です。

71
MattDMo

name.phpファイルに関連し、保存後に別のname.php-tmpファイルを取得している場合、PHPToolsを削除 package FromPreference-> Browse Packages、修正されます。

2
Kaushik Das