VSCode的code命令行参数仅控制编辑器自身行为,与launch.json中的args完全无关;后者仅在F5调试时传给目标程序,前者如--folder-uri、--locale等只影响编辑器启动、UI或进程管理。

VSCode内置命令行参数不是用来运行你写的程序的,而是控制VS Code自身启动行为的——传错地方、混用场景,90%的问题都出在这儿。
code命令参数和launch.json里的args完全无关
很多人在launch.json里配了"args",却去终端敲code --args xxx,结果参数根本没进程序。这是两个平行世界:code命令的参数只影响编辑器实例(比如开哪个文件夹、禁用扩展),而launch.json里的args只在F5调试时传给你的目标程序(Python/Java/C++等)。
-
code --folder-uri file:///path/to/project:启动VS Code并打开指定路径,不运行任何代码 -
launch.json中"args": ["--verbose", "config.yaml"]:F5调试时,才把这两个字符串作为命令行参数传给program指向的可执行文件或脚本 - 点“Debug Python File”右键菜单?它默认不读
args,除非你在配置里加"purpose": ["debug-in-terminal"]并命名为Python: Current File (Integrated Terminal)
路径写错是code命令打不开项目的最常见原因
VS Code不展开~,也不自动cd到你写的路径下。你敲code ~/my-project,它真去找字面路径~/my-project,而不是/home/you/my-project。
- 最稳做法:
cd /absolute/path && code . - 必须用绝对路径+
file://协议:code --folder-uri file:///home/you/project(Linux/macOS)或code --folder-uri file:///C:/Users/you/project(Windows) - 路径含空格或中文?必须双引号包裹:
code "./my project"或code --folder-uri "file:///C:/Users/张三/project" - PowerShell里
code .\src可能侥幸成功,但CMD推荐统一用正斜杠:code ./src,避免反斜杠被当作转义
--wait只在首次启动时阻塞,后台有进程就失效
写CI脚本或Git hook时想让code --wait file.txt等你改完再继续?如果VS Code已在后台运行,--wait立刻返回,根本不等你保存。
- 真正阻塞的组合:
code --new --wait file.txt(强制新开窗口) - 配合
--diff时--wait仍有效:code --diff old.js new.js --wait - 脚本里别裸用
--wait,先检查进程:pgrep -f "Code Helper" >/dev/null || code --new --wait file.txt - macOS/Linux用
pkill -f "Code Helper",Windows用任务管理器杀掉所有Code.exe和Code Helper进程
--locale=zh-cn只改UI,不影响终端和远程会话
你以为code --locale=zh-cn会让整个环境变中文?其实它只作用于主进程UI。终端、SSH远程连接、debugpy控制台的语言,全由系统决定。
- 终端语言取决于
$LANG(Linux/macOS)或Windows区域设置,和--locale无关 - Remote-SSH连上去后,远程端的VS Code Server不读本地
--locale;得在远程机器上手动写~/.vscode-server/data/Machine/locale.json - 想确认是否生效?关掉所有VS Code进程再试,否则后台残留进程会复用旧locale
-
code --disable-extensions临时排查问题很管用,但它不持久——每次都要显式带上
最常被忽略的是参数的作用域边界:比如--locale对终端无效,--args在attach模式下被忽略,--user-data-dir不清理扩展缓存……每个参数只在它设计的上下文里起作用,超出范围就是白忙活。


















