根本原因是code --install-extension默认访问境外marketplace.visualstudio.com,需在用户settings.json中配置"extensions.gallery.serviceUrl": "https://vscode.cdn.azure.cn/extensionGallery/extensionGallery/"并彻底退出VSCode进程后生效。

VSCode 命令行安装(code --install-extension)慢,根本原因不是命令本身,而是它默认仍走境外插件市场地址 marketplace.visualstudio.com,DNS 解析、TCP 握手、TLS 握手全卡在跨境链路上。改配置比换代理更稳、更直接。
怎么让 code --install-extension 走国内镜像
VSCode 命令行工具会读取当前用户的设置,所以只要正确配置了 extensions.gallery.serviceUrl,code --install-extension 就自动生效——不需要额外参数或环境变量。
- 打开命令面板(
Ctrl+Shift+P),输入并执行Preferences: Open Settings (JSON) - 加入这一行(注意逗号分隔,末尾带斜杠):
"extensions.gallery.serviceUrl": "https://vscode.cdn.azure.cn/extensionGallery/extensionGallery/" - 保存后,**必须彻底退出 VSCode 进程**:Windows 右键任务栏图标选「退出」;macOS 用 Activity Monitor 杀掉所有
Code进程;Linux 执行pkill -f "Code Helper"或killall code - 再运行
code --install-extension esbenp.prettier-vscode,就能看到请求发向vscode.cdn.azure.cn,响应时间从几秒降到 200ms 内
code --install-extension 仍失败?检查这三点
常见报错如 Unable to install 'esbenp.prettier-vscode' extension. Unable to verify the first certificate 或 connect ETIMEDOUT marketplace.visualstudio.com:443,说明镜像没真正生效。
- 确认
settings.json是用户级(不是工作区级),路径:Windows 在%APPDATA%\Code\User\settings.json,macOS 在~/Library/Application Support/Code/User/settings.json - 确认 URL 拼写无误:
https://vscode.cdn.azure.cn/extensionGallery/extensionGallery/—— 注意是/extensionGallery/extensionGallery/,不是/gallery或少斜杠 - 如果公司网络拦截非标准域名,可临时切阿里云镜像:
"extensions.gallery.serviceUrl": "https://vscode-extensions.oss-cn-hangzhou.aliyuncs.com/extensionGallery/extensionGallery/"
批量安装插件时的隐藏瓶颈
连续执行多次 code --install-extension,VSCode 会为每个请求新建进程和 TLS 连接,容易触发本地端口耗尽或服务端限流。这不是网络问题,是调用方式问题。
- 改用单次调用安装多个插件:
code --install-extension esbenp.prettier-vscode redhat.vscode-yaml usernamehw.errorlens - 避免在 shell 循环里反复调用
code,比如不要写for i in *.vsix; do code --install-extension $i; done,而应打包成一行或改用code --install-extension后跟空格分隔的多个 ID - 离线场景下,优先下载
.vsix文件再本地安装:code --install-extension ./prettier-vscode-12.5.0.vsix,完全绕过网络解析环节
最易被忽略的一点:改完 extensions.gallery.serviceUrl 后,VSCode 后台进程可能还在跑旧配置。不杀干净,命令行工具照样连境外地址——别信“重启窗口”,要真关进程。


















