vscode SSH远程开发时使用本地扩展(如copilot)
vscode SSH远程开发时使用本地扩展(如copilot)
背景
vscode在安装remote SSH插件后可以连接到远程服务器进行开发,体验良好。
但考虑到许多扩展需要访问文件,因此默认情况下大部分本地安装的扩展并不会默认启用,打开扩展栏可以看到这些扩展显示一个“在【远程计算机】中安装”的按钮,需要在远程服务器上再安装一遍。
根据vscode关于extension Kind的文档,扩展开发者可以按需声明扩展的extensionKind
为本地运行的"ui"或在工作区中运行的"workspace",或者根据偏好设置优先选择的模式。在缺省情况下,扩展默认为"workspace",这就是在ssh远程时大部分扩展不会启用的原因。
实际上,对于一部分无需操作文件的扩展,即使在远程连接时也可以在本地UI进程中运行。例如github copilot等编辑助手插件,或者国内比较优秀的fitten code。如果能在远程时使用本地的这些扩展,不仅能增强写代码的体验,也能避免污染服务器上的环境。
解决
对于这种情况,用户可以在settings.json中手动覆盖扩展在远程执行的extensionKind
。
操作方法如下:
打开扩展侧边栏,找到需要远程时本地启用的扩展
点击打开详情,在页面右侧“详细信息”最下方找到扩展的标识符并复制。例如copilot的标识符就是
github.copilot
,fittencode的标识符是fittentech.fitten-code
。打开vscode设置页面,搜索“extension kind”
默认情况下设置无法直接编辑,点击“在settings.json中编辑”
默认会生成一个设置模板,将其中
pub.name
部分替换为此前复制的扩展标识符。如果有多个扩展,使用逗号分隔。例如同时启用copilot和fittencode:1 2 3 4 5 6 7
"remote.extensionKind": { "fittentech.fitten-code": [ "ui" ], "github.copilot": [ "ui" ]
连接到remote SSH,测试扩展是否正常运行。