sublime Text中的workspace和project什麼關係?

還有,為什麼我再次打開一個保存的project文件後,左側沒有folders。save project as之後仍然如此。每次都要add folder to project好麻煩


首先,題主要相信 Sublime,如此反人類的操作體驗絕對不是 Sublime 的風格,畢竟 Sublime 可是史上最性感的編輯器!

簡短版回答

  1. workspace 是工作區,記錄了整個 sublime 窗口的狀態(如窗口打開了哪些文件、每個文件是否保存、文本選中狀態、游標位置等);project 是項目,記錄了項目信息(如項目包含哪些文件夾、項目設置等)
  2. 打開左側 folders 欄的快捷鍵是Ctrl+K,B(按住Ctrl不松,同時KB連續各按一次)。如果還是不出現 folders,說明當前窗口沒有 folders,需要往窗口中拖個文件夾才能看到。
  3. 當你創建完一個項目後,想要看新的項目,不要直接在當前窗口編輯,這樣會修改當前項目。你需要按快捷鍵Ctrl+Shift+N創建一個新窗口,然後再在裡面建立新的項目。記得保存老項目和新項目,否則下次打開時只剩最後一次關閉時的窗口狀態。

詳細版回答:

第一個問題:sublime 中的 workspace 和 project 什麼關係?

簡單來說,project(項目)記錄了你的項目中包含哪些文件夾,而 workspace 則記錄了工作區狀態。每當你新建一個項目都會隨之創建一個新的sublime-project文件和一個sublime-workspace文件。

更詳細點來說,project 將整個項目的配置項保存在一個.sublime-project文件中,其實就是一個json文件,一般會包含如下內容:

  1. 項目包含了哪些目錄。把目錄拖入項目窗口會自動加入項目。
  2. 特定目錄常常需要忽略一些非代碼文件或目錄,如 python 項目中的.pyc文件、java 項目中的.class文件、C++項目中的整個build目錄等。這樣做的目的一方面是避免無關文件礙眼,另一方面可以減輕文件索引負擔,提高搜索速度。
  3. 針對項目的設置,這些設置只在當前項目中起作用,並且會覆蓋全局設置。比如我們全局設置了一個 tab=4 個空格,但在 javascript 項目中習慣用 2 個空格縮進,這時我們就可以專門為 javascript 項目做一個設置,而不影響全局設置。
  4. 針對項目的build system。我們知道 sublime 的 build system 可以讓你Ctrl+B一鍵編譯運行代碼,但那樣只支持運行單個文件,如果你要構建和運行項目,就要把build_systems寫在sublime-project文件中 。

下面是我正在使用的一個 python 項目的sublime-project文件,它涵蓋了上述 4 點,可供參考:

{
"folders":
[
{
"path": "D:\Workspace\rock-physics",
"file_exclude_patterns": ["*.pyc"],
"folder_exclude_patterns": ["__pycache__"],
}
],
"settings": {
"translate_tabs_to_spaces": true,
"rulers": [80],
},
"build_systems": [
{
"name": "python virtualenv",
"shell_cmd": ".\venv\Scripts\python -u ${file}",
"file_regex": "^[ ]*File "(...*?)", line ([0-9]*)",
"selector": "source.python",
}
]
}

如果你想對自己的項目進行類似的特殊定製,那麼你就必須手動編輯sublime-project文件了,至於各個欄位分別是什麼意思,可以參考一下官網文檔。

相比 project,workspace 一般是在後台默默出力,我們基本不跟sublime-workspace文件直接打交道。workspace 記錄了當前窗口的一切信息。包括載入了哪些文件夾、打開了哪些文件、每個文件是否被編輯了、是否保存了、各個文件標籤的順序等,如果你把 sublime 分了多窗口,還會保存分屏信息。workspace 是給 sublime 程序看的,不是給用戶看的,所以不推薦手動編輯sublime-workspace文件

有了 workspace,當你不小心關了 sublime,或者電腦斷電強行關機,之後你再打開 sublime 會發現所有的窗口狀態跟關閉前是一模一樣的!所有打開的窗口、未保存的文件都能完全復原,絲毫不用擔心內容丟失。

第二個問題:sublime 中怎樣創建多個 project 並自由切換?

當創建第1個 project 之後,不要在當前窗口中增刪文件夾,這相當於對當前 project 進行修改。

如果要創建一個新的 project,請按快捷鍵Ctrl+Shift+N(或菜單Project-&>New Workspace for Project),這樣就打開了一個空白的 workspace,然後你只需要在這個新的 workspace 中添加文件夾並保存就可以創建新的 project。原來的那個窗口可以隨意關閉,對當前項目沒有影響。

如果你只打開一個 sublime 窗口能不能快速切換 project 呢?難道每次都要找到 project 文件然後雙擊?

當然不是!sublime 已經貼心地為我們準備了快捷鍵Ctrl+Alt+P,隨意切換到其他項目,而且 UI 相當酷炫~。有圖有真相:

如果你要同時瀏覽多個項目,那就多按幾次Ctrl+Shift+N創建多個窗口,然後在每個窗口中按Ctrl+Alt+P打開對應的項目即可。每個窗口對應一個項目,私以為這樣的設計非常 reasonable 。

最後,如果你懶得手動給.sublime-project文件選位置,你還可以安裝插件。使用package control安裝Project Manager插件,所有項目增刪改查一體化管理,再也不用去文件夾里找項目。只需要快捷鍵Ctrl+Alt+P,所有的項目想看哪個看哪個~


使用switch project就能夠擁有所有載入的folder,文件,當前游標位置等等了。


我也很想知道,暫時我沒找到辦法在一個workspace下打開兩個project,只能一個workspace一個project,兩個還只能保存到一個目錄下,不知道這樣的話要workspace有啥用。。。


推薦閱讀:

關於大家都會的配置文件的架構
Emacs常見鍵綁定方式匯總
對於新手來說 如何用atom搭建python的ide?
atom的active-power-mode插件能關掉窗口抖動嗎?
VSCode、Atom和Sublime為什麼不支持代碼標籤成對摺疊呢?

TAG:文本編輯器 | SublimeText |