October 6, 2013

透過 Dropbox 同步 Subilime Text 的套件與設定

Sublime Text 是一款十分強大的跨平台文字編輯器,除了本身好用外,大量的套件(Package)使其更加出色,成為工程師不可或缺的好夥伴。

假設你有多台電腦,在家裡的電腦安裝了 Sublime Text 3 及多個套件(Package),並設定好字型、快捷鍵等使用者設定,到公司後,是否能直接將家裡的 Sublime Text 3 的設定直接同步到公司的電腦,而不需重新設定呢?


目錄


(零) 2014/10/8 更新

Sublime Text 2 與 3 下列兩個版本皆可用此方法同步,未來版本應該也不會有更動。

  • Sublime Text 2 Build 2221
  • Sublime Text 3 Build 3065

(一) 為何需要同步 Sublime Text 的套件與設定?

Sublime Text 是個相當強大的文字編輯器,也是許多工程師的好朋友,其豐富的套件(package)可以幫我們快速地解決問題,並提供了多樣的使用者設定供我們調整。然而您可能會遇到下列這種情形:

您在家裡與公司各擁有一台電腦,皆安裝 Sublime Text,在家裡電腦裝了某個套件後,去公司又要在公司電腦裝一次;或是在公司將提整了某些使用者設定(字型、快捷鍵等),回家又要調整一次。如果還有筆電的話,又要多做更多次。這時就會思考,有沒有辦法能同步所有電腦的 Sublime Text 的套件(Packages)與使用者設定(Settings)呢?

有!答案很簡單,使用 Dropbox 就可以了。

問題在於,要同步 Sublime Text 的哪些檔案呢?


(二) 使用 Dropbox 同步 Sublime Text

1. Sublime Text 的設定檔位置

Sublime Text 的設定檔的位置依照作業系統而有所區別,如下:

OSX

~Library/Application Support/Sublime Text 3/Packages/

Windows

C:\Users\USERNAME\AppData\Roaming\Sublime Text 3\Packages\

Linux

~/.config/sublime-text-3/Packages/

2. 要同步哪些檔案:錯誤的方法

在網路上可以找到相關教學,例如這一篇這一篇

但是這兩篇文章都有錯,同步那些資料夾是錯誤的錯誤的錯誤的

因為很重要所以要講三次!

3. 要同步哪些檔案:正確的方法

正確的方法請參見這一篇 Package Control 的 Syncing DOC

To properly sync your installed packages across different machines, you actually do not want to sync the whole Packages/ and Installed Packages/ folders. The reason for this is that some packages have different versions for different operating systems. By syncing the actual package contents across operating systems, you will possibly run into broken packages.

簡單來說,有些 Package 會針對不同的作業系統有不同的設定,若直接同步/Packages 資料夾,會造成那些 Package 無法正常運作(broken packages)。

舉例而言,SFTP就會針對不同的作業系統有不同的設定。

The proper solution is to install Package Control on all machines and then to sync only the Packages/User/ folder. This folder contains the Package Control.sublime-settings file, which includes a list of all installed packages. If this file is copied to another machine, the next time Sublime Text is started, Package Control will install the correct version of any missing packages.

如引言所述,需要同步的資料夾只有 (SublimeText路徑)/Packages/User 這個資料夾而已,這個資料夾包含了 User 的設定檔,以及最重要的 Package Control.sublime-settings。

Sublime Text 的 Package Controller 在啟動的時候,就會根據這個 Package Control.sublime-settings 記載的 installed package lists 去下載缺少的 packages,下載的時候會依照作業系統不同而下載不同檔案,故沒有上述 broken packages 問題。

4. 要怎麼同步?

Packages/User 移動到 Dropbox 資料夾內,並與原本位置建立 Symbolic link,如此一來 Sublime Text 可以藉由 Symbolic link 看見並調用 Packages/User 內的檔案,Dropbox 也可以將其自動同步。

各作業系統的操作指令請參考這個頁面:Package Control 的 Syncing DOC

或看下面的實際範例。


(三) 實際範例

1. 情境設定

  • 家裡有台 OSX 電腦,你在這台電腦裝了 Sublime Text 3 以及常用 Package。
  • 公司有台 Windows 電腦,尚未安裝東西。
  • 你想將家裡電腦的 Sublime Text 3 及常用 Package同步到公司電腦。
  • 家裡與公司電腦皆已經裝好 Dropbox。
  • 假設要放置同步檔案的地點為 /Dropbox/sync/SublimeText

2. 家裡電腦 - Dropbox 同步 Packages/User

記得先把 Sublime Text 給關掉。

切換到 Sublime Text 的設定檔的位置(各系統的位置參照上述說明,這邊以 OSX 為範例)。

cd ~/Library/Application Support/Sublime Text 3/Packages

將 User 資料夾移到 /Dropbox/sync/SublimeText。

mv User /Dropbox/sync/SublimeText/

建立 Symbolic link。

ln -s /Dropbox/sync/SubilmeText/User

3. 公司電腦 - Dropbox 同步 Packages/User

這邊以 Windows 為範例,其他作業系統請參照上面連結。

在 開始列輸入 cmd,按右鍵用 admin 權限開啟 cmd。

切換到 Sublime Text 的設定檔位置。

cd C:\Users\USERNAME\AppData\Roaming\Sublime Text 3\Packages

到 Packages 資料夾內,將 User 資料夾移除。

在 Packages 資料夾內,建立 Symbolic link 做連結。

mklink /D "User" "\Dropbox\sync\SublimeText\User"

成功的話會出現

已建立 User 的符號連結 <<===>> D:\Dropbox\sync\SublimeText\User

4. 公司電腦 - 安裝 Package Control

在公司電腦開啟 Sublime Text,然後你會看到一堆 Error,大意就是找不到 packages。

別緊張,那是因為我們還沒安裝 Package Control 的關係。

依照下面網站的指示安裝 Package Control:https://sublime.wbond.net/installation

安裝完成後,請重新開啟 Sublime Text,Package Control 會依照上述 Package Control.sublime-settings 去下載未安裝的 packages。

接著就等 Package Control 把 Package 都安裝完成吧,在 console (ctrl+`) 應該可以看到類似下列訊息

Package Control: Installing 19 missing packages

註:各 Packages 可能彼此相依,故安裝過程中可能需要重新啟動數次,請依照其顯示的指令操作。


(四) 疑難排解

1. Proxy 設定

如果公司或家裡的需要設定 proxy 的話,記得依照 這個網頁 的提示設定 http_proxyhttps_proxy 欄位。例如:

"http_proxy": "proxy.xxx.gov.tw:8080",
"https_proxy": "proxy.xxx.gov.tw:8080",

若身處需要設定 proxy 的網域卻沒有設定 proxy 的話,會導致 Package Control 無法正常更新或安裝新 Package,反之亦然。

假設你公司需要 proxy 而家裡不需要 proxy,就需要定期手動註解/啟動這兩行 proxy 設定。或是等到出現錯誤時再調整也行。

2. Package Control 壞掉惹

Many users run into issues with Package Control because they have an old, broken or pre-release version of Package Control that has become stuck.

如果 Package Control 壞掉惹,請依照 這個網頁 做完整的清除,並按照步驟重新安裝一遍。