根本原因是未将code命令添加到系统path:windows安装时未勾选“add topath”,macos需在vscode中执行“shell command: install 'code' command in path”,linux手动解压版需手动配置path。

code命令为什么在终端里打不出来?
根本原因就一个:安装时没勾选「添加到 PATH」,或者 macOS 没手动安装 shell 命令。Windows 用户只要装的时候勾了那个选项,重启终端就能用;macOS 用户拖.app进「应用程序」只是完成了 GUI 部分,code 命令是独立组件,必须在 VS Code 菜单栏里点「Shell Command: Install 'code' command in PATH」才生效。
常见错误现象包括:
-
command not found: code(Linux/macOS) -
'code' is not recognized as an internal or external command(Windows cmd/PowerShell)
解决建议:
- Windows:重装 VS Code,务必勾选「Add to PATH」——不是默认勾选,要手动点
- macOS:打开 VS Code → Cmd+Shift+P → 输入
Shell Command: Install 'code' command in PATH→ 回车执行 - Linux(deb/rpm 包安装):
sudo apt install code或sudo rpm -i code-*.rpm通常已自带code命令;若用 tar.gz 手动解压,则需手动把bin/code路径加进$PATH
code . 和 code --wait 的区别在哪?
这两个参数直接影响脚本调用和 Git 提交流程中的编辑体验。不加 --wait 时,code . 启动后立即返回控制权,终端继续往下走;加了则会阻塞,直到你关闭窗口或按下 Ctrl+S+Enter(保存并退出)才释放终端。
典型使用场景:
-
git commit配合core.editor="code --wait":确保提交信息写完再真正提交 - CI/CD 脚本中临时打开配置文件调试:用
--wait防止后续命令误执行 - 日常快速浏览:直接
code .更顺手,不用等窗口关
注意:--wait 在远程开发(Remote-SSH)下可能失效,因为终端与远端进程通信链路不同,此时建议改用 code --remote ssh-remote+xxx . 显式指定连接上下文。
如何用命令行批量安装常用插件?
VS Code 命令行支持 code --install-extension,适合新机器初始化、Docker 环境构建或团队统一配置。它比手动点鼠标快,也避免因网络波动导致扩展激活失败。
实操要点:
- 插件 ID 是发布页 URL 最后一段,比如
ms-python.python(不是名字“Python”) - 可一次装多个:
code --install-extension ms-python.python ms-vscode.cpptools esbenp.prettier-vscode - 离线安装:先下载
.vsix文件,再用code --install-extension /path/to/ext.vsix - 静默模式加
--force可跳过已存在提示,适合脚本自动化
容易踩的坑:某些插件(如 Remote-SSH)依赖平台原生二进制组件,--install-extension 不会自动触发它们的下载,首次启用时仍需联网拉取。建议搭配 code --list-extensions 校验是否真装上了。
为什么 code --disable-extensions 有时还是卡住?
这个参数本意是禁用所有扩展启动,但实际中仍有部分扩展能绕过——尤其是那些被 VS Code 内核识别为“关键依赖”的扩展(比如 ms-vscode.vscode-typescript-next),或通过 workspace dependencies 注入的扩展。
更可靠的排查方式是:
- 先用
code --disable-extensions --verbose查看哪些扩展仍在加载日志里出现 - 配合
--log-level=trace定位具体哪一步耗时(比如某插件的activate函数卡在 fs.readFile) - 彻底干净启动:加
--user-data-dir=/tmp/vscode-test避免旧配置干扰
复杂点在于:有些性能问题根本不在扩展本身,而在用户设置里启用了高开销功能,比如 "editor.quickSuggestions": true + 大型 monorepo,此时禁用扩展也没用。真正要调的,往往是 settings.json 里的语言特有配置项。











