终端基础
Visual Studio Code 包含一个功能齐全的集成终端,从你的工作区根节点开始。它与编辑器集成,支持链接和错误检测等功能。集成终端可以像独立终端一样运行 mkdir 和 git 等命令。
您可以按以下方式开启终端:
- 在菜单中,使用“终端>新终端”或“查看终端”菜单>命令。
- 在命令面板(⇧⌘P(Windows,Linux Ctrl+Shift+P))中,使用“视图:切换终端”命令。
- 在资源管理器中,您可以使用“在集成终端打开”上下文菜单命令,从文件夹中打开新终端。
- 要切换终端面板,请使用⌃'(Windows,Linux Ctrl+')快捷键。
- 要创建新终端,请使用⌃⇧'(Windows,Linux Ctrl+Shift+')快捷键。
VS Code 的终端还有额外功能,称为 shell 集成,可以追踪命令执行位置,命令左侧和滚动条中标有装饰:

如果你更喜欢在VS Code之外工作,可以用⇧⌘C(Windows,Linux Ctrl+Shift+C)快捷键打开外部终端
终端壳体
集成终端可以使用你机器上安装的各种外壳,默认接口是从系统默认状态中提取的。壳体会被检测并在终端配置文件下拉菜单中显示。

你可以在终端配置文件文章中了解更多关于配置终端壳的信息。
终端管理
终端标签页的界面在终端视图的右侧。每个终端都有一条条目,包含其名称、图标、颜色和组别装饰(如有)。

通过选择 TERMINAL 面板右上角的 + 图标、从终端下拉菜单选择配置文件,或触发 ⌃⇧'(Windows,Linux Ctrl+Shift+')命令来添加终端实例。此作在与该终端关联的标签列表中创建另一个条目。
通过将鼠标悬停标签并选择“垃圾桶”按钮,选择标签项并按删除,使用“终端:关闭活跃终端实例”命令,或通过右键菜单删除终端实例。
在终端组间切换时,使用焦点 ⇧⌘(Windows,Linux Ctrl+PageDown)和焦点前段 ⇧⌘[(Windows,Linux Ctrl+PageUp)。
当终端状态发生变化时,标签标签上可能出现图标。例如,macOS上会显示铃铛,任务中没有错误时显示勾选,否则显示X。将图标悬停以查看状态信息,这些信息可能包含作。
分组(分割面板)
将多个终端并排放置,通过拆分一个终端来创建一个组:
- 将鼠标悬停在右侧终端列表中的某个条目上,选择内联分拆按钮。
- 右键点击右键菜单,选择分屏菜单选项。
- Alt 然后点击某个标签页、+ 键或终端面板上的单个标签页。
- 触发 ⌘\(Windows,Linux Ctrl+Shift+5)命令。
通过聚焦前一个窗格 ⌥⌘←(Windows,Linux Alt+Left)或下一窗格 ⌥⌘→(Windows,Linux Alt+Right)来在一组终端之间导航。
在列表中拖拽标签可以重新排列它们。将标签拖入主终端区域可以将终端从一个组移动到另一个组。
将终端移动到独立组可以通过命令面板中的“终端:解除分离终端”命令,或在右键菜单中完成。
编辑器区的终端
你可以在编辑器区域(终端编辑器编辑器)中打开终端,使用“终端:在编辑器区域创建新终端”命令,或者在侧边命令中“终端:在编辑器区域创建新终端”,或者将终端从终端视图拖入编辑器区域。终端编辑器的呈现方式类似于普通编辑器标签页:

你可以在两侧放置终端编辑器,或者通过编辑器组布局系统(例如PowerShell和WSL终端堆叠在文件编辑器右侧):

该
视图或编辑区域终端位置。
新窗口中的终端
在新的 VS Code 窗口中打开终端有几种不同的方式:
- 使用 ⌃⇧⌥'(Windows,Linux Ctrl+Shift+Alt+')
- 如果你有多个终端,右键点击终端标签页;如果只有一个终端,则左键点击标签页。然后选择“移动终端到新窗口”。
- 选择多个菜单中可用的新终端窗口条目
缓冲区导航
终端中的内容称为缓冲区,底部视口上方的部分称为“scrollback”。保留的滚动量由
1000台词。
有多种命令可用于在终端缓冲区内导航:
- 向上滚动一行 - ⌥⌘PageUp(Windows Ctrl+Alt+PageUp,Linux Ctrl+Shift+Up)
- 向下滚动一行 - ⌥⌘PageDown(Windows Ctrl+Alt+PageDown,Linux Ctrl+Shift+Down)
- 向上滚动页面 - PageUp(Windows,Linux Shift+PageUp)
- 向下滚动页面 - PageDown(Windows,Linux Shift+PageDown)
- 滚动到顶部 - ⌘Home(Windows Ctrl+Home,Linux Shift+Home)
- 滚动到最底部 - ⌘结束(Windows Ctrl+结束,Linux Shift+结束)
命令导航也可用(参见shell集成):
- 滚动到上一个命令 - ⌘↑(Windows,Linux Ctrl+Up)
- 滚动到下一个命令 - ⌘↓(Windows,Linux Ctrl+Down)
滚动会瞬时发生,但可以通过以下功能配置为短时间内动画
链接
该终端具备复杂的链接检测功能,并集成编辑器,甚至扩展贡献的链接处理程序。将鼠标悬停在链接上可显示下划线,然后按住 Ctrl/Cmd 键点击。
这些内置链路处理程序按以下优先级顺序使用:
-
URI/URL:看起来像 URI 的链接,例如
https://code.visualstudio.com,vscode://path/to/file或file://path/to/file将使用协议的标准处理程序打开。例如,https链接会打开浏览器。
-
文件链接:指向系统中已验证存在的文件链接。这些工具会在新的编辑器标签页中打开文件,并支持许多常见的行列格式,例如
文件:1:2,文件:第1行,第2列.
-
文件夹链接:指向文件夹的链接类似于文件链接,但会在文件夹处打开新的 VS Code 窗口。

-
Word 链接:使用以下
terminal.integrated.wordSeparators环境。该设定定义了单词边界,并将几乎所有文本都转化为单词。激活单词链接会在工作区中搜索该单词。如果只有一个结果,它会打开,否则会显示搜索结果。Word 链接被视为“低信度”,除非你按住 Ctrl/Cmd 键,否则不会显示下划线或提示。它们对行和列后缀的支持也有限。
可以使用“已检测到的链接”命令(⇧⌘O(Windows,Linux Ctrl+Shift+O))通过键盘访问链接:

分机处理链路
扩展可以贡献链接提供者,允许扩展定义点击时发生的事情。一个例子是GitLens扩展检测Git分支链接。

键盘无障碍
链接可以通过多个按链接类型打开的命令进行键盘访问。
- 终端:打开最后的本地文件链接——打开最近的本地文件链接。没有默认的键盘快捷键。
- 终端:打开最后一个 URL 链接——打开最近的 URI/URL 链接。没有默认的键盘快捷键。
- 终端:已检测到链接......- 打开可搜索的快速选择,包含所有检测到的链接,包括单词链接。默认的快捷键是 Ctrl/Cmd+Shift+O,这与编辑器中的“去符号”快捷键相同。
复制粘贴
复制粘贴的快捷键遵循平台标准:
- Linux:Ctrl+Shift+C 和 Ctrl+Shift+V;选择粘贴可通过Shift+Insert获得
- macOS:Cmd+C 和 Cmd+V
- Windows:Ctrl+C 和 Ctrl+V
复制是在选择时自动进行的
默认情况下,粘贴多行时会有警告,可以通过以下方式关闭
使用鼠标
右键点击行为
右键点击的行为因平台而异:
- Linux:显示上下文菜单。
- macOS:选择光标下方的单词,显示右键菜单。
- Windows:如果有选择就复制并丢弃选择,否则粘贴。
这可以通过以下方式进行配置
默认- 显示上下文菜单。复制粘贴- 有选择时复制,否则粘贴。粘贴- 右键粘贴。selectWord- 选择光标下方的单词,并显示上下文菜单。没什么- 什么都不做,把事件传到终端。
列选
按Alt并左键拖曳,可以在终端内选择一个矩形文本,而不是普通的行选。
用Alt重新定位光标
Alt 和左键点击会把光标重新定位到鼠标下方。这通过模拟箭头按键来实现,但对于某些shell或程序来说,这种方法可能并不可靠。此功能可以通过以下方式关闭
鼠标事件模式
当在终端中运行的应用程序开启鼠标事件模式(如 Vim 鼠标模式)时,鼠标作会发送到应用程序而非终端。这意味着点击和拖拽将不再生成选择。在Windows和Linux上,可以通过按住Alt键强制选择终端,macOS上也可以用Option键来实现,但需要启用
查找
集成终端具备查找功能,可通过⌘F(Windows,Linux Ctrl+F)触发。

Ctrl+F 可以通过移除workbench.action.terminal.focusFind命令中跳过 shell。
运行选定文本
使用runSelectedText命令,在编辑器中选择文本,并通过命令面板(Windows,Linux Ctrl+Shift+P)在活动终端运行命令:在活动终端运行所选文本,终端将尝试运行所选文本。如果活跃编辑器中未选择任何文本,光标所在的整行将在终端中运行。
同时使用命令运行当前文件workbench.action.terminal.runActiveFile.
最大化终端
通过点击带有向上倒V形图标的最大化面板尺寸按钮,可以最大化终端视图。这样可以暂时隐藏编辑器,最大化面板。这有助于暂时专注于大量输出。有些开发者通过打开新窗口、最大化面板并隐藏侧边栏,将VS Code作为独立终端使用。
注意,只有当面板的对齐选项设置为中心时,才能实现最大化。
全部选择
有一个“终端:全部选择”命令,在macOS上绑定为Cmd+A,但在Windows和Linux上没有默认的键盘快捷方式,因为可能与shell快捷键冲突。要使用 Ctrl+A 选择所有,请添加这个自定义键盘快捷键:
{
"key": "ctrl+a",
"command": "workbench.action.terminal.selectAll",
"when": "terminalFocus && !isMac"
},
拖放文件路径
将文件拖入终端会输入路径,转义则匹配当前的 shell。
自动化终端与任务
任务功能可用于自动化终端的启动,例如:.vscode/tasks.json当窗口启动时,文件会在单个终端组中启动命令提示符和PowerShell终端:
{
"version": "2.0.0",
"presentation": {
"echo": false,
"reveal": "always",
"focus": false,
"panel": "dedicated",
"showReuseMessage": true
},
"tasks": [
{
"label": "Create terminals",
"dependsOn": [
"First",
"Second"
],
// Mark as the default build task so cmd/ctrl+shift+b will create them
"group": {
"kind": "build",
"isDefault": true
},
// Try start the task on folder open
"runOptions": {
"runOn": "folderOpen"
}
},
{
// The name that shows up in terminal tab
"label": "First",
// The task will launch a shell
"type": "shell",
"command": "",
// Set the shell type
"options": {
"shell": {
"executable": "cmd.exe",
"args": []
}
},
// Mark as a background task to avoid the spinner animation on the terminal tab
"isBackground": true,
"problemMatcher": [],
// Create the tasks in a terminal group
"presentation": {
"group": "my-group"
}
},
{
"label": "Second",
"type": "shell",
"command": "",
"options": {
"shell": {
"executable": "pwsh.exe",
"args": []
}
},
"isBackground": true,
"problemMatcher": [],
"presentation": {
"group": "my-group"
}
}
]
}
该文件可以提交到仓库以与其他开发者共享,或作为用户任务创建,通过workbench.action.tasks.openUserTasks指挥部。
工作目录
默认情况下,终端会在资源管理器中打开的文件夹。该
{
"terminal.integrated.cwd": "/home/user"
}
Windows 上的分断终端会从父终端起始的目录开始。在macOS和Linux上,分割终端会继承父终端当前的工作目录。这种行为可以通过以下方式进行改变
{
"terminal.integrated.splitCwd": "workspaceRoot"
}
还有一些扩展功能提供更多选项,比如Terminal Here。
固定尺寸端子
终端:设置固定尺寸命令允许更改终端及其支持伪终端使用的列和行数。这会在必要时添加滚动条,可能导致用户体验不佳且通常不推荐,但在Windows上,当没有分页工具时,阅读日志或长行时,这是常见的要求。
你也可以右键点击终端标签页,选择切换大小为内容宽度(⌥Z(Windows,Linux Alt+Z)),将终端列数调整到终端中最大的反行。
终端中的GitHub Copilot
如果你能访问GitHub Copilot,可以用它获得AI驱动的终端命令和shell脚本帮助。在终端上使用Copilot有几种方式:
终端内联聊天
直接在终端内开启内联聊天,获取关于shell命令的帮助:
- 打开终端(⌃'(Windows,Linux Ctrl+'))
- 按⌘I(Windows,Linux Ctrl+I)或在命令面板中运行终端内联聊天命令
- 请用自然语言输入您的问题或请求,例如:
- “我怎么找到这个目录中最大的文件?”
- “教我怎么撤销上次的提交”
- “创建一个bash脚本来分析日志文件”

当 Copilot 提供响应时,你可以选择“运行”直接执行该命令,或选择插入将其添加到终端以便进一步编辑。
关于在终端中使用GitHub Copilot的更多信息,请参见“使用终端内联聊天”。
终端聊天参与者
使用专用的@terminal聊天界面中的询问模式中聊天参与者:
- 打开聊天视图(⌃⌘I(Windows,Linux Ctrl+Alt+I))
- 你的问题开场白
@terminal将它引导到终端参与者 - 询问终端命令、shell脚本,或者解释终端输出
示例:
@terminal列出该工作区中最大的5个文件@terminal /explain top shell 命令@terminal如何递归地对模式进行grep处理
聊天中的参考终端上下文
你可以在聊天提示中包含终端信息作为上下文:
- 用途
#terminalSelection将终端中选定的文本添加到你的聊天提示中 - 用途
#terminalLastCommand包含你在终端中执行的最后命令
下一步
终端的基本内容已在本文档中介绍。继续阅读,了解更多:
- 终端内联聊天——AI驱动的建议直接出现在你的终端中。
- 任务——任务允许你与外部工具集成,并大量利用终端。
- 掌握 VS Code 的终端——一个外部博客,包含大量高级用户终端技巧。
- 通过在 VS Code 中浏览键盘快捷方式来探索终端命令(偏好设置:打开键盘快捷方式后搜索“terminal”)。
常见问题
我启动终端时遇到了问题
这类问题有专门的排查指南。
我如何创建管理员终端?
集成终端壳是在VS Code权限下运行的。如果你需要运行带有提升权限(管理员)或其他权限的shell命令,可以使用平台工具,比如runas.exe在终端内。
你可以在“配置配置文件”中了解更多关于通过终端配置文件自定义终端的信息。
我能为资源管理器的“在集成终端打开”命令添加快捷键吗?
你可以通过“在集成终端打开”上下文菜单命令,从资源管理器中为特定文件夹打开新终端。

默认情况下,打开集成终端没有快捷键,但你可以通过键盘快捷指令编辑器(⌘K ⌘S(Windows,Linux Ctrl+K Ctrl+S))添加自己的快捷方式,为你的快捷键添加快捷方式keybindings.json.
该keybindings.json下面的示例增加了键盘快捷键 Ctrl+T 用于openIn终端.
{
"key": "ctrl+t",
"command": "openInTerminal",
"when": "filesExplorerFocus"
}
为什么NVM在集成终端启动时会抱怨前缀选项?
nvm(节点版本管理器)用户常常首次在VS Code集成终端中看到此错误:
nvm is not compatible with the npm config "prefix" option: currently set to "/usr/local"
Run `npm config delete prefix` or `nvm use --delete-prefix v8.9.1 --silent` to unset it
这主要是macOS的问题,外部终端不会出现。造成这种情况的典型原因如下:
NPM通过另一个实例 进行了全局安装节点这就在你路径上的某个位置(比如/usr/local/bin/npm).- 要让开发工具在
$PATHVS Code 启动时会启动 bash 登录 shell。这意味着你的~/.bash_profile已经运行了,当集成终端启动时,它会运行另一个登录壳,重新排序$PATH可能以意想不到的方式出现。
要解决这个问题,你需要追溯到旧的NPM安装并移除它及其过时的node_modules。找到NVM初始化脚本和运行哪个NPM在运行之前,启动新终端时应该会打印路径。
一旦你找到了通往 npm 的路径,通过运行类似这样的命令来解析符号链接,找到旧node_modules:
ls -la /usr/local/bin | grep "np[mx]"
这会给你最终的解析路径:
... npm -> ../lib/node_modules/npm/bin/npm-cli.js
... npx -> ../lib/node_modules/npm/bin/npx-cli.js
然后删除文件并重新启动 VS Code 应该能解决问题:
rm /usr/local/bin/npm /usr/local/lib/node_modules/npm/bin/npm-cli.js
rm /usr/local/bin/npx /usr/local/lib/node_modules/npm/bin/npx-cli.js
为什么macOS在我调整终端分割面板大小时会发出叮的音?
键盘快捷键⌃⌘←和⌃⌘→是调整终端中单个分割面板大小的默认选项。虽然它们能用,但由于Chromium的问题,也会播放系统“无效密钥”的声音。推荐的解决方法是让macOS在终端里运行这些快捷键,让它不要作:
mkdir -p ~/Library/KeyBindings
cat > ~/Library/KeyBindings/DefaultKeyBinding.dict <<EOF
{
"@^\UF700" = "noop:";
"@^\UF701" = "noop:";
"@^\UF702" = "noop:";
"@^\UF703" = "noop:";
"@~^\UF700" = "noop:";
"@~^\UF701" = "noop:";
"@~^\UF702" = "noop:";
"@~^\UF703" = "noop:";
}
EOF
我在终端渲染时遇到了问题。我该怎么办?
默认情况下,集成终端会使用GPU加速渲染。通常渲染问题是硬件、作系统或驱动和GPU渲染器不兼容。首先要尝试的是禁用GPU加速,以基于DOM的渲染速度为交换,后者更可靠:
{
"terminal.integrated.gpuAcceleration": "off"
}
更多信息请参见GPU加速部分。
我明白了1~或[201~当我粘贴某个东西时
这通常意味着终端内运行的程序/shell请求开启“括号粘贴模式”,但某些设备不支持。为了解决这个问题,你可以选择跑步printf “\e[?2004L”在该会话中禁用它或在你的~/.inputrc文件:
set enable-bracketed-paste off
或者,通过关闭括号粘贴模式,可以通过以下设置强制忽略壳的请求:
{
"terminal.integrated.ignoreBracketedPasteMode": true
}
Ctrl+A,Ctrl+R 输出 ^A,^R 在 zsh 上
如果 zsh 设置为 Vim 模式而非 Emacs 模式,这种情况可能因设置问题而发生$EDITOR或$VISUAL到六/Vim在你的初始脚本里。
为了解决这个问题,你有两个选择:
- 确保你不会被设置
$EDITOR到vi(m).不过,如果你想让Git编辑器正常工作,这不是选项。 - 添加
Bindkey -e对你的初始脚本进行显式设置Emacs。
我该如何配置 Cmd+。像macOS内置终端那样映射到Ctrl+C?
macOS默认终端使用Cmd+.执行与Ctrl+C相同的作。要在 VS Code 中实现这种行为,请添加这个自定义键盘快捷键:
{
"key": "cmd+.",
"command": "workbench.action.terminal.sendSequence",
"when": "terminalFocus",
"args": { "text": "\u0003" }
}
为什么终端里的颜色不正确?
我们默认启用的一个无障碍功能是确保前景文本的对比度至少达到4.5。此功能确保无论使用何种外壳和主题,文本都能清晰可读,否则是无法实现的。要禁用此功能,您可以设置:
"terminal.integrated.minimumContrastRatio": 1
更多信息请参见最小对比度部分。