terminal: select default profile 是最快生效的切换方式,改完立刻生效,无需重启 vs code 或关闭已有终端;按 ctrl + shift + p 输入该命令,从列表中选择目标 shell(如 command prompt、powershell、git bash),再按 ctrl + ` 新建终端即可使用新默认类型。

Terminal: Select Default Profile 是最快生效的切换方式
改完立刻生效,不用重启 VS Code,也不用关掉已有终端。按 Ctrl + Shift + P 输入 Terminal: Select Default Profile 回车,在弹出列表里选你要的 Shell(比如 Command Prompt、PowerShell、Git Bash),再按 Ctrl + ` 新建终端,新终端就自动用你选的类型启动。
这个操作只影响后续新建的终端,已打开的终端不会变——这不是 bug,是设计如此。所以如果你当前正在跑一个 npm run dev,它不会中断或重启,只是新终端换壳了。
- 列表里显示的名字必须完全匹配配置项,比如 Windows 下必须选
Command Prompt(带空格),不能写成cmd或CommandPrompt - 如果列表里没有你想要的 Shell,说明还没在
settings.json里定义terminal.integrated.profiles.windows(或其他平台对应字段) - 选完后终端标题栏会显示对应名称,比如“命令提示符”或“Git Bash”,这是最直观的验证方式
terminal.focusAtIndex 支持超 10 个终端的精准跳转
VS Code 原生只支持 Ctrl + Shift + 0 到 Ctrl + Shift + 9 聚焦编号为 0–9 的终端面板,但编号不随关闭重排,容易和视觉顺序脱节。想快速切到第 12 个终端?得靠 terminal.focusAtIndex 命令。
打开快捷键设置(Ctrl + K Ctrl + S),搜 terminal.focusAtIndex,绑定新快捷键,例如:
[ { "key":"ctrl+alt+2", "command":"terminal.focusAtIndex", "args": {"index": 11 } } ]
index 从 0 开始计数,所以 11 对应第 12 个终端。注意:该命令只在终端面板已打开时有效;如果面板被隐藏,得先按 Ctrl + ` 唤出来。
- 别指望右键菜单里的“重命名”能改变底层 Shell 类型——它只改标签名,且重启后丢失
- 编号聚焦针对的是终端面板(split pane),不是标签页(tab)。拖拽标签页不会创建新面板,也不会获得编号
- 多个终端长时间运行后,编号可能和你记忆中的顺序不一致,建议配合右键 → “Rename Terminal” 起有意义的名字,比如
dev-server或db-migrate
终端内执行 cmd 或 powershell 是最轻量的临时切换
不需要改配置、不新建终端、不关进程,就在当前终端里敲一行命令就能换壳。Windows 下直接输入 cmd 回车,就进命令提示符;输 powershell 就切回 PowerShell。Linux/macOS 上类似,bash、zsh 都可直接调用。
这种切换是子进程嵌套:你原来的 shell 还在后台挂着,新 shell 是它的子进程。关掉新 shell 后,会自动回到原来的环境。
- 适合临时执行一条只在某 Shell 下有效的命令,比如在 PowerShell 里跑
Get-ChildItem,又不想整个终端都切过去 - 注意路径和环境变量差异:
%PATH%在 CMD 里有效,$env:PATH才是 PowerShell 的写法,复制脚本前务必确认上下文 - 不推荐在 WSL 终端里执行
cmd——它会启动 Windows 的 CMD,工作目录仍是 WSL 的根,容易路径错乱
别碰 terminal.integrated.shell.windows 这个旧字段
这个字段早在 VS Code 1.6x 版本就被弃用了,但它还在不少人的 settings.json 里残留。只要它存在,就会和新的 terminal.integrated.defaultProfile.windows 冲突,导致你选好默认 Shell 后,新开终端还是 PowerShell。
检查方法很简单:打开设置搜索 shell.windows,如果出现结果,点开编辑器右侧的“在 settings.json 中编辑”,删掉整行 "terminal.integrated.shell.windows": "..."。
- 真正起作用的是
terminal.integrated.defaultProfile.windows,值必须是字符串,且要和profiles里定义的 key 完全一致 - 如果项目根目录下有
.vscode/settings.json,它会覆盖用户级设置,右键终端标签页 → “Select Default Profile” 会提示“已保存到工作区”,这时得去项目配置里改 - CMD 和 PowerShell 行为差异远不止提示符:CMD 不认
ls、clear、export,激活虚拟环境也得用venv\Scripts\activate.bat而不是source venv/bin/activate
ls 就可能卡住半天。











