VSCode启动参数仅在终端执行code命令时临时生效,GUI启动完全忽略;必须用code --flag形式传参,如--disable-extensions、--no-reopen-last --folder-uri等,且路径须为绝对路径。

VSCode 启动参数不是“配一次就全局生效”的开关,它只在你执行 code 命令时临时起作用;图形界面双击启动、Dock/开始菜单点击、甚至某些脚本调用都可能绕过这些参数。
怎么传参给 VSCode 本身(不是你的 Python/Java 程序)
所有启动参数都必须通过终端命令 code 加 flag 的方式传入,GUI 启动完全不读取它们。常见组合有:
-
code --disable-extensions:排除扩展干扰,排查卡顿或崩溃时第一反应 -
code --no-reopen-last --folder-uri file:///abs/path/to/project:强制加载指定路径,且不恢复上次编辑状态 -
code --devtools --skip-getting-started:跳过欢迎页,直接打开开发者工具,适合自动化或 CI 场景 -
code --read-only /etc/hosts:以只读模式打开敏感文件,保留高亮和跳转但防误改 -
code --user-data-dir="/path/to/isolated-config":启动一个完全隔离的 VSCode 实例,含独立设置、扩展、历史记录
注意:--settings 不是合法参数,任何类似写法都会被静默忽略;~ 波浪线在 code 命令中不展开,必须用绝对路径或先 cd 再 code .。
为什么 launch.json 的 args 对右键运行无效
launch.json 中的 args 字段只在 F5 调试时由调试器注入,和“Run Python File”“Run Code”“Code Runner”等右键菜单行为完全无关——它们底层走的是 python main.py 或 java -jar app.jar 这类直执行逻辑,根本不加载 launch.json。
- 错误做法:
"args": "--verbose --input data.txt"→ 会被当做一个字符串参数,Python 解析失败 - 正确写法:
"args": ["--verbose", "--input", "data.txt"]→ 每个参数单独一项,空格不合并 - 含空格的值如人名,直接加双引号:
"--name", "Alice Smith" - 参数解析代码(如
argparse)必须包在if __name__ == "__main__":块里,否则模块导入阶段就报错
Spring Boot 和 Java 项目怎么传 JVM 和程序参数
Spring Boot 不能靠右键“Run”启动,必须用 launch.json 配置 vmArgs(JVM 参数)和 args(程序参数)。这两者不能混写,也不能塞进 settings.json:
-
vmArgs示例:"-Xms256m -Xmx768m -XX:+UseG1GC"—— 只影响当前调试进程,和语言服务器无关 -
args示例:["--spring.profiles.active=dev", "--server.port=8081"]—— 传给 Spring Boot 的启动参数 - 别把
vmArgs写成java.jdt.ls.vmargs,后者只给 Java 语言服务器用,对你的应用毫无影响 - 若项目含大量反射扫描(Lombok + MapStruct),可加
-XX:TieredStopAtLevel=1关闭 C2 编译器,缩短预热时间
自动打开项目和恢复工作区的关键配置
想让 VSCode 启动时自动打开上次项目,光靠 GUI 设置不够,必须三者协同:
-
window.restoreWindows设为all(不是prompt或none) -
files.hotExit保持默认onExit,否则关窗口前未保存的状态会丢 -
workbench.startupEditor设为lastActiveEditor,否则即使窗口恢复了也会跳到欢迎页 - 更可靠的方式是双击
.code-workspace文件,或用code -r ./my-app.code-workspace启动
最容易被忽略的一点:VSCode 不会记住你上次选的是哪个调试配置,每次按 F5 前务必盯一眼左下角的调试配置名称——选错配置,args 就彻底失效。


















