如何打开 ~~~.sublime-package 文件?

How to open ~~~.sublime-package file?

我正在使用 Sublime Text 3,但无法打开 ~~~.sublime-package 文件。

当我用 Sublime Text 3 打开它时,它看起来像这样:

504b 0304 1400 0000 0800 9496 084d 8c0b
5989 b600 0000 0501 0000 0a00 0000 2e67
6974 6967 6e6f 7265 358e c16a 0331 0c44
effa 0a43 6f81 557f 2297 420a 8524 a752
8a62 2bae a9d7 32b2 b224 7f1f 3b9b 5c84
f466 18cd 06eb eddb cb0f 6cd0 e61d 9578

文件当然比那个长,反正我看不懂

如何阅读和编辑此文件?

您尝试打开的文件基本上是一个存档包或 zip 文件(只是不符合通常的命名约定)

您可能需要解压缩 zip 或将其存储在正确的位置,以便 Sublime Text 应用程序可以使用它们。

https://www.sublimetext.com/docs/3/packages.html

一个sublime-package文件只是zip个扩展名改变的文件;也就是说,如果您有可以打开 zip 文件的工具,您可以打开包并使用它查看内容。这可能需要也可能不需要您临时重命名文件以具有 zip 扩展名,具体取决于工具。

也就是说,只有当您是第一个创建文件的人时,才建议直接修改 sublime-package 并且是安全的;否则,您 运行 可能会在最意想不到的时候丢失您的更改。

要解释原因,请介绍一些背景知识。首先,有两个地方可以存在 sublime-package 文件。

第一个位于名为 Packages 的文件夹中,该文件夹位于 Sublime 本身的安装文件夹中(即可执行文件所在的位置)。这些被称为 Shipped 包,因为它们与 Sublime 一起提供并且每个使用 Sublime 的人都可以访问。

第二个位于名为 Installed Packages 的文件夹中,该文件夹包含在用户特定的 Sublime Data 文件夹中。此位置因平台而异,但您始终可以通过选择 Preferences > Browse Packages 然后向上一级文件夹找到它。这里的包被称为 Installed 包,是您自己在 Sublime 中安装的包。一般来说这里的包是由Package Control.

安装的

当 Sublime Text 更新到新版本时,它会用(可能)全新的 sublime-package 文件替换所有 Shipped 包以更新它们。

同样,当 Package Control 升级包时,它会丢弃旧的 sublime-package 文件并用更新的版本替换它。

这一切归结为:永远不要直接修改一个你自己没有亲自修改过的sublime-package文件复制到适当的位置,或者在将来的某个时候,您的更改将在软件包升级期间被毫不客气地擦除。

所以剩下的问题是如何在需要时实际修改包文件,答案是创建一个 Override.

有一个名为 Packages 的文件夹,您可以通过从菜单中选择 Preferences > Browse Packages 来访问该文件夹。这个文件夹也可以包含包,但这里是Unpacked;也就是说,不是有一个名为 MyPackage.sublime-package 的文件包含一些文件,而是有一个名为 MyPackage 的文件夹包含文件。

当 Sublime 正在通过 sublime-package 文件加载它包含的文件时,它会在 Packages 文件夹中查找是否有与 Packages 同名的文件夹=10=]文件;如果有, 该文件夹中有一个文件具有 exact 名称和路径sublime-package 中的文件,Sublime 将加载它而不是 sublime-package 文件中的文件。

例如;假设有一个名为 Foo.sublime-package 的包,其中包含一个名为 foo.py 的文件;当 Sublime 正在扫描 Foo.sublime-package 以查找它应该加载的文件时,它注意到有一个 foo.py 文件。因此它会检查文件 Packages/Foo/foo.py 是否存在,如果存在,它会加载该文件并忽略 sublime-package 文件中的任何内容。

Packages 文件夹的内容在升级存储为 sublime-package 文件的包期间不会被触及,所以这意味着如果您以这种方式创建 Override,即使基础包升级,您的更改也会保留。

创建此类覆盖的最简单方法是使用 PackageResourceViewer。安装此包后,您可以使用命令面板中的 PackageResourceViewer: Open Resource 轻松打开任何包中的任何文件,保存文件将使 PackageResourceViewer 自动为您创建覆盖。

综上所述,一个重要的警告;而直接修改 sublime-package 将导致您的更改在没有任何警告的情况下被粗鲁地丢弃,创建覆盖将导致 Sublime 始终使用它 even if包已修改

根据文件和修改,这可能很重要。在上面的示例中,如果您在 foo.py 上创建了一个覆盖以更改它的某些内容,然后 Foo 包的作者对 foo.py 进行了更改以修复错误或添加更多功能,当包更新时,您的更改不会丢失,但它们也会阻止更新中的更改生效。

OverrideAudit 包在这里可以提供帮助;它所做的其中一件事是检查升级,看看您是否覆盖了已升级的包中的文件,并警告您,以便您可以检查并查看发生了什么。