vscode命令行启动路径由参数直接决定,与terminal.integrated.cwd无关:code .打开当前shell目录,code /path强制打开指定路径,无参数则启空窗口;settings.json中路径设置对其无效。

VSCode 命令行启动时的“路径”不是指终端默认目录,而是指它启动后打开哪个文件夹/文件——这个行为由命令行参数直接决定,和 terminal.integrated.cwd 设置无关。 搞混这两者是绝大多数人踩坑的起点。
code . 启动时打开哪个文件夹?看命令行参数本身
VSCode 的 code 命令不靠配置项“记住”上次路径,它完全依赖你输入的参数:
-
code .→ 打开当前 shell 所在目录(即pwd输出的路径) -
code /path/to/project→ 强制打开该绝对路径 -
code src/main.ts→ 打开文件所在目录(src/),并定位到该文件 - 没带任何路径参数(如单纯
code)→ 启动空窗口,终端默认目录按terminal.integrated.cwd规则生效
注意:code 不会读取 settings.json 里的路径偏好来决定打开哪里——它只认命令行上写的那个位置。
为什么 code --goto 不能替代路径参数?
--goto 是定位已有窗口中文件的辅助参数,不是启动路径控制开关:
-
code --goto "index.js:10:5"要求 VSCode 已有一个窗口打开了index.js所在的工作区;否则它先尝试打开默认路径,再报错或静默失败 - 它不会改变“打开哪个文件夹”这一动作,只影响编辑器光标位置
- 想确保每次启动都进指定项目?必须显式写路径:
code ~/my-project,而不是依赖--goto
terminal.integrated.cwd 和启动路径是两套系统
很多人想“让终端一打开就在 src/ 目录”,于是改 terminal.integrated.cwd,却发现 code . 还是打开整个项目根目录——这很正常,因为:
-
terminal.integrated.cwd只影响「集成终端启动时的初始工作目录」,不影响 VSCode 自身打开哪个文件夹 - 即使你设成
"${fileDirname}",也只对后续新开的终端生效,且前提是已打开某个文件 - 若用
code my-file.js启动,VSCode 会打开该文件所在目录为工作区,此时terminal.integrated.cwd才有机会基于${fileDirname}生效
Windows 下 code 命令不可用?先确认 PATH 是否注册成功
code 命令根本不在 VSCode 安装包里自动加入 PATH,必须手动触发注册:
- 打开 VSCode 图形界面,按
Ctrl+Shift+P,输入Shell Command: Install 'code' command in PATH并执行 - 关掉所有终端,重新打开一个——再运行
code --version验证 - 如果命令仍不可用,检查是否用了 .zip 解压版、Snap 或第三方打包版:这些版本不提供
code包装器,Shell Command选项会灰显,只能换官方安装包 - 手动加 PATH 的方式(如把
D:\Microsoft VS Code\bin加入环境变量)仅在找不到图形界面注册入口时作为备选,但容易因路径变更失效
真正容易被忽略的是:哪怕 code 命令能运行,它默认也不带 -r(复用窗口)。如果你希望多次执行 code . 都聚焦到同一个窗口,得显式加上 code -r .,否则每次都会新建窗口。











