如何通过命令行让VS Code附加远程容器时不打开文件夹启动空窗口
命令行实现VS Code附加容器打开空窗口的方法
问题背景
正在搭建面向Arduino及其他MCU的开发环境,已构建完成包含全部所需编译器与工具链的容器镜像,同时编写了将VS Code连接至该容器的自动化脚本。
当前脚本的核心连接实现如下:
CONTAINER_NAME="dev-environments-mcus" hex=$(printf \{\"containerName\":\""$CONTAINER_NAME"\"\} | od -A n -t x1 | tr -d '[\n\t ]') code --folder-uri vscode-remote://attached-container+${hex}/App_Home/mcu-projects
该方案可正常运行,但存在使用局限:执行命令时会默认打开容器内的指定文件夹,无法适配通用开发环境的灵活使用需求。
需要实现的效果:通过命令行复刻VS Code中「Attach in new window」按钮的交互逻辑,点击后打开无预加载内容的空窗口,不自动打开指定文件/文件夹,默认展示VS Code起始页。
已尝试的优化方案:将命令参数--folder-uri替换为--file-uri,运行效果有一定改善,但仍无法达到启动时不打开任何内容、展示起始页的预期。
解决方案
只需要移除远程URI末尾拼接的固定文件夹路径,搭配*--new-window*参数即可完全匹配原生按钮的交互效果,修改后的核心代码如下:
CONTAINER_NAME="dev-environments-mcus" hex=$(printf \{\"containerName\":\""$CONTAINER_NAME"\"\} | od -A n -t x1 | tr -d '[\n\t ]') code --new-window vscode-remote://attached-container+${hex}
效果说明
- 执行命令后会自动新开VS Code窗口,完成容器附加流程
- 不会自动加载任何预设的文件或文件夹,默认展示VS Code起始页
- 容器内的扩展加载、环境变量映射、权限配置等逻辑和手动点击「Attach in new window」按钮的效果完全一致
可选优化
如果需要避免VS Code自动恢复上一次关闭时的会话内容,可以额外增加--disable-restore-windows参数,保证每次启动都进入干净的空窗口:
code --new-window --disable-restore-windows vscode-remote://attached-container+${hex}
内容的提问来源于stack exchange,提问作者Lord_Rafa
相关产品推荐
相关产品推荐

