[英].sublime-build files not present after Sublime Text 3 install
安裝 Sublime Text 2 並使用CTRL+B運行一些.py
文件后,我可以在文件系統中找到這個文件:
C:\Users\User\AppData\Roaming\Sublime Text 2\Packages\Python\Python.sublime-build
但是,在安裝了 Sublime Text 3(來自此處的便攜式版本)並運行了一些 Python 文件后,我仍然無法在整個文件系統中找到與 Sublime Text 3 相關的Python.sublime-build
。
.sublime-build
配置文件是否被打包到另一個文件/包中,為什么,因為它使編輯變得不那么方便?
將 .sublime-build 配置文件打包到另一個文件/包中
從技術上講,您的問題的答案是否定的; 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
來自命令面板的View Package File
命令,這將允許您查看和打開任何包中的任何包資源。
為什么,因為它使編輯變得不那么方便?
此更改的主要原因之一是使編輯包資源更安全。 以前,如果您要編輯包的提取內容,如果該包得到更新,Sublime 會重新提取新的包文件,這可能會破壞您的更改。
為了允許包更新而不發生這種情況,ST3 支持包和資源的overrides
思想; 本質上是你提供一個外部文件並告訴 Sublime“使用這個文件而不是那個文件”的想法; 這樣,即使sublime-package
文件發生更改,您的更改也保持不變。
這可以通過兩種不同的方式發生:
如果將sublime-package
文件放在Installed Packages
文件夾中,並且 Sublime 安裝目錄的Packages
文件夾中出現一個類似名稱的包,則使用Installed Packages
的版本,而忽略 Sublime 附帶的版本。 這允許您替換 Sublime 附帶的軟件包。
如果在您的用戶配置區域的Packages
文件夾中有一個文件夾模仿sublime-package
文件的名稱(例如Python.sublime-package
和Python/
),則該文件夾的內容被認為是sublime-package
一部分sublime-package
文件,允許您擴充包。
此外,如果文件夾版本中出現任何具有相同名稱和相對路徑的文件,它們將代替sublime-package
文件中的文件(文件名和路徑的大小寫在某些情況下可能很重要,所以它是最好完全模仿它)。 這允許您安全地修改包的內容。
在這兩種情況下,您都可以自由地根據自己的喜好修改軟件包,同時確保無論發生什么更新,您的更改都將保持不變。 因此,重要的是要注意,您永遠不應該修改sublime-package
文件(除非您是創建它的人),因為當更新發生時,包文件將被替換並且您的更新將丟失。
這里需要注意的是,當overrides
到位時,Sublime 總是毫無疑問地使用它們。 因此,如果您覆蓋了一個包文件並且作者也更新了該包,您更改的文件仍將被使用。
OverrideAudit包(免責聲明:我是作者)監控sublime-package
文件何時以可能導致您的本地更改被屏蔽的方式更新並警告您。 它還包含一個命令,可以輕松創建覆蓋並查看它們與它們覆蓋的文件有何不同。
更多關於包如何在 ST3 中工作的信息(包括包文件可以存在的各個地方)可以在Demystifying Packages in Sublime Text視頻中找到。
為清楚起見,以下是使用上述機制的一些覆蓋示例。 在所有情況下,我們將使用以下術語:
$DATA
:Sublime 保存用戶特定配置的位置。 對於可移植構建,這是解壓構建時獲得的Data
目錄; 在所有其他情況下,它位於您的主目錄中的某個文件夾中。 無論您的操作系統或安裝方法如何,請使用Preferences > Browse Packages
並向上一級文件夾查找此位置。
Shipped Packages
:這是一個名為Packages
的文件夾,它存在於 Sublime 本身的安裝目錄中(即二進制文件所在的位置)。 這包含 Sublime 默認附帶的所有sublime-package
文件。
Installed Packages
:這是$DATA
一個文件夾。 Package Control 在此處安裝sublime-package
文件,您也可以手動將包文件放置在此處。 Sublime 將看到包含在此文件夾(包括子文件夾)中任何位置的包。
Unpacked Packages
:這是$DATA
中的Packages
文件夾,用於存儲未打包的包。 Preferences > Browse Packages
總是把你帶到這里,它是你的User
包的存儲位置。
包加載順序決定了崇高加載所有的Shipped
包第一,那么所有的Installed
包,最后Unpacked
的包。 在加載sublime-package
文件時, Unpacked Packages
文件夾中的覆蓋作為該階段的一部分加載,任何剩余的文件稍后加載。
在定義的順序內,包按詞法排序,以便它們按順序加載,除了Default
始終首先加載, User
始終最后加載。 覆蓋在 Sublime 嘗試從該包加載特定包或資源時生效。
這種類型的覆蓋會導致 Sublime 完全忽略一個sublime-package
文件而支持另一個; 您可以使用它來影響對整個包的更改,包括能夠從包中刪除文件,否則這是不可能的。 此機制僅適用於已Shipped
包裹,並不經常使用。
將一個空的Python.sublime-package
(一個不包含文件的 zip 文件)添加到Installed Packages
文件夾將導致該包顯示為空,因此將刪除 Python 支持。
將Python.sublime-package
一個版本添加到Installed Packages
刪除所有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 使用它。
創建一個名為$DATA/Packages/python/python.sublime-build
將被視為第一個例子,如果你在 Windows 或 MacOS 上使用不區分大小寫的文件系統,但將被視為包含新的包在 Linux 上構建系統,因為文件名和/或文件夾的大小寫與sublime-package
文件名不匹配。
資源是否被覆蓋的判斷與正確位置是否存在同名文件直接相關; 任何不匹配的都被視為新包或新包資源。
因此,例如創建$DATA/Packages/User/Python.sublime-build
不會覆蓋默認的 Python 構建系統,因為默認構建在Python
包中,而不是在User
包中。 在這種情況下,這將添加第二個(同名)構建系統。
由於文件和文件夾的大小寫很重要,因此通常最好使用某種包(如PackageResourceViewer或 OverrideAudit)來為您創建覆蓋,以確保所有內容的大小寫都是正確的。
雖然我有偏見,但我通常推薦 OverrideAudit 用於此用途,因為 PackageResourceViewer 有一個命令可以將整個包提取到Packages
文件夾中。 如果您不小心觸發了該命令,您將立即有效地覆蓋整個包的全部內容,這會阻止它不斷更新,並有可能導致難以追蹤的問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.