URLhttps://learnscript.net/zh/vscode/terminal/
    复制链接转到说明  示例

    Visual Studio Code 终端使用和设置说明

    我被代码海扁署名-非商业-禁演绎
    阅读 38:27·字数 11537·发布 

    Visual Studio Code 终端

    在实际的项目开发中,IDE 通常会使用命令行(也被称为外壳程序,shell)来编译和运行代码,或完成其他的相关任务。终端使开发人员可以在 Visual Studio Code 中直接使用命令行,比如 Windows 中的 PowerShell命令提示符,UNIX/Linux 中的bash

    默认情况下,终端面板会显示在 Visual Studio Code 的底部区域,该面板的右上角将提供与终端相关的实用功能和信息。如果终端启动了多个命令行应用,那么终端面板的右边区域会一一列出他们,同时界面会发生一些变化。

    Visual Studio Code资源管理器终端问题右上角/右边区域

    Visual Studio Code 终端的上下文菜单

    终端面板所启动的命令行应用(外壳程序),通常拥有对应的图标和名称,使用鼠标点击他们可弹出命令行应用对应的上下文菜单。如果终端面板仅包含一个命令行应用,那么鼠标左键和右键可以弹出不同的上下文菜单。

    终端问题pwsh

    打开 Visual Studio Code 终端

    要在 Visual Studio Code 中打开终端,你可以选择菜单项查看 | 终端,或者使用键盘快捷方式Ctrl+`(macOS 中为⌃+`),或者在命令面板中输入并执行命令View: Toggle Terminal。如果终端已经被打开,那么使用键盘快捷方式Ctrl+`或执行命令View: Toggle Terminal将隐藏终端

    如何打开新的外部终端?

    除了可以打开集成的终端,Visual Studio Code 也可以直接打开外部终端,只需要使用键盘快捷方式Ctrl+Shift+C,或在命令面板中输入并执行命令Open New External Terminal,或选择资源管理器中的文件夹的上下文菜单项在外部终端中打开即可。

    外部终端将作为单独的程序运行,并且可通过 Visual Studio Code 用户设置项(在工作区设置文件中无效)来指定具体被启动的命令行应用的路径,其中terminal.external.windowsExec用于 Windows,terminal.external.linuxExec用于 Linux,terminal.external.osxExec用于 macOS。

    settings.json
    {
    	// 以下三个设置项用于设置被启动的外部命令行应用,在工作区设置中无效
    	"terminal.external.windowsExec": "C:\\WINDOWS\\System32\\cmd.exe",
    	"terminal.external.linuxExec": "xterm",
    	"terminal.external.osxExec": "Terminal.app",
    }

    如何从资源管理器中的文件夹打开外部终端?

    在默认情况下,资源管理器中的文件夹只有上下文菜单项在集成终端中打开,你需要将设置项terminal.explorerKind设置为external,这将启用上下文菜单项在外部终端中打开

    此外,设置项terminal.explorerKind还拥有以下有效取值,integrated(默认值,启用上下文菜单项在集成终端中打开),both(同时启用上下文菜单项在集成终端中打开在外部终端中打开)。

    settings.json
    {
    	// 同时启用上下文菜单项在集成终端中打开和在外部终端中打开
    	"terminal.explorerKind": "both",
    }

    如何从源代码管理面板中的源代码管理存储库打开外部终端?

    如果源代码管理面板中的源代码管理存储库已经显示,那么默认情况下,可通过源代码管理存储库中列出的存储库的上下文菜单项在集成终端中打开,打开集成终端。将设置项terminal.sourceControlRepositoriesKind设置为external,可启用上下文菜单项在外部终端中打开,以打开外部终端。

    此外,设置项terminal.sourceControlRepositoriesKind还拥有以下有效取值,integrated(默认值,启用上下文菜单项在集成终端中打开),both(同时启用上下文菜单项在集成终端中打开在外部终端中打开)。

    settings.json
    {
    	// 同时启用上下文菜单项在集成终端中打开和在外部终端中打开
    	"terminal.sourceControlRepositoriesKind": "both",
    }

    新建 Visual Studio Code 终端

    正如之前提到的,终端可以同时运行多个命令行应用(外壳程序),这些命令行应用会在终端面板的右边区域列出。选择菜单项终端 | 新建终端,或者使用键盘快捷方式Ctrl+Shift+`(macOS 中为⌃+⇧+`),或者在命令面板中输入并执行命令Terminal: Create New Terminal,或选择资源管理器中的文件夹的上下文菜单项在集成终端中打开,或者点击终端面板右上角的加号按钮可以在终端中启动一个新的命令行应用。这通常是有效的,当你需要使用不同的命令行应用来执行不同的任务时。

    如果 Visual Studio Code 工作区包含了多个根目录,那么需要选择在哪个根目录新建终端。

    如何在终端中启动不同的命令行应用(外壳程序)?

    一般情况下,Visual Studio Code 会使用默认终端配置文件,并启动该配置所指定的命令行应用,如果你希望使用其他命令行应用,那么应使用其对应的终端配置文件。点击终端面板右上角的加号按钮旁边的箭头按钮,将列出所有可用的终端配置文件,任意选择一个即可启动该终端配置文件对应的命令行应用。或者,在命令面板中输入并执行命令Terminal: Create New Terminal (With Profile),然后选择需要启动的终端配置文件。

    配置文件

    如果希望了解如何设置默认的 Visual Studio Code 终端配置文件或更多关于终端配置文件的信息,你可以查看设置默认的配置文件一段或Visual Studio Code 终端配置文件使用说明一节。

    终端问题

    如何在编辑器区域中新建终端?

    命令面板中输入并执行命令Terminal: Create New Terminal in Editor Area,可以在编辑器区域启动新的命令行应用(外壳程序),而执行命令Terminal: Create New Terminal in Editor Area to the Side会在编辑器区域的右侧启动新的命令行应用。

    如何更改新建终端的显示位置?

    默认情况下,在执行新建终端的操作后,被启动的命令行应用(外壳程序)将显示在终端面板中,通过 Visual Studio Code 的设置项terminal.integrated.defaultLocation可以更改新建命令行的显示位置,该设置项的有效值包含以下几种。

    view是设置项terminal.integrated.defaultLocation的默认值,他表示新建的命令行将显示在终端面板中。editor表示新建的命令行将显示在编辑器区域。

    settings.json
    {
    	// 新的命令行应用将显示在编辑器区域中
    	"terminal.integrated.defaultLocation": "editor",
    }

    Visual Studio Code 终端的当前工作目录

    默认情况下,终端所打开的命令行应用(外壳程序)会将工作区的根目录作为其当前工作目录,你可以通过设置项terminal.integrated.cwd来指定命令行应用的当前工作目录。

    由于拆分终端而产生的新命令行应用,其当前工作目录可能由原有命令行应用决定,具体请查看拆分和取消拆分终端一段。

    settings.json
    {
    	// 将工作区的 src 文件夹作为命令行的当前工作目录
    	"terminal.integrated.cwd": "src",
    }

    如何将 Visual Studio Code 中的文件夹作为被打开的终端的当前工作目录?

    资源管理器中,选择某个文件夹的上下文菜单项在集成终端中打开在外部终端中打开,即可打开命令行应用并将该文件夹作为命令行的当前工作目录。

    Visual Studio Code 终端中的自动换行

    虽然一些命令行应用(外壳程序)自身拥有自动换行功能,但一些文字可能依然无法显示在终端面板中。你可以选择命令行应用的上下文菜单项将大小切换为内容宽度,或使用键盘快捷方式Alt+Z,或在命令面板中输入并执行命令Terminal: Toggle Size to Content Width来设置是否启用终端的自动换行功能,启用该功能将使得命令行中的所有内容显示在可见的区域中。

    Visual Studio Code 终端的缓冲区

    命令行应用(外壳程序)中显示的命令和输出结果,存放在终端的缓冲区中,该缓冲区的大小可以通过设置项terminal.integrated.scrollback修改,默认值为1000,即最多可保留1000行的信息。这里需要指出,终端的缓冲区能够保留的最多行数可能与设置项terminal.integrated.scrollback不同。

    Visual Studio Code 将根据终端缓冲区的大小来分配内存

    当你通过设置项terminal.integrated.scrollback增加终端的缓冲区大小时,Visual Studio Code 所占用的内存也将增加,这些内存会被预先分配,以提供流畅的用户体验。

    settings.json
    {
    	// 命令行可以保留 200 行的信息
    	"terminal.integrated.scrollback": 200,
    }

    Visual Studio Code 终端中的复制和粘贴操作

    终端中的复制和粘贴操作与其所在的操作系统相同,在 Windows 中可以使用键盘快捷方式Ctrl+CCtrl+V进行复制和粘贴,在 Linux 中可以使用键盘快捷方式Ctrl+Shift+CCtrl+Shift+V进行复制和粘贴,在 macOS 中可以使用键盘快捷方式⌘+C⌘+V进行复制和粘贴。

    除了上述键盘快捷方式,终端还提供了以下命令面板命令来完成一些复制和粘贴操作。

    命令Terminal: Copy Last Command and Output可用于复制命令行中最后一条被执行的命令和其输出结果。命令Terminal: Copy Last Command可用于复制命令行中最后一条被执行的命令。命令Terminal: Copy Last Command Output可用于复制命令行中最后一条被执行的命令的输出结果。

    命令Terminal: Paste into Active Terminal可用于将内容粘贴至当前活动的命令行应用。

    另外,一些鼠标操作也可以实现文本的复制和粘贴,具体请查看鼠标操作一段。

    如何自动复制终端中选中的内容?

    默认情况下,选中命令行应用(外壳程序)中的内容,并不会自动复制他们,你可以将设置项terminal.integrated.copyOnSelection设置为true,以自动复制选中的内容。

    settings.json
    {
    	// 自动复制选中的内容
    	"terminal.integrated.copyOnSelection": true,
    }

    如何禁用或启用终端中的粘贴警告?

    如果终端所打开的命令行应用(外壳程序)不支持括号粘贴模式(Bracketed Paste Mode)并且不是由readline处理粘贴内容,那么当你尝试为命令行粘贴多行文本时,Visual Studio Code 将显示粘贴警告“是否确实要将 … 行文本粘贴到终端?”,此时,有三个选择,其中“粘贴”表示将多行文本粘贴至命令行,“粘贴为 one 行”(可能是翻译错误)表示将多行文本转换为单行文本并粘贴至命令行,“取消”表示不执行粘贴操作。

    要禁用上述粘贴警告,需要将设置项terminal.integrated.enableMultiLinePasteWarning设置为never,该设置项还拥有以下有效值。always表示 Visual Studio Code 总是在粘贴多行文本时显示警告(是否显示警告视具体命令行应用而定)。auto是设置项terminal.integrated.enableMultiLinePasteWarning的默认值,表示当命令行不支持括号粘贴模式并且不是由readline处理粘贴内容时,粘贴多行文本至命令行将导致 Visual Studio Code 显示粘贴警告。

    settings.json
    {
    	// 禁用粘贴警告
    	"terminal.integrated.enableMultiLinePasteWarning": "never",
    }

    Visual Studio Code 终端的查找操作

    终端所打开的命令行应用(外壳程序)处于活动状态时,使用键盘快捷方式Ctrl+F,或者在命令面板中输入并执行命令Terminal: Focus Find将打开查找小部件

    除了通过查找小部件进行查找的相关操作,终端还提供了一些键盘快捷方式(一般需要命令行处于活动状态)和命令面板命令来实现相同的效果。

    键盘快捷方式Alt+R和命令Terminal: Toggle Find Using Regex可用于设置是否采用正则表达式进行查找。键盘快捷方式Alt+W和命令Terminal: Toggle Find Using Whole Word可用于设置是否采用全字匹配。键盘快捷方式Alt+C和命令Terminal: Toggle Find Using Case Sensitive可用于设置是否区分大小写。

    键盘快捷方式Shift+Enter(需要查找小部件处于活动状态)和命令Terminal: Find Next可用于查找下一个符合条件的文本。键盘快捷方式Enter(需要查找小部件处于活动状态)和命令Terminal: Find Previous可用于查找上一个符合条件的文本。

    键盘快捷方式Escape和命令Terminal: Hide Find可用于隐藏查找小部件

    Visual Studio Code 终端中的选择操作

    对于终端所打开的命令行应用(外壳程序),macOS 提供了键盘快捷方式⌘+A来选择命令行中的所有内容,而 Linux/Windows 并未提供全选操作的键盘快捷方式,因此,你可能无法在命令行中使用Ctrl+A进行全选。替代方案是在命令面板中执行命令Terminal: Select All,这将选择命令行的全部内容。

    此外,终端还提供了以下键盘快捷方式(一般需要命令行处于活动状态)和命令面板命令来完成一些选择操作。

    命令Terminal: Select To Next Line可用于选择命令行的下一行,再次执行该命令将选择更多内容。命令Terminal: Select To Previous Line可用于选择命令行的上一行,再次执行该命令将选择更多内容。

    键盘快捷方式Ctrl+Shift+DownArrow和命令Terminal: Select To Next Command可用于选择命令行中的下一个命令和其输出结果,再次执行该命令将选择更多内容。键盘快捷方式Ctrl+Shift+UpArrow和命令Terminal: Select To Previous Command可用于选择命令行中的上一个命令和其输出结果,再次执行该命令将选择更多内容。

    键盘快捷方式Escape和命令Terminal: Clear Selection可用于取消选择。

    Visual Studio Code 终端中的鼠标操作

    在不同的操作系统中,终端会以不同的方式处理鼠标的右键单击操作。在 Windows 中,单击鼠标右键将复制命令行中被选择的内容或粘贴已复制的内容,在 Linux 中,单击鼠标右键将弹出上下文菜单,在 macOS 中,单击鼠标右键将选择鼠标处的文本并弹出上下文菜单。

    如何改变在终端中单击鼠标右键时的行为?

    如果你希望改变在命令行中单击鼠标右键时的行为,那么可以使用设置项terminal.integrated.rightClickBehavior,该设置项拥有以下有效取值。

    default表示单击鼠标右键将在命令行中显示上下文菜单。copyPaste表示在单击鼠标右键时,在命令行中复制已选择的内容或粘贴已复制的内容。paste表示在单击鼠标右键时,在命令行中粘贴已复制的内容。selectWord表示在单击鼠标右键时,选择鼠标处的文本并弹出上下文菜单。nothing表示在单击鼠标右键时,不执行任何操作并将鼠标事件传递给命令行应用。

    settings.json
    {
    	// 单击鼠标右键时将选择鼠标处的文本,并显示上下文菜单
    	"terminal.integrated.rightClickBehavior": "selectWord",
    }

    如何改变在终端中单击鼠标中键时的行为?

    如果你希望改变在命令行中单击鼠标中键时的行为,那么可以使用设置项terminal.integrated.middleClickBehavior,该设置项拥有以下有效取值。

    default表示单击鼠标中键将使命令行获得焦点。paste表示在单击鼠标中键时,在命令行中粘贴已复制的内容。

    settings.json
    {
    	// 单击鼠标中键时执行粘贴操作
    	"terminal.integrated.middleClickBehavior": "paste",
    }

    如何通过鼠标在终端中快速移动光标?

    终端所打开的命令行应用(外壳程序)中,按住Alt键(macOS 中为Option)并单击鼠标左键可以快速的移动命令行的光标。由于此功能是通过模拟键盘操作来实现的,因此在一些命令行应用中可能无效。通过将设置项terminal.integrated.altClickMovesCursor设置为false可禁用此功能。

    settings.json
    {
    	// 按住 Alt 键并点击鼠标左键时不再移动光标
    	"terminal.integrated.altClickMovesCursor": false,
    }

    如何通过鼠标调整终端的字体大小?

    如果将设置项terminal.integrated.mouseWheelZoom设置为true(默认值为false),那么在终端中按住Ctrl键,然后滚动鼠标滚轮可以调整命令行应用的字体大小,这等同于修改设置项terminal.integrated.fontSize

    需要指出的是,上述效果可能不会立即触发,因为鼠标滚轮会首先滚轮命令行应用的缓冲区。

    settings.json
    {
    	// 按住 Ctrl 键并滚动鼠标可以缩放字体
    	"terminal.integrated.mouseWheelZoom": true,
    }

    如何调整鼠标在终端中的滚动速度?

    设置项terminal.integrated.mouseWheelScrollSensitivity可用于调整鼠标在终端中的滚动速度,比如设置为2,表示滚动速度为默认的2倍。

    settings.json
    {
    	// 鼠标滚动速度为默认的 2 倍
    	"terminal.integrated.mouseWheelScrollSensitivity": 2,
    }

    如何强制由终端来处理鼠标行为?

    终端所打开的命令行中,一些正在运行的程序可能会接管对鼠标行为的处理,比如支持鼠标的Vim,如果希望依然由命令行来处理鼠标行为,那么需要按住Alt键(macOS 中为Option)。对于 macOS 来说,还需要将设置项terminal.integrated.macOptionClickForcesSelection设置为true

    Visual Studio Code 终端中的输入操作

    如果你希望快速的在终端所打开的命令行应用(外壳程序)中输入文件或文件夹的路径,那么可以将这些文件或文件夹拖放到命令行中,路径将进行必要的转义然后被输入至命令行。

    命令面板中输入并执行命令Terminal:Run Selected Text In Active Terminal,Visual Studio Code 会将当前编辑器中已被选择的文本作为命令在终端中运行,如果没有选择任何文本,则编辑器光标所在的整个行将作为命令。

    命令面板中输入并执行命令Terminal: Run Active File In Active Terminal,Visual Studio Code 会将当前文件作为命令在终端中运行。

    使用键盘快捷方式Ctrl+Alt+R(需要命令行应用处于活动状态)或在命令面板中输入并执行命令Terminal: Run Recent Command…,可以选择并执行某个最近执行过的命令。

    如何在将当前编辑器中已选择文本作为命令之后使终端获得焦点?

    如果将设置项terminal.integrated.focusAfterRun设置为terminal,那么在命令面板中输入并执行命令Terminal: Run Selected Text In Active Terminal后,终端将获得焦点。

    settings.json
    {
    	// 执行命令之后使命令行获得焦点
    	"terminal.integrated.focusAfterRun": "terminal",
    }

    更改 Visual Studio Code 终端的名称,图标,颜色

    当你在终端面板中启动了多个命令行应用(外壳程序)时,这些命令行应用的名称和图标可能相同,区分他们会比较困难。此时,可通过选择上下文菜单项重命名…更改图标…更改颜色…来修改命令行应用的名称,图标以及图标的颜色。

    当然,在命令面板中输入并执行命令Terminal: Change Icon…Terminal: Change Color…可以实现相同的效果。

    配置文件,外观和样式

    如果希望使用终端配置文件来修改命令行应用的名称,图标以及图标颜色,你可以查看设置 Visual Studio Code 终端的名称,图标,颜色一段。如果希望指定命令行应用的默认名称,说明,图标和图标颜色,你可以查看自定义 Visual Studio Code 终端选项卡的默认名称,说明,图标,颜色一段。

    移动 Visual Studio Code 终端

    终端面板中的命令行应用(外壳程序)拥有对应的图标和名称,使用鼠标拖放图标或名称,可以使命令行应用在终端面板与编辑器区域之间移动,或使命令行应用独立成为一个新的窗口(拖放至 Visual Studio Code 窗口之外),或改变命令行应用之间的顺序(如果是拆分的命令行,则所有相关命令行将作为一个整体被移动)。

    此外,通过选择命令行应用的上下文菜单项将终端移动到编辑器区域中将终端移动到新窗口将终端移动到面板中,或在命令面板中输入并执行命令Terminal: Move Terminal into Editor AreaTerminal: Move Terminal into New Window可以达成相同的目标。

    Visual Studio Code资源管理器终端问题pwsh编辑器区域

    拆分和取消拆分 Visual Studio Code 终端

    如果你希望更方便的对比命令行中的输出结果,那么可以拆分终端,这相当于启动一个新的命令行应用(外壳程序),新的命令行显示在原有命令行的右边,并与其组成一个命令行组。

    要拆分终端,可以点击命令行对应的图标和名称旁边的拆分按钮(如果终端面板包含了多个命令行,那么需要将鼠标悬停在命令行的图标或名称上),或按住Alt键并点击出现的拆分按钮,或选择某个命令行对应的上下文菜单项拆分终端,或点击终端面板右上角的加号按钮旁边的箭头按钮,然后选择菜单项拆分终端,或在终端面板中拖放命令行对应的图标和名称,或在活动的命令行应用中使用键盘快捷方式Ctrl+Shift+5,或在命令面板中输入并执行命令Terminal: Split Terminal

    要取消拆分终端,可以选择命令行对应的上下文菜单项取消拆分终端,或在命令面板中输入并执行命令Terminal: Unsplit Terminal

    终端问题pwsh拆分区域

    如何在拆分终端时设置新终端的当前工作目录?

    在拆分终端时,会产生一个新的命令行应用(外壳程序),通过设置项terminal.integrated.splitCwd,可以设置新命令行的当前工作目录,该设置项拥有以下有效值。

    inherited是设置项terminal.integrated.splitCwd的默认值,他表示新命令行的当前工作目录与原有命令行的当前工作目录相同。initial表示新命令行的当前工作目录与原有命令行的初始工作目录(命令行启动时的当前工作目录)相同。workspaceRoot表示新命令行的当前工作目录为工作区的根目录,如果根目录有多个,则需要进行选择。

    关于命令行应用的当前工作目录,请查看终端的当前工作目录一段。

    settings.json
    {
    	// 新的命令行应用的当前工作目录为工作区的根目录
    	"terminal.integrated.splitCwd": "workspaceRoot",
    }

    如何在已拆分的终端之间导航?

    当任意被拆分的命令行处于活动状态时,可以使用键盘快捷方式Alt+LeftArrowAlt+RightArrow在命令行组的相关命令行之间导航。

    终止 Visual Studio Code 终端

    如果终端启动了过多的命令行应用(外壳程序),则可以点击其对应的终止(垃圾桶)按钮,或其对应的上下文菜单项终止终端,来终止命令行应用。终止按钮一般位于终端面板的右上角,如果终端面板包含多个命令行,那么终止按钮将位于终端面板的右边区域,当鼠标悬停时会出现,此时,对于选中并处于活动状态的命令行应用,按下Delete键也可以将其终止。

    此外,在命令面板中输入并执行命令Terminal: Kill the Active Terminal Instance,可以终止终端面板中当前活动的命令行应用(对编辑器区域中的命令行应用无效),输入并执行命令Terminal: Kill the Active Terminal in Editor Area,可以终止编辑器区域中当前活动的命令行应用,输入并执行命令Terminal: Kill All Terminals,可以终止 Visual Studio Code 中所有的命令行应用。

    终止终端与隐藏终端的区别

    使用键盘快捷方式Ctrl+`或执行命令View: Toggle Terminal隐藏终端并不会终止命令行应用(外壳程序),命令行中正在执行的命令也将继续执行。

    终端问题

    内容分类

    源码

    settings.json·codebeatme/vscode·GitHub

    讲解视频

    VSCode 新增開啟終端機的幾種方式|Visual Studio Code 教學·YouTube