.sublime-build 文件在 Sublime Text 3 安装后不存在
.sublime-build files not present after Sublime Text 3 install
安装 Sublime Text 2 和 运行 几个 .py
文件后 CTRL+B,我可以在文件系统中找到这个文件:
C:\Users\User\AppData\Roaming\Sublime Text 2\Packages\Python\Python.sublime-build
但是安装了Sublime Text 3(便携版from here)和运行几个Python文件后,还是找不到Python.sublime-build
与Sublime相关的整个文件系统中的文本 3。
是否已将 .sublime-build
个配置文件打包到另一个 file/package 中,为什么,因为它使编辑变得不那么方便?
Sublime Text 3 附带的包存储在特殊的 ZIP 文件 (*.sublime-package
) 中,您可以在 Sublime Text 程序目录中找到它们(例如 %ProgramW6432%\Sublime Text 3\Packages
)。
除了任何解压缩工具,您还可以使用 Package Resource Viewer package to extract and edit them (see the override section in the Package Control documentation 了解详细信息)
分离允许包开发人员更新他们的包而不会覆盖您的自定义设置。
Have .sublime-build config files been packed into another file/package
从技术上讲,您的问题的答案是否定的; Python.sublime-build
文件仍然在同一个 Python.sublime-package
中,但与 ST2 不同的是,ST3 可以读取 sublime-package
文件的内容而无需先提取它们。
在 ST2 中,Sublime 每次启动时都会执行一个名为 "Package Setup" 的步骤,由此它将 sublime-package
文件的内容提取到 Packages
文件夹中(当包文件已更改或当文件夹版本不存在时)。如果您查看 ST2 控制台的顶部,您可以看到有关它是否认为需要进行设置的消息。
在 ST3 中,Sublime 可以直接从 sublime-package
文件中读取包资源,因此它不再执行以前的包提取步骤。
因此,在 ST2 中您可以转到 Packages
文件夹查看包的内容,现在您需要自己查看 sublime-package
文件的内部(它只是一个 zip具有不同扩展名的文件)或使用命令面板中的 View Package File
命令,这将允许您查看和打开任何包中的任何包资源。
why, since it makes the editing much less handy?
此更改的主要原因之一是使编辑包资源更安全。以前如果你要编辑一个包的提取内容,如果那个包有更新,Sublime 会重新提取新的包文件,这可能会破坏你的更改。
为了允许包更新而不发生这种情况,ST3 支持包和资源的 overrides
的想法;本质上是你提供一个外部文件并告诉 Sublime "Use this file instead of that one";这样即使 sublime-package
文件发生变化,您的更改也会保持不变。
这可以通过两种不同的方式发生:
如果你在Installed Packages
文件夹中放置一个sublime-package
文件,并且Packages
文件夹中出现一个类似名称的包在Sublime中安装目录,则使用Installed Packages
中的版本,忽略Sublime自带的版本。这允许您替换 Sublime 附带的包。
如果在你的用户配置区文件夹Packages
中有一个模仿sublime-package
文件名的文件夹(例如 Python.sublime-package
和 Python/
),则文件夹的内容被视为 sublime-package
文件的一部分,允许您扩充包。
此外,如果文件夹版本中出现任何具有相同名称和相对路径的文件,它们将被用来代替sublime-package
文件中的文件(文件名和路径的情况可以在某些情况下很重要,因此最好准确地模仿它)。这允许您安全地修改包的内容。
在这两种情况下,您都可以根据自己的喜好自由修改程序包,同时确保无论发生什么更新,您的更改都将保持不变。因此,重要的是要注意你应该永远不要修改sublime-package
文件(除非你是制作它的人)因为当更新发生时,包文件将被替换,您的更新将丢失。
这里需要注意的是,当 overrides
到位时,Sublime 总是毫无疑问地使用它们。因此,如果您正在覆盖包文件并且作者也更新了包,您更改的文件仍将被使用。
OverrideAudit 包(免责声明:我是作者)监控何时 sublime-package
文件以可能导致您的本地更改被屏蔽的方式更新并警告您。它还包含一个命令,用于轻松创建覆盖并查看它们与它们正在覆盖的文件有何不同。
有关包如何在 ST3 中工作的更多信息(包括包文件可以存在的各个位置)可以在 Demystifying Packages in Sublime Text 视频中找到。
覆盖示例
为清楚起见,这里有一些使用上述机制进行覆盖的示例。在所有情况下,我们都将使用以下术语:
$DATA
:Sublime 保存用户特定配置的位置。对于可移植构建,这是解压缩构建时获得的 Data
目录;在所有其他情况下,它位于您的主目录中某处的文件夹中。使用 Preferences > Browse Packages
并向上一级文件夹找到此位置,无论您的 OS 或安装方法如何。
Shipped Packages
:这是名为 Packages
的文件夹,存在于 Sublime 本身的安装目录中(即二进制文件所在的位置)。这包含 Sublime 默认附带的所有 sublime-package
文件。
Installed Packages
: 这是$DATA
中的一个文件夹。 Package Control 在此处安装 sublime-package
文件,您也可以在此处手动放置包文件。 Sublime 可以看到此文件夹中任何位置(包括子文件夹)中的包。
Unpacked Packages
:这是$DATA
里面的Packages
文件夹,里面存放解压包。 Preferences > Browse Packages
总是把你带到这里,它是你的 User
包裹存放的地方。
包加载顺序规定 Sublime 首先加载所有 Shipped
包,然后是所有 Installed
包,最后是 Unpacked
包。加载 sublime-package
文件时,Unpacked Packages
文件夹中的覆盖作为该阶段的一部分加载,所有剩余文件稍后加载。
在定义的顺序内,包按词法排序,以便它们按顺序加载,除了 Default
总是首先加载而 User
总是最后加载。覆盖在 Sublime 尝试从该包加载特定包或资源时生效。
完全覆盖
这种类型的重写导致 Sublime 完全忽略一个 sublime-package
文件以支持另一个;您可以使用它来影响对整个包的更改,包括能够从包中删除文件,否则这是不可能的。此机制仅适用于 Shipped
个包,并不经常使用。
向 Installed Packages
文件夹添加一个空 Python.sublime-package
(不包含任何文件的 zip 文件)将导致包显示为空,因此 Python 支持将被移除。
将 Python.sublime-package
的一个版本添加到删除了所有 sublime-snippet
文件的 Installed Packages
文件夹将在删除时保持 Python 完整支持所有片段。
将 Sample.sublime-package
添加到 Installed Packages
文件夹也不是覆盖,因为 Shipped Packages
文件夹不包含具有此名称的包。因此这只是一个普通的包安装。
资源覆盖
这种类型的覆盖导致 Sublime 更喜欢 Unpacked Packages
文件夹中的松散包资源文件,而不是 sublime-package
文件中的类似命名文件(无论该包是如何安装的)。这是一种更常见的机制,您可以使用它来调整包文件的内容,而无需直接修改 sublime-package
文件本身。
创建一个名为 $DATA/Packages/Python/Python.sublime-build
的文件将覆盖 Python.sublime-package
中的同名文件,因此就 Sublime 而言,该文件是 sublime-package
文件.
创建一个名为 $DATA/Packages/Python/Snippets/if.sublime-snippet
的文件会做同样的事情; Python
文件夹中文件的名称与 sublime-package
文件中的版本具有相同的相对路径和名称,因此 Sublime 使用它。
如果您使用 Windows 或 MacOS 文件系统不区分大小写,则创建名为 $DATA/Packages/python/python.sublime-build
的文件将被视为第一个示例,但将被视为包含 Linux 上的新构建系统的新包,因为文件名 and/or 的情况下文件夹与 sublime-package
文件名不匹配。
判断资源是否覆盖与正确位置是否存在同名文件直接相关;任何不匹配的都被视为新包或新包资源。
因此,例如创建 $DATA/Packages/User/Python.sublime-build
不会覆盖默认的 Python 构建系统,因为默认构建位于 Python
包中,而不是 User
包中。在这种情况下,这将添加第二个(同名的)构建系统。
由于文件和文件夹的大小写很重要,通常最好使用某种包(如 PackageResourceViewer 或 OverrideAudit)为您创建覆盖以确保所有内容的大小写都是正确的.
虽然我有偏见,但我通常建议将 OverrideAudit 用于此用途,因为 PackageResourceViewer 有一个命令可以将整个包提取到 Packages
文件夹中。如果您不小心触发了该命令,您将有效地立即覆盖整个包的全部内容,这会阻止它进行更新,并有可能导致难以追踪的问题。
安装 Sublime Text 2 和 运行 几个 .py
文件后 CTRL+B,我可以在文件系统中找到这个文件:
C:\Users\User\AppData\Roaming\Sublime Text 2\Packages\Python\Python.sublime-build
但是安装了Sublime Text 3(便携版from here)和运行几个Python文件后,还是找不到Python.sublime-build
与Sublime相关的整个文件系统中的文本 3。
是否已将 .sublime-build
个配置文件打包到另一个 file/package 中,为什么,因为它使编辑变得不那么方便?
Sublime Text 3 附带的包存储在特殊的 ZIP 文件 (*.sublime-package
) 中,您可以在 Sublime Text 程序目录中找到它们(例如 %ProgramW6432%\Sublime Text 3\Packages
)。
除了任何解压缩工具,您还可以使用 Package Resource Viewer package to extract and edit them (see the override section in the Package Control documentation 了解详细信息)
分离允许包开发人员更新他们的包而不会覆盖您的自定义设置。
Have .sublime-build config files been packed into another file/package
从技术上讲,您的问题的答案是否定的; Python.sublime-build
文件仍然在同一个 Python.sublime-package
中,但与 ST2 不同的是,ST3 可以读取 sublime-package
文件的内容而无需先提取它们。
在 ST2 中,Sublime 每次启动时都会执行一个名为 "Package Setup" 的步骤,由此它将 sublime-package
文件的内容提取到 Packages
文件夹中(当包文件已更改或当文件夹版本不存在时)。如果您查看 ST2 控制台的顶部,您可以看到有关它是否认为需要进行设置的消息。
在 ST3 中,Sublime 可以直接从 sublime-package
文件中读取包资源,因此它不再执行以前的包提取步骤。
因此,在 ST2 中您可以转到 Packages
文件夹查看包的内容,现在您需要自己查看 sublime-package
文件的内部(它只是一个 zip具有不同扩展名的文件)或使用命令面板中的 View Package File
命令,这将允许您查看和打开任何包中的任何包资源。
why, since it makes the editing much less handy?
此更改的主要原因之一是使编辑包资源更安全。以前如果你要编辑一个包的提取内容,如果那个包有更新,Sublime 会重新提取新的包文件,这可能会破坏你的更改。
为了允许包更新而不发生这种情况,ST3 支持包和资源的 overrides
的想法;本质上是你提供一个外部文件并告诉 Sublime "Use this file instead of that one";这样即使 sublime-package
文件发生变化,您的更改也会保持不变。
这可以通过两种不同的方式发生:
如果你在
Installed Packages
文件夹中放置一个sublime-package
文件,并且Packages
文件夹中出现一个类似名称的包在Sublime中安装目录,则使用Installed Packages
中的版本,忽略Sublime自带的版本。这允许您替换 Sublime 附带的包。如果在你的用户配置区文件夹
Packages
中有一个模仿sublime-package
文件名的文件夹(例如Python.sublime-package
和Python/
),则文件夹的内容被视为sublime-package
文件的一部分,允许您扩充包。此外,如果文件夹版本中出现任何具有相同名称和相对路径的文件,它们将被用来代替
sublime-package
文件中的文件(文件名和路径的情况可以在某些情况下很重要,因此最好准确地模仿它)。这允许您安全地修改包的内容。
在这两种情况下,您都可以根据自己的喜好自由修改程序包,同时确保无论发生什么更新,您的更改都将保持不变。因此,重要的是要注意你应该永远不要修改sublime-package
文件(除非你是制作它的人)因为当更新发生时,包文件将被替换,您的更新将丢失。
这里需要注意的是,当 overrides
到位时,Sublime 总是毫无疑问地使用它们。因此,如果您正在覆盖包文件并且作者也更新了包,您更改的文件仍将被使用。
OverrideAudit 包(免责声明:我是作者)监控何时 sublime-package
文件以可能导致您的本地更改被屏蔽的方式更新并警告您。它还包含一个命令,用于轻松创建覆盖并查看它们与它们正在覆盖的文件有何不同。
有关包如何在 ST3 中工作的更多信息(包括包文件可以存在的各个位置)可以在 Demystifying Packages in Sublime Text 视频中找到。
覆盖示例
为清楚起见,这里有一些使用上述机制进行覆盖的示例。在所有情况下,我们都将使用以下术语:
$DATA
:Sublime 保存用户特定配置的位置。对于可移植构建,这是解压缩构建时获得的Data
目录;在所有其他情况下,它位于您的主目录中某处的文件夹中。使用Preferences > Browse Packages
并向上一级文件夹找到此位置,无论您的 OS 或安装方法如何。Shipped Packages
:这是名为Packages
的文件夹,存在于 Sublime 本身的安装目录中(即二进制文件所在的位置)。这包含 Sublime 默认附带的所有sublime-package
文件。Installed Packages
: 这是$DATA
中的一个文件夹。 Package Control 在此处安装sublime-package
文件,您也可以在此处手动放置包文件。 Sublime 可以看到此文件夹中任何位置(包括子文件夹)中的包。Unpacked Packages
:这是$DATA
里面的Packages
文件夹,里面存放解压包。Preferences > Browse Packages
总是把你带到这里,它是你的User
包裹存放的地方。
包加载顺序规定 Sublime 首先加载所有 Shipped
包,然后是所有 Installed
包,最后是 Unpacked
包。加载 sublime-package
文件时,Unpacked Packages
文件夹中的覆盖作为该阶段的一部分加载,所有剩余文件稍后加载。
在定义的顺序内,包按词法排序,以便它们按顺序加载,除了 Default
总是首先加载而 User
总是最后加载。覆盖在 Sublime 尝试从该包加载特定包或资源时生效。
完全覆盖
这种类型的重写导致 Sublime 完全忽略一个 sublime-package
文件以支持另一个;您可以使用它来影响对整个包的更改,包括能够从包中删除文件,否则这是不可能的。此机制仅适用于 Shipped
个包,并不经常使用。
向
Installed Packages
文件夹添加一个空Python.sublime-package
(不包含任何文件的 zip 文件)将导致包显示为空,因此 Python 支持将被移除。将
Python.sublime-package
的一个版本添加到删除了所有sublime-snippet
文件的Installed Packages
文件夹将在删除时保持 Python 完整支持所有片段。将
Sample.sublime-package
添加到Installed Packages
文件夹也不是覆盖,因为Shipped Packages
文件夹不包含具有此名称的包。因此这只是一个普通的包安装。
资源覆盖
这种类型的覆盖导致 Sublime 更喜欢 Unpacked Packages
文件夹中的松散包资源文件,而不是 sublime-package
文件中的类似命名文件(无论该包是如何安装的)。这是一种更常见的机制,您可以使用它来调整包文件的内容,而无需直接修改 sublime-package
文件本身。
创建一个名为
$DATA/Packages/Python/Python.sublime-build
的文件将覆盖Python.sublime-package
中的同名文件,因此就 Sublime 而言,该文件是sublime-package
文件.创建一个名为
$DATA/Packages/Python/Snippets/if.sublime-snippet
的文件会做同样的事情;Python
文件夹中文件的名称与sublime-package
文件中的版本具有相同的相对路径和名称,因此 Sublime 使用它。如果您使用 Windows 或 MacOS 文件系统不区分大小写,则创建名为
$DATA/Packages/python/python.sublime-build
的文件将被视为第一个示例,但将被视为包含 Linux 上的新构建系统的新包,因为文件名 and/or 的情况下文件夹与sublime-package
文件名不匹配。
判断资源是否覆盖与正确位置是否存在同名文件直接相关;任何不匹配的都被视为新包或新包资源。
因此,例如创建 $DATA/Packages/User/Python.sublime-build
不会覆盖默认的 Python 构建系统,因为默认构建位于 Python
包中,而不是 User
包中。在这种情况下,这将添加第二个(同名的)构建系统。
由于文件和文件夹的大小写很重要,通常最好使用某种包(如 PackageResourceViewer 或 OverrideAudit)为您创建覆盖以确保所有内容的大小写都是正确的.
虽然我有偏见,但我通常建议将 OverrideAudit 用于此用途,因为 PackageResourceViewer 有一个命令可以将整个包提取到 Packages
文件夹中。如果您不小心触发了该命令,您将有效地立即覆盖整个包的全部内容,这会阻止它进行更新,并有可能导致难以追踪的问题。