遠端開發

即使您的程式碼庫不在您的本地電腦上,遠端開發也能讓您以思考的速度編寫程式碼。您在本地使用 Zed,因此使用者介面可以立即回應,但將繁重的計算卸載到開發伺服器,以便您可以有效地工作。

注意:遠端功能仍處於「Alpha」階段。在正式發布之前,我們還有幾項想要進行的變更。

概覽

遠端開發需要執行兩個 Zed 執行個體。一個是在遠端電腦上的無頭執行個體,另一個是在您本地電腦上的編輯器介面。所有配置都在您的本地電腦上完成。

目前,這兩個執行個體透過 Zed 的伺服器連線,但我們打算在正式發布此功能之前建立點對點通訊。

設定

  1. 下載並安裝最新的 Zed 預覽版
  2. 使用 cmd-shift-p remote 開啟遠端專案對話方塊。
  3. 點擊「新增伺服器」。
  4. 選擇透過 SSH 設定,或依照手動設定進行。

    注意:無論哪種方式,您的筆記型電腦和遠端電腦都將透過 https://collab.zed.dev/ 進行通訊,因此您需要在遠端電腦上擁有對外的網際網路連線。

  5. 現在,您可以在筆記型電腦上開啟遠端電腦上的資料夾。

    注意:Zed 目前還無法很好地處理開啟非常大的目錄(例如,可能包含超過 100,000 個檔案的 /~)。我們正在努力改進這一點,但同時建議您只開啟特定專案或非常大的單一儲存庫的子資料夾。

疑難排解

使用者介面未顯示

您需要使用相對較新的 Zed 版本(v0.145.0 或更新版本)。

SSH 連線

如果您選擇透過 SSH 連線,您指定的命令將在 Zed 終端機中執行,讓您有機會輸入所需的任何密碼/金鑰片語等。建立連線後,Zed 將下載並安裝到遠端電腦上的 ~/.local/bin/zed,並執行。

如果您沒有看到 Zed 命令的任何輸出,則 Zed 很可能在啟動時崩潰。您可以透過切換到手動模式並傳遞 --foreground 旗標來進行疑難排解。請提交錯誤報告,以便我們可以一起偵錯。

類似 SSH 的連線

Zed 會攔截 ssh,以便攔截大多數「ssh 包裝器」建立的連線。例如,您可以指定

  • user@host 將假設您的意思是 ssh user@host
  • ssh -J jump target 透過跳板主機連線
  • gh cs ssh -c example-codespace 連線到 GitHub Codespace
  • doctl compute ssh example-droplet 連線到 DigitalOcean Droplet
  • gcloud compute ssh 連線到 Google Cloud 執行個體
  • ssh -i path_to_key_file user@host 使用金鑰檔案或憑證連線到主機

zed --dev-server-token 無法連線

有幾個可能導致失敗的原因

  • zed --dev-server-token 有執行,但沒有輸出任何內容。這可能是因為 Zed 背景程序在啟動時崩潰。請嘗試執行 zed --dev-server-token XX --foreground 以查看任何輸出,並提交錯誤報告,以便我們可以一起偵錯。
  • zed --dev-server-token 輸出「連線被拒絕」或「未經授權」之類的訊息,然後立即退出。這可能是因為從您的主機向 https://collab.zed.dev 發出 HTTP 請求時發生問題。您可以嘗試使用 curl https://collab.zed.dev 進行偵錯,但我們發現有些情況下 curl 被允許,但其他二進制檔案不允許網路存取。
  • zed --dev-server-token 輸出「Zed 已在執行中」。如果您正在編輯現有的伺服器,則再次點擊「連線」可能會成功,但如果沒有,您必須手動登入伺服器並終止 Zed 程序。

支援的平台

遠端電腦必須能夠執行 Zed。以下平台應該可以運作,但請注意,我們尚未完整測試每個 Linux 發行版

  • macOS Catalina 或更新版本(Intel 或 Apple Silicon)
  • Linux(x86_64 或 arm64,我們尚不支援 32 位元平台)。您必須安裝並全域使用 2.29 版(2019 年發布)或更新版本的 glibc
  • 尚不支援 Windows。

設定和擴充功能

注意:隨著 Alpha 測試計畫的進行,這一點可能會有所變化。

您可以編輯遠端執行個體上的設定檔。為此,請在 ~/.config/zed 目錄中將新專案新增到您的伺服器。如果尚不存在 settings.json 檔案,您可以建立一個。

請注意,這最適用於配置語言伺服器,因為任何與使用者介面相關的設定都不適用。

如果您想安裝語言伺服器擴充功能,可以將其新增到 auto_installed_extensions 清單中。同樣地,您不需要這樣做就可以獲得語法高亮顯示(這由本地 Zed 處理)。

{
  "auto_install_extensions": {
    "java": true
  },
}

已知限制

  • 如果您選擇「手動連線」,則無法使用終端機或任務。
  • 您無法在同一台電腦上同時以無頭模式和圖形介面模式執行 zed
  • 您無法透過輸入 zed 命令從遠端終端機開啟檔案。

意見回饋

請加入 Zed Discord 中的 #remoting-feedback 頻道。