.sublimebuild文件在Sublime Text 3英寸后不存在

2024-06-16 11:45:53 发布

您现在位置:Python中文网/ 问答频道 /正文

安装Sublime Text 2并用CTRL+B运行几个.py文件后,我可以在文件系统中找到这个文件:

C:\Users\User\AppData\Roaming\Sublime Text 2\Packages\Python\Python.sublime-build

但是,在安装了sublimetext3(可移植版本from here)并运行了一些Python文件之后,我仍然无法在整个文件系统中找到与sublimetext3相关的Python.sublime-build。在

是否已经将.sublime-build配置文件打包到另一个文件/包中,这是为什么,因为这样做使得编辑变得不那么方便?


Tags: 文件textfrompybuild版本packagesroaming
2条回答

Sublime Text 3附带的包存储在特殊的ZIP文件(*.sublime-package),您可以在Sublime Text程序目录(例如%ProgramW6432%\Sublime Text 3\Packages)中找到该文件。在

除了任何解压工具之外,您还可以使用Package Resource Viewer包来提取和编辑它们(有关详细信息,请参阅包控件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“使用这个文件而不是那个文件”;这样即使{}文件发生了变化,您的更改也保持不变。在

这可能以两种不同的方式发生:

  • 如果您将sublime-package文件放在Installed Packages文件夹中,并且在Sublime安装目录的Packages文件夹中出现一个类似名称的包,则使用Installed Packages中的版本,并忽略Sublime附带的版本。这使您可以用Sublime替换运送的包。

  • 如果在用户配置区域中的Packages文件夹中有一个模仿sublime-package文件名的文件夹(例如Python.sublime-packagePython/),那么该文件夹的内容将被视为sublime-package文件的一部分,允许您扩充包。在

    此外,如果在文件夹版本中出现的任何文件具有相同的名称和相对路径,则将使用它们来代替sublime-package文件中的文件(在某些情况下,文件名和路径的大小写可能很重要,因此最好精确地模仿它)。这允许您安全地修改包的内容。

在这两种情况下,你可以自由修改你喜欢的包,同时确保无论发生什么更新,你的更改都会保持不变。因此,需要注意的是,您应该永远不要修改sublime-package文件(除非是您自己做的),因为当更新发生时,包文件将被替换,您的更新将丢失。在

这里需要注意的是,当overrides就位时,Sublime总是毫无疑问地使用它们。因此,如果您重写了一个包文件,并且作者也更新了该包,您更改的文件仍将被使用。在

OverrideAudit包(免责声明:我是作者)将监视sublime-package文件的更新时间,该文件可能会导致本地更改被屏蔽,并警告您。它还包含一个命令,可以轻松创建覆盖,并查看它们与重写的文件之间的区别。在

关于包在ST3中如何工作的更多信息(包括包文件可以存在的各种地方),可以在Demystifying Packages in Sublime Text视频中找到。在


覆盖示例

为了清楚起见,下面是一些使用上述机制的覆盖示例。无论如何我们都要去ng使用以下术语:

  • $DATA:Sublime保存用户特定配置的位置。对于可移植的构建,这是您解包构建时得到的Data目录;在所有其他情况下,它都位于主目录的某个文件夹中。无论您的操作系统或安装方法如何,使用Preferences > Browse Packages并向上一个文件夹级别查找此位置。

  • Shipped Packages:这是一个名为Packages的文件夹,位于Sublime本身的安装目录中(即二进制文件所在的位置)。这包含Sublime默认附带的所有sublime-package文件。

  • Installed Packages:这是^{中的一个文件夹。Package Control在这里安装sublime-package文件,您也可以手动将包文件放在这里。Sublime将看到此文件夹(包括子文件夹)中任何位置包含的包。

  • Unpacked Packages:这是Packages中的Packages文件夹,其中存储未打包的包。Preferences > Browse Packages总是把你带到这里,你的User包就是在这里存储的。

包加载顺序规定Sublime首先加载所有Shipped包,然后加载所有Installed包,最后加载Unpacked包。在加载sublime-package文件时,Unpacked Packages文件夹中的重写将作为该阶段的一部分加载,其余的文件将在以后加载。在

在定义的顺序内,包按字典顺序排序,以便按顺序加载,但Default总是首先加载,而{}总是最后加载。重写在Sublime尝试从该包加载特定包或资源时生效。在

完成覆盖

这种类型的重写会导致Sublime完全忽略一个sublime-package文件,而忽略另一个文件;您可以使用此方法来影响对整个包的更改,包括能够从包中删除文件,这在其他情况下是不可能的。这种机制只适用于Shipped包,不经常使用。在

  • 将空的Python.sublime-package(不包含任何文件的zip文件)添加到Installed Packages文件夹将导致包显示为空,因此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使用它。

  • 如果您在Windows或MacOS上使用不区分大小写的文件系统,那么创建一个名为$DATA/Packages/python/python.sublime-build的文件将被视为第一个示例,但将被视为在Linux上包含新生成系统的新包,因为文件名和/或文件夹的大小写与sublime-package文件名不匹配。

一个资源是否是重写的决定直接关系到在正确的位置是否有一个同名的文件;任何不匹配的都被认为是新包或新包reso乌尔奇。在

例如,创建$DATA/Packages/User/Python.sublime-build不会覆盖默认的Python构建系统,因为默认构建在Python包中,而不是{}包中。在这种情况下,这将添加第二个(同名)构建系统。在

由于文件和文件夹的情况很重要,通常最好使用某种类型的包(如PackageResourceViewer或OverrideAudit)为您创建重写,以确保所有内容的大小写都是正确的。在

尽管我有偏见,但我通常建议使用OverrideAudit,因为PackageResourceViewer有一个命令,可以将整个包提取到Packages文件夹中。如果不小心触发了该命令,那么您将立即有效地覆盖整个包的整个内容,这将阻止它进行任何更新,并有可能导致其他难以跟踪的问题。在

相关问题 更多 >