本站点文档内容均翻译自code.visualstudio.com,仅供个人学习,如有差异请以官网为准。

终端基础知识

Visual Studio Code 包含一个功能齐全的集成终端,它从你的工作区根目录开始。它为编辑器提供了集成,以支持诸如链接错误检测等功能。集成终端可以像独立终端一样运行 mkdir 和 git 等命令。

你可以按如下步骤打开终端:

  • 从菜单中,使用 终端 > 新终端视图 > 终端 菜单命令。
  • 命令面板 (⇧⌘P (Windows, Linux Ctrl+Shift+P)), 使用视图:切换终端命令。
  • 在资源管理器中,您可以使用“在集成终端中打开”的上下文菜单命令从文件夹中打开一个新终端。
  • 要切换终端面板,请使用⌃`(Windows, Linux Ctrl+`键盘快捷键。
  • 要创建一个新的终端,请使用⌃⇧`(Windows, LinuxCtrl+Shift+`键盘快捷键。

VS Code 的终端具有名为 shell integration 的附加功能,该功能跟踪命令的运行位置,并在命令左侧和滚动条上进行装饰:

集成终端可以像独立终端一样运行 mkdir 和 git 等命令。VS Code 的终端具有称为 shell integration 的附加功能,该功能会在命令左侧和滚动条上用装饰跟踪命令的运行位置。

注意

如果您更喜欢在 VS Code 之外工作,请使用 ⇧⌘C (Windows, Linux Ctrl+Shift+C) 键盘快捷键打开外部终端

终端外壳

集成终端可以使用您机器上安装的各种 shell,缺省值将从您的系统缺省值中拉取。在终端配置文件下拉菜单中检测和呈现 shell。

检测到的配置文件可以在新终端按钮旁边的下拉菜单中选择。在 Windows 上的一些示例包括 PowerShell、命令提示符、Git Bash 和 WSL。

您可以在终端配置文件文章中了解更多关于配置终端外壳的信息。

管理终端

终端标签用户界面位于终端视图的右侧。每个终端都有一个带有其名称、图标、颜色和组装饰(如果有)的条目。

激活“启动配置文件”按钮将显示所有检测到和手动配置的配置文件

通过点击 + 图标来添加终端实例,该图标位于 终端 面板的右上角,从终端下拉菜单中选择一个配置文件,或者通过触发 ⌃⇧` (Windows, Linux Ctrl+Shift+`)命令。此操作将在与该终端关联的标签列表中创建另一个条目。

通过将标签悬停并选择垃圾桶按钮,选择标签项并按删除,使用终端:结束活动终端实例命令,或通过右键单击上下文菜单。

使用焦点下一个导航终端组⇧⌘](Windows, Linux Ctrl+PageDown和焦点上一个⇧⌘[(Windows, Linux Ctrl+PageUp

当终端状态改变时,图标可能会出现在标签标签的终端标题右侧。 一些例子是当没有错误时显示一个检查标记(macOS),否则显示一个X。 悬停图标以读取状态信息,状态信息可能包含操作。

组(拆分面板)

将多个终端并排放置,并通过拆分终端创建组:

  • 将鼠标悬停在右侧终端列表中的一个条目上,然后选择内联拆分按钮。
  • 右键点击上下文菜单,选择“拆分”菜单选项。
  • 按Alt并点击标签、+按钮或终端面板上的单标签。
  • 触发⌘\ (Windows, Linux Ctrl+Shift+5) 命令。
小贴士

新终端的工作目录取决于

终端.集成.分割当前工作目录
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
设置.

通过聚焦上一个面板在组中导航终端,⌥⌘←(Windows, Linux Alt+Left,或聚焦下一个面板,⌥⌘→(Windows, Linux Alt+Right

拖动和放下标签列表重新排列它们。将标签拖动到主终端区域可以将终端从一个组移动到另一个组。

将终端移入自己的组可以通过命令面板或右键点击上下文菜单中的终端:取消拆分终端命令来完成。

编辑区的终端

您可以在编辑区域(终端编辑器)中通过命令终端:在编辑区域创建新终端终端:在编辑区域旁边创建新终端或通过将终端从终端视图拖动到编辑区域来打开终端。终端编辑器像常规编辑器标签一样呈现:

终端编辑器像普通文本文件标签一样呈现

你可以在任一侧拥有终端编辑器,或者使用编辑器组布局系统在多个维度上排列,例如,PowerShell 和 WSL 终端在文件编辑器右侧堆叠:

终端编辑器可以使用编辑器组布局系统进行布局,例如,两个终端可以位于文本编辑器的右侧。

终端.集成.默认位置
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
设置可以更改默认设置视图编辑器区域终端位置。

新Windows中的终端

在新的 VS Code Windows中打开终端有几种不同的方法:

  • 使用 ⌃⇧⌥` (Windows, Linux Ctrl+Shift+Alt+`)
  • 右键点击终端标签(如果你打开了多个终端),或者左键点击标签(如果你只打开了一个终端)。然后选择移动终端到新Windows。
  • 选择 新终端Windows 选项,该选项可在多个不同的菜单中找到

缓冲区导航

终端中的内容被称为缓冲区,最下面视图上面的那一部分被称为“卷回缓冲区”。卷回缓冲区的大小由

终端.集成.滚动记录
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
设置 并默认为 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)
  • 滚动到底部 - ⌘End (Windows Ctrl+End, Linux Shift+End)

命令导航也可用(参见壳层集成):

  • 滚动到上一个命令 - ⌘↑ (Windows, Linux Ctrl+Up)
  • 滚动到下一个命令 - ⌘↓ (Windows, Linux Ctrl+Down)

滚动将立即发生,但可以通过配置在短时间内进行动画处理

终端.集成.平滑滚动
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
设置。

终端具有与编辑器集成的高级链接检测,甚至扩展了贡献的链接处理程序。将鼠标悬停在链接上以显示下划线,然后按住Ctrl/Cmd键并点击。

这些内置链接处理程序按以下优先顺序使用:

  • URIs/URLs: 像 URIs 一样的链接,例如https://code.visualstudio.comvscode://路径/至/文件文件://路径/至/文件将使用协议的标准处理程序打开。例如,对不起,我无法访问特定的网页内容或链接。如果你能提供具体的文本内容,我可以帮助你进行翻译。链接将打开浏览器。

    打开URI链接将会在系统浏览器中打开。

  • 文件链接:链接到系统中已验证存在的文件。这些文件将在新的编辑器标签页中打开,并支持许多常见的行/列格式,例如文件:1:2文件:第1行,第2列输入:.

    激活文件链接将会在编辑器中打开它

  • 文件夹链接:文件夹链接与文件链接类似,但会打开一个新的 VS Code Windows以进入该文件夹。

    激活文件夹链接将在新Windows中打开它

  • Word 链接:回退链接类型,使用

    终端.集成.单词分隔符
    • 在 VS Code 中打开
    • 在 VS Code Insiders 中打开
    设置。设置定义了单词边界,并将几乎所有文本转换成单词。激活单词链接会在工作区中搜索该单词。如果有唯一的结果,它将打开,否则将显示搜索结果。单词链接被认为是“低置信度”,除非您按住Ctrl/Cmd键,否则不会显示下划线或工具提示。它们对行和列后缀的支持也有限。

    激活词链接“terminal:15”将打开快速选择,搜索工作区中包含“terminal”的所有文件,选择一个选项将打开第15行的文件。

打开检测到的链接命令 (⇧⌘O (Windows, Linux Ctrl+Shift+O)) 可以通过键盘访问链接:

打开检测到的链接打开一个快速选择,显示视口中所有链接,并按类别分类

小贴士

如果链接验证导致性能问题,例如在高延迟的远程环境中,请通过以下方式禁用它

终端.集成.启用文件链接
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
设置.

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

当安装GitLens时,悬停在分支名称上将提供自定义行为以在用户界面中打开该分支。

键盘无障碍

链接可以通过多个命令进行键盘访问,这些命令根据链接的类型打开链接。

  • 终端:打开最近的本地文件链接 - 打开最近的本地文件链接。没有默认的键盘快捷键。
  • 终端:打开上次的URI/URL链接 - 打开最近的URI/URL链接。没有默认的键盘快捷键。
  • 终端:打开检测到的链接... - 打开一个可搜索的快速选择,包含所有检测到的链接,包括文字链接。默认的键盘快捷键是Ctrl/Cmd+Shift+O,这与在编辑器中转到符号的键盘快捷键相同。

复制 & 粘贴

复制和粘贴的键盘快捷键遵循平台标准:

  • Linux: Ctrl+Shift+CCtrl+Shift+V; 选择粘贴可用 Shift+Insert
  • macOS: Cmd+CCmd+V
  • Windows: Ctrl+CCtrl+V

选择时自动复制

终端.集成.复制选定文本
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
已启用。

默认情况下,粘贴多行时会有警告,可以通过设置禁用。

终端.集成.启用多行粘贴警告
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
设置。只有在 shell 不支持 "括号粘贴模式" 时才会进行此操作。当启用该模式时,表示 shell 可以处理多行粘贴。

使用鼠标

右键单击行为

右键单击的行为因平台而异:

  • Linux: 显示上下文菜单。
  • macOS: 选择光标下的单词并显示上下文菜单。
  • Windows: 如果有选择,则复制并拖放选择,否则粘贴。

这可以通过使用配置

终端.集成.右键单击行为
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
设置。选项是:

  • 默认- 显示上下文菜单。
  • 复制粘贴- 复制如果有选择,否则粘贴。
  • 粘贴- 右键点击粘贴。
  • 选择单词- 选择光标下的单词并显示上下文菜单。
  • 没有- 不做任何操作,将事件传递给终端。

列选择

Alt 和左键拖动以在终端内选择矩形文本块,而不是通常选择整行。

使用Alt重新定位光标

Alt 和左键单击将重新定位光标到鼠标下方。这通过模拟箭头键来实现,对于某些 shell 或程序可能无法可靠地工作。此功能可以通过 禁用

终端.集成.按alt键点击移动光标
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
设置。

鼠标事件模式

当终端中的应用程序启用鼠标事件模式,例如 Vim 鼠标模式时,鼠标交互会发送到应用程序而不是终端。这意味着点击和拖动将不再创建选择。在 Windows 和 Linux 上,按住Alt键可以强制终端选择,这也可以在 macOS 上通过按住Option键来实现,但需要启用

终端.集成.苹果选项点击强制选择
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
设置优先。

查找

集成终端具有查找功能,可以通过⌘F(Windows, LinuxCtrl+F触发。

在终端中搜索将会高亮显示所有与查询匹配的文本

小贴士

Ctrl+F 可以通过移除 工作台.操作.终端.聚焦查找 命令来自 跳过 shell 的命令.

运行选定文本

使用运行选定文本 命令,在编辑器中选择文本并运行命令 终端:在活动终端中运行选定文本 通过 命令面板 (⇧⌘P (Windows, Linux Ctrl+Shift+P)),终端将尝试运行选定文本。如果在活动编辑器中未选择任何文本,终端将运行光标所在整行。

小贴士

使用命令运行活动文件工作台.操作.终端.运行活动文件输入:.

最大化终端

通过点击带有向上的箭头图标的最大化面板大小按钮,可以最大化终端视图。这将暂时隐藏编辑器并最大化面板。这在需要暂时关注大量输出时非常有用。一些开发人员通过打开一个新Windows、最大化面板并隐藏侧边栏,将 VS Code 用作独立的终端。

请注意,只有当面板的对齐选项设置为居中时,才能将其最大化。

全选

有一个终端:全选命令,它在macOS上绑定到Cmd+A,但在Windows和Linux上没有默认的键盘快捷键,因为它可能会与shell热键冲突。要使用Ctrl+A来全选,请添加这个自定义键盘快捷键:

{
  "键": "ctrl+a",
  "命令": "workbench.action.terminal.selectAll",
  "条件": "terminalFocus && !isMac"
},

拖放文件路径

将文件拖入终端将把路径输入到终端中,以适应当前活动的 shell。

使用任务自动化终端

任务功能可以用于自动化终端的启动,例如,以下.vscode/tasks.json文件将在Windows启动时在一个终端组中打开命令提示符和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"
      }
    }
  ]
}

此文件可以提交到代码库以供其他开发人员共享,或通过创建用户任务来创建。工作台.操作.打开用户任务命令。

工作目录

默认情况下,终端将会在资源管理器中打开的文件夹处打开。

终端.集成.当前工作目录
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
设置允许指定一个自定义路径来打开:

{
  "终端.集成 cwd": "/home/user"
}

在 Windows 上,分屏终端将从父终端启动的目录开始。在 macOS 和 Linux 上,分屏终端将继承父终端的当前工作目录。此行为可以通过使用 来更改

终端.集成.分割当前工作目录
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
设置:

{
  "终端.集成.分割Cwd": "工作区根目录"
}

还有提供其他选项的扩展,例如 在这里打开终端.

固定尺寸终端

终端:设置固定尺寸 命令允许更改终端及其底层伪终端所使用的列数和行数。这将在必要时添加滚动条,可能会导致不愉快的用户体验,通常不推荐,但在 Windows 特别是在没有分页工具的情况下阅读日志或长行时,这是一个常见的需求。

你也可以右键点击终端标签并选择切换大小以内容宽度 (⌥Z (Windows, Linux Alt+Z)) 以将终端列数调整为终端中最大的换行行。

在终端中使用 GitHub Copilot

如果你可以访问GitHub Copilot,你可以使用它来获得终端命令和脚本的AI辅助帮助。有几种方法可以将Copilot与终端结合使用:

终端内联聊天

在终端中直接启动内联聊天以获取 shell 命令帮助:

  1. 打开终端 (⌃` (Windows, Linux Ctrl+`))
  2. ⌘I (Windows, Linux Ctrl+I) 或者在命令面板中运行 终端内联聊天 命令
  3. 以自然语言输入您的问题或请求,例如:
    • 如何找到这个目录中最大的文件?
    • 请告诉我如何撤销上一次的git提交
    • 创建一个bash脚本来分析日志文件

终端内联聊天帮助你快速获取和运行 shell 命令

当Copilot提供响应时,您可以选择运行以直接执行命令,或插入将其添加到终端以进行进一步编辑。

有关在终端中使用 GitHub Copilot 的更多信息,请参阅 在终端中使用即时聊天.

终端聊天参与者

使用专用@终端聊天视图中处于询问模式的聊天参与者:

  1. 打开聊天视图 (⌃⌘I (Windows, Linux Ctrl+Alt+I))
  2. 以 开始你的问题@终端将其发送到终端参与者
  3. 询问终端命令、 shell 脚本或解释终端输出

示例:

  • @terminal 列出此工作区中的前5个最大文件
  • @terminal /解释 top shell 命令
  • @terminal 如何递归地使用grep搜索模式

参考聊天中的终端上下文

您可以在聊天提示中包含终端信息作为上下文:

  • 使用# 终端选择将终端中选定的文本添加到聊天提示中
  • 使用#终端上一次命令包括你在终端中运行的最后一个命令

下一步

终端的基础知识已在本文件中涵盖。继续阅读以了解更多信息:

  • 终端内联聊天 - AI驱动的建议直接在您的终端中。
  • 任务 - 任务允许您与外部工具集成,并大量使用终端。
  • 精通 VS Code 的终端 - 一个拥有大量终端用户提示的外部博客。
  • 通过在 VS Code 中浏览键盘快捷键来探索终端命令(首选项:打开键盘快捷键 然后搜索 'terminal')。

常见问题

我无法启动终端。

有一种针对这类问题的专用故障排除指南

如何创建一个管理员终端?

集成终端外壳以 VS Code 的权限运行。如果你需要以提升(管理员)或不同权限运行外壳命令,请使用平台工具,例如runas.exe在终端内。

您可以通过终端配置文件来了解更多关于定制终端的信息配置配置文件

我可以为资源管理器的“在集成终端中打开”命令添加一个键盘快捷键吗?

您可以通过资源管理器中的在集成终端中打开上下文菜单命令为特定文件夹打开新的终端。

在资源管理器中选择一个文件夹,显示包含“在集成终端中打开”命令的上下文菜单

默认情况下,没有与在集成终端中打开关联的键盘快捷键,但您可以使用键盘快捷键编辑器(⌘K ⌘S(Windows, Linux Ctrl+K Ctrl+S)来为您的keybindings.json输入:.

keybindings.json 以下示例添加了键盘快捷键 Ctrl+T 用于 在终端中打开输入:.

{
  "键": "ctrl+t",
  "命令": "在终端中打开",
  "条件": "文件资源管理器聚焦"
}

为什么在启动集成终端时,nvm 会抱怨前缀选项?

nvm (Node 版本管理器) 用户在 VS Code 的集成终端中第一次看到这个错误时:

nvm 兼容 npm 配置 "prefix" 选项: 目前 设置为 " /usr/local" 运行
 `npm config delete prefix` `nvm use --delete-prefix v8.9.1 --silent` 取消设置

这主要是一个 macOS 问题,并且不会在外接终端中发生。造成这种情况的典型原因如下:

  • npm使用另一个实例全局安装了节点那是在你的某个路径上(例如/usr/local/bin/npm)。
  • 获取开发工具$PATHVS Code将在启动时启动一个bash登录 shell。这意味着你的~/.bash_profile 已经运行,当集成终端启动时,它将运行 另一个 登录 shell,重新排序 $PATH以意想不到的方式。

要解决此问题,您需要找到旧的npm已安装并移除了它及其过时的 node_modules。查找没关系初始化脚本并运行哪个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 应该可以解决问题:

删除 /usr/local/bin/npm /usr/local/lib/node_modules/npm/bin/npm-cli.js
删除 /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": "关闭"
}

请参阅GPU加速部分了解更多信息。

我看到1~[201~当我粘贴一些东西

这通常意味着终端内部运行的程序/外壳请求启用“括号粘贴模式”,但某些东西无法正确支持它。为了解决这个问题,你可以运行printf "\e[?2004l"要禁用该功能,请在该会话中添加以下内容到你的~/.inputrc文件:

设置 启用括号包围的粘贴 关闭

或者,可以通过关闭此设置强制括号粘贴模式忽略 shell 的请求:

{
  "terminal.integrated.ignoreBracketedPasteMode": 
}

Ctrl+A, Ctrl+R 在 zsh 上输出 ^A, ^R

这可能会发生,因为 zsh 处于 Vim 模式而不是 Emacs 模式,由于设置$编辑器$视觉输入:/维姆在你的初始化脚本中。

为了解决这个问题,你有两个选择:

  • 确保你不设置$编辑器vi(m)然而,如果你希望你的Git编辑器能够正常工作,这不是一个选项。
  • 添加绑定键 -e将以下内容添加到你的初始化脚本中,以明确设置Emacs。

如何将Cmd+.配置为像macOS的内置终端那样映射到Ctrl+C?

macOS默认终端使用Cmd+.来执行与Ctrl+C相同的操作。要在VS Code中获得此行为,请添加此自定义键盘快捷键

{
  "键": "cmd+.",
  "命令": "workbench.action.terminal.sendSequence",
  "条件": "terminalFocus",
  "参数": { "文本": "\u0003" }
}

为什么终端中的颜色不正确?

我们默认启用的无障碍功能之一是确保前景文本的最小对比度比率至少为4.5。此功能确保无论使用什么外壳和主题,文本都是可读的,否则无法实现。要禁用此功能,您可以设置:

"terminal.integrated.minimumContrastRatio"1

请参阅最小对比度比率部分了解更多信息。