远程开发
远程开发允许你以思想的速度进行编码,即使你的代码库不在你的本地机器上。你在本地使用 Zed,因此 UI 立即响应,但将繁重的计算卸载到开发服务器,以便你可以有效地工作。
注意:远程连接仍然处于“alpha”阶段。在完全发布之前,我们希望进行一些更改。
概述
远程开发需要运行两个 Zed 实例。远程机器上的无头实例,以及你本地计算机上的编辑器界面。所有配置都在你的本地计算机上完成。
目前,这两个实例通过 Zed 的服务器连接,但我们打算在该功能完全发布之前构建对等通信。
设置
- 下载并安装最新的 Zed 预览版。
- 使用
cmd-shift-p remote
打开远程项目对话框。 - 点击“新建服务器”。
- 选择通过 SSH 设置,还是遵循手动设置。
注意:对于这两种选项,你的笔记本电脑和远程机器将通过 https://collab.zed.dev/ 进行通信,因此你需要在远程机器上拥有出站互联网访问权限。
- 现在,你可以在笔记本电脑上打开远程机器上的文件夹。
注意:Zed 目前无法很好地处理打开非常大的目录(例如,可能包含 >100,000 个文件的
/
或~
)。我们正在努力改进这一点,但在此期间建议仅打开特定项目或非常大的单一仓库的子文件夹。
故障排除
UI 未显示
你需要使用相对较新的 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 代码空间doctl compute ssh example-droplet
连接到 DigitalOcean Dropletgcloud 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 或更高版本(英特尔或 Apple 硅)
- Linux(x86_64 或 arm64,我们目前不支持 32 位平台)。你必须安装版本 2.29(于 2019 年发布)或更高版本的
glibc
,并且可以在全局范围内使用。 - Windows 目前不受支持。
设置和扩展
注意:这可能会随着 alpha 计划的继续而改变。
你可以在远程实例上编辑设置文件。为此,在 ~/.config/zed
目录中向服务器添加一个新项目。如果 settings.json
文件尚不存在,你可以创建一个。
请注意,这对于配置语言服务器最有用,因为任何与 UI 相关的设置都不适用。
如果你想安装语言服务器扩展,可以将它们添加到 auto_installed_extensions
列表中。同样,你不必这样做即可获得语法高亮(由本地 zed 处理)。
{
"auto_install_extensions": {
"java": true
},
}
已知限制
- 如果你选择“手动连接”,则无法使用终端或任务
- 你无法在同一台计算机上同时在无头模式和 GUI 模式下运行
zed
。 - 你无法通过键入
zed
命令从远程终端打开文件。
反馈
请加入 Zed Discord 中的 #remoting-feedback 频道。