Windows 终端中的自定义操作

重要

从 Windows 终端版本 1.4 开始,keybindings 数组在 settings.json 文件中已重命名为 actions。 仍支持 keybindings 数组以确保向后兼容性,但终端不会在 settings.json 文件中将 keybindings 自动重命名为 actions

可以在 Windows 终端内部创建自定义操作,让你控制你与终端交互的方式。 这些操作将自动添加到命令面板。

操作格式

可以采用以下格式构造操作:

不带参数的命令

{ "command": "commandName", "keys": "modifiers+key" }

例如,此默认设置使用快捷键 Alt+F4 关闭终端窗口:

{ "command": "closeWindow", "keys": "alt+f4" }

带参数的命令

{ "command": { "action": "commandName", "argument": "value" }, "keys": "modifiers+key" }

例如,此默认设置使用快捷键 Ctrl+Shift+1 在终端中打开一个新选项卡,具体取决于下拉菜单中列出的第一个配置文件(通常这将打开 PowerShell 配置文件):

{ "command": { "action": "newTab", "index": 0 }, "keys": "ctrl+shift+1" }


操作属性

可以使用以下属性构造操作。

命令

这是在按下关联的键时执行的命令。

属性名称:command

必要性: 必需

接受: 字符串

这会定义用于调用命令的键组合。 一个键可以拥有任意数量的修改键。 下面列出了接受的修改键和键。

如果操作没有键,它将出现在命令面板中,但不能使用键盘调用。

属性名称:keys

必要性: 可选

接受: 字符串或 array[string]

操作

这会向某些命令添加其他功能。

属性名称:action

必需:可选

接受: 字符串

名称

这将设置将在命令面板中显示的名称。 如果未提供名称,终端将尝试自动生成名称。

属性名称:name

必需:可选

接受: 字符串

图标

这将设置命令面板中显示的图标。

属性名称:icon

必要性: 可选

接受:字符串形式的文件位置或表情符号



接受的修改键和键

修改键

ctrl+shift+alt+win+

注意

支持使用 Windows 键作为修饰符,系统会保留大多数 Win+<key> 键绑定。 如果 OS 已保留该键绑定,终端将永远不会接收该绑定。

修改键

类型
功能键和字母数字键 f1-f24a-z0-9
符号 `plus-=[]\;',./
箭头键 downleftrightuppagedownpageuppgdnpgupendhome
操作键 tabenterescescapespacebackspacedeleteinsertappmenu
数字键 numpad_0-numpad_9numpad0-numpad9numpad_addnumpad_plusnumpad_decimalnumpad_periodnumpad_dividenumpad_minusnumpad_subtractnumpad_multiply
浏览器密钥 browser_backbrowser_forwardbrowser_refreshbrowser_stopbrowser_searchbrowser_favoritesbrowser_home

注意:=plus 等效。 不能将后者与 numpad_plus 混淆。


应用程序级命令

Quit

这会关闭所有打开的终端窗口。 确认对话将显示在当前窗口中,确认要关闭所有窗口。

命令名称:quit

默认绑定:

{ "command": "quit" }

关闭窗口

这会关闭当前窗口和其中的所有选项卡。 如果 confirmCloseAllTabs 设置为 true,则会出现一个确认对话框,以确认你希望关闭所有选项卡。 有关此设置的详细信息,请参阅外观页

命令名称:closeWindow

默认绑定:

{ "command": "closeWindow", "keys": "alt+f4" }

Windows Terminal confirm close all tabs

查找

这将打开搜索对话框。 有关搜索的详细信息,请参阅搜索页

命令名称:find

默认绑定:

{ "command": "find", "keys": "ctrl+shift+f" }

查找下一个/上一个搜索匹配项

这样,你可以浏览搜索匹配项。

命令名称:findMatch

默认绑定:

{ "command": { "action": "findMatch", "direction": "next" } },
{ "command": { "action": "findMatch", "direction": "prev" } }

参数

名称 必要性 接受 说明
direction 必需 "next""prev" 浏览搜索结果的方向。

打开下拉菜单

这将打开下拉菜单。

命令名称:openNewTabDropdown

默认绑定:

{ "command": "openNewTabDropdown", "keys": "ctrl+shift+space" }

打开设置文件

这将打开设置 UI、自定义设置文件 (settings.json) 或默认设置文件 (defaults.json),具体取决于 target 字段。 如果没有 target 字段,将打开自定义设置文件。

命令名称:openSettings

默认绑定:

{ "command": { "action": "openSettings", "target": "settingsUI" }, "keys": "ctrl+," },
{ "command": { "action": "openSettings", "target": "settingsFile" }, "keys": "ctrl+shift+," },
{ "command": { "action": "openSettings", "target": "defaultsFile" }, "keys": "ctrl+alt+," },

参数

名称 必要性 接受 说明
target 可选 "settingsFile""defaultsFile""settingsUI""allFiles" 要打开的设置文件。

打开系统菜单

打开窗口左上角的系统菜单。

命令名称:openSystemMenu

默认绑定:

{ "command": "openSystemMenu", "keys": "alt+space" }

切换全屏

这允许你在全屏和默认窗口大小之间切换。

命令名称:toggleFullscreen

默认绑定:

{ "command": "toggleFullscreen", "keys": "alt+enter" },
{ "command": "toggleFullscreen", "keys": "f11" }

切换焦点模式

这样就可以进入“焦点模式”,这会隐藏选项卡和标题栏。

命令名称:toggleFocusMode

默认绑定:

{ "command": "toggleFocusMode" }

切换“始终位于顶部”模式

你可以这样切换窗口的“始终位于顶部”状态。 在“始终位于顶部”模式下时,窗口将显示在所有其他非最顶层窗口之上。

命令名称:toggleAlwaysOnTop

默认绑定:

{ "command": "toggleAlwaysOnTop" }

发送输入

将任意文本输入发送到 shell。 作为示例,输入 "text\n" 将在 shell 中写入“text”,后跟一个换行符。

可能使用 ANSI 转义序列,但 \x1b 等转义代码必须编写为 \u001b。 例如,"\u001b[A" 的行为就像按下向上键按钮之后。

命令名称:sendInput

默认绑定:

此命令当前未绑定在默认设置中

{ "command": { "action": "sendInput", "input": "\u001b[A" }, "keys": "" }

参数

名称 必要性 接受 说明
input 必须 字符串 要馈送到 shell 的文本输入。


选项卡管理命令

关闭选项卡

这会关闭给定索引处的选项卡。 如果未提供索引,则使用焦点选项卡的索引。

命令名称:closeTab

参数

名称 必要性 接受 说明
index 可选 整数 要关闭的选项卡的位置。

关闭其他所有选项卡

这会关闭除索引位置处选项卡之外的所有选项卡。 如果未提供索引,则使用焦点选项卡的索引。

命令名称:closeOtherTabs

默认绑定:

{ "command": "closeOtherTabs" }

参数

名称 必要性 接受 说明
index 可选 整数 要保持打开的选项卡的位置。

关闭索引后的选项卡

这会关闭索引位置处选项卡之后的选项卡。 如果未提供索引,则使用焦点选项卡的索引。

命令名称:closeTabsAfter

默认绑定:

{ "command": "closeTabsAfter" }

参数

名称 必要性 接受 说明
index 可选 整数 要保持打开的最后一个选项卡的位置。

复制选项卡

这会创建当前选项卡的配置文件和目录的副本并打开它。 这不包括修改/添加的 ENV VARIABLES。

命令名称:duplicateTab

默认绑定:

{ "command": "duplicateTab", "keys": "ctrl+shift+d" }

新建选项卡

这将创建一个新选项卡。如果没有任何参数,这将在新选项卡中打开默认配置文件。如果未指定索引,则将使用默认配置文件的等效设置。 如果索引未映射到配置文件,则将键直接传递给终端(如果未使用任何键来调用操作,则忽略)。

命令名称:newTab

默认绑定:

{ "command": "newTab", "keys": "ctrl+shift+t" },
{ "command": { "action": "newTab", "index": 0 }, "keys": "ctrl+shift+1" },
{ "command": { "action": "newTab", "index": 1 }, "keys": "ctrl+shift+2" },
{ "command": { "action": "newTab", "index": 2 }, "keys": "ctrl+shift+3" },
{ "command": { "action": "newTab", "index": 3 }, "keys": "ctrl+shift+4" },
{ "command": { "action": "newTab", "index": 4 }, "keys": "ctrl+shift+5" },
{ "command": { "action": "newTab", "index": 5 }, "keys": "ctrl+shift+6" },
{ "command": { "action": "newTab", "index": 6 }, "keys": "ctrl+shift+7" },
{ "command": { "action": "newTab", "index": 7 }, "keys": "ctrl+shift+8" },
{ "command": { "action": "newTab", "index": 8 }, "keys": "ctrl+shift+9" }

参数

名称 必要性 接受 说明
commandline 可选 字符串形式的可执行文件名 可执行文件在选项卡中运行。
startingDirectory 可选 字符串形式的文件夹位置 将在其中打开该选项卡的目录。
elevate 可选 truefalsenull 重写配置文件的 elevate 属性。 如果省略,此操作将按照配置文件的 elevate 设置进行。 当设置为 truefalse 时,此操作就像配置文件(分别)设置为 "elevate": true"elevate": false 一样。
tabTitle 可选 字符串 新选项卡的标题。
index 可选 整数 将根据其在下拉列表中的位置打开的配置文件(从 0 开始)。
profile 可选 字符串形式的配置文件名称或 GUID 将根据其 GUID 或名称打开的配置文件。
colorScheme 可选 字符串形式的配色方案名称 要取代配置文件的设置 colorScheme 使用的方案
suppressApplicationTitle 可选 truefalse 当设置为 false 时,应用程序可以通过发送标题更改消息来更改选项卡标题。 当设置为 true 时,将禁止显示这些消息。 如果未提供,则将从配置文件的设置继承该行为。 若要输入新的选项卡标题并保留该标题,则必须将此项设置为 true。

打开下一个选项卡

这会打开当前选项卡右侧的选项卡。

命令名称:nextTab

默认绑定:

{ "command": "nextTab", "keys": "ctrl+tab" }

参数

名称 必要性 接受 说明
tabSwitcherMode 可选 "mru""inOrder""disabled" 使用 "tabSwitcherMode" 移动到下一个表。 如果未提供任何模式,请使用全局定义的模式。

打开上一个选项卡

这会打开当前选项卡左侧的选项卡。

命令名称:prevTab

默认绑定:

{ "command": "prevTab", "keys": "ctrl+shift+tab" }

参数

名称 必要性 接受 说明
tabSwitcherMode 可选 "mru""inOrder""disabled" 使用 "tabSwitcherMode" 移动到上一个表。 如果未提供任何模式,请使用全局定义的模式。

这将打开选项卡搜索框。

命令名称:tabSearch

默认绑定:

此命令当前未绑定在默认设置中

{"command": "tabSearch", "keys": ""}

Windows Terminal tab search

打开特定的选项卡

这会打开一个特定的选项卡,具体取决于索引。

命令名称:switchToTab

默认绑定:

{ "command": { "action": "switchToTab", "index": 0 }, "keys": "ctrl+alt+1" },
{ "command": { "action": "switchToTab", "index": 1 }, "keys": "ctrl+alt+2" },
{ "command": { "action": "switchToTab", "index": 2 }, "keys": "ctrl+alt+3" },
{ "command": { "action": "switchToTab", "index": 3 }, "keys": "ctrl+alt+4" },
{ "command": { "action": "switchToTab", "index": 4 }, "keys": "ctrl+alt+5" },
{ "command": { "action": "switchToTab", "index": 5 }, "keys": "ctrl+alt+6" },
{ "command": { "action": "switchToTab", "index": 6 }, "keys": "ctrl+alt+7" },
{ "command": { "action": "switchToTab", "index": 7 }, "keys": "ctrl+alt+8" },
{ "command": { "action": "switchToTab", "index": 8 }, "keys": "ctrl+alt+9" }

参数

名称 必要性 接受 说明
index 必需 整数 将根据其在选项卡栏中的位置打开的选项卡(从 0 开始)。

重命名选项卡

可使用此命令将选项卡重命名为特定字符串。

命令名称:renameTab

默认绑定:

此命令当前未绑定在默认设置中

// Rename a tab to "Foo"
{ "command": { "action": "renameTab", "title": "Foo" }, "keys": "" }

// Reset the tab's name
{ "command": { "action": "renameTab", "title": null }, "keys": "" }

参数

名称 必要性 接受 说明
title 可选 字符串 要用于此选项卡的新标题。如果省略,此命令会将选项卡标题还原为其原始值。

打开选项卡重命名文本框

此命令会将选项卡标题更改为一个文本字段,让你可以编辑当前选项卡的标题。清除该文本字段会将选项卡标题重置为当前 shell 实例的默认值。

命令名称:openTabRenamer

默认绑定:

{ "command": "openTabRenamer" }

更改选项卡颜色

可使用此命令将选项卡的颜色更改为特定值。

命令名称:setTabColor

默认绑定:

此命令当前未绑定在默认设置中

// Change the tab's color to a bright magenta
{ "command": { "action": "setTabColor", "color": "#ff00ff" }, "keys": "" }

// Reset the tab's color
{ "command": { "action": "setTabColor", "color": null }, "keys": "" }

参数

名称 必要性 接受 说明
color 可选 以十六进制格式表示的字符串:"#rgb""#rrggbb" 要用于此选项卡的新颜色。如果省略,此命令会将选项卡颜色还原为其原始值。

打开选项卡颜色选取器

可使用此命令打开活动选项卡的颜色选取器。可使用颜色选取器在运行时设置选项卡的颜色。

命令名称:openTabColorPicker

默认绑定:

{ "command": "openTabColorPicker" }

移动选项卡

此命令会“向后”和“向前”移动选项卡,这相当于从左到右 UI 中的“左”和“右”。

命令名称:moveTab

默认绑定:

// Move tab backward (left in LTR)
{ "command": { "action": "moveTab", "direction": "backward" } }

// Move tab forward (right in LTR)
{ "command": { "action": "moveTab", "direction": "forward" } }

参数

名称 必要性 接受 说明
direction 必需 "backward""forward" 选项卡将移动的方向。

广播输入

此命令将切换窗格的“广播模式”。 启用广播模式后,发送到窗格的所有输入都将发送到同一选项卡中的所有窗格。这可用于同时向多个窗格发送相同的输入。

命令名称:toggleBroadcastInput

默认绑定:

{ "command": "toggleBroadcastInput" }

重要

此功能仅在 Windows 终端预览中可用。

打开上下文菜单

此命令将打开活动窗格的“右键单击”上下文菜单。 此菜单具有上下文相关操作,用于管理窗格、复制和粘贴等。 此操作不需要启用 experimental.rightClickContextMenu 设置。

命令名称:showContextMenu

默认绑定:

{ "command": "showContextMenu" }

打开“关于”对话框

此命令将打开终端的“关于”对话框。 该对话框包含有关终端的信息,其中包括版本号、许可证等。

命令名称:openAbout

默认绑定:

{ "command": "openAbout" }

重要

此功能仅在 Windows 终端预览中可用。

搜索 Web

尝试打开浏览器窗口并搜索所选文本。 如果没有选择任何文本,则不会执行任何操作。 如果未提供 queryUrl 参数,则会改用 searchWebDefaultQueryUrl 设置。 如果提供了 queryUrl 参数,则字符串中的 %s 会被替换为所选文本。

命令名称:searchWeb

默认绑定:

{ "command": { "action": "searchWeb" } },

参数

名称 必要性 接受 说明
queryUrl 必须 字符串 用于搜索的 URL。 此字符串中的 %s 会被替换为所选文本。 如果省略此项,则默认为 searchWebDefaultQueryUrl 设置。

重要

此功能仅在 Windows 终端预览中可用。



窗口管理命令

新建窗口

这将创建一个新窗口。 如果没有任何参数,这将在新窗口中打开默认配置文件(而不考虑 windowingBehavior 的设置)。 如果未指定操作,则将使用默认配置文件的等效设置。

命令名称:newWindow

默认绑定:

{ "command": "newWindow", "keys": "ctrl+shift+n" },

参数

名称 必要性 接受 说明
commandline 可选 字符串形式的可执行文件名 可执行文件在选项卡中运行。
startingDirectory 可选 字符串形式的文件夹位置 将在其中打开该窗口的目录。
tabTitle 可选 字符串 窗口选项卡的标题。
index 可选 整数 将根据其在下拉列表中的位置打开的配置文件(从 0 开始)。
profile 可选 字符串形式的配置文件名称或 GUID 将根据其 GUID 或名称打开的配置文件。
suppressApplicationTitle 可选 truefalse 当设置为 false 时,应用程序可以通过发送标题更改消息来更改选项卡标题。 当设置为 true 时,true 将禁止显示这些消息。 如果未提供,则将从配置文件设置继承该行为。

重命名窗口

可使用此命令将窗口重命名为特定字符串。

命令名称:renameWindow

默认绑定:

此命令当前未绑定在默认设置中

// Rename a window to "Foo"
{ "command": { "action": "renameWindow", "name": "Foo" }, "keys": "" }

// Reset the window's name
{ "command": { "action": "renameWindow", "name": null }, "keys": "" }

参数

名称 必要性 接受 说明
name 可选 字符串 要用于此窗口的新名称。 如果省略,此命令会将窗口名称还原为其原始值。

打开窗口重命名对话框

此命令更改将显示一个弹出窗口,可用于编辑当前窗口的名称。 清除文本字段将重置窗口名称。

命令名称:openWindowRenamer

默认绑定:

{ "command": "openWindowRenamer" }

标识窗口

这会在焦点窗口上弹出一个覆盖层,其中将显示窗口的名称和索引。

命令名称:identifyWindow

默认绑定:

{"command": "identifyWindow", "keys": "" },

标识窗口

这会在所有窗口上弹出一个覆盖层,其中将显示每个窗口的名称和索引。

命令名称:identifyWindows

默认绑定:

此命令当前未绑定在默认设置中

{"command": "identifyWindows" },


窗格管理命令

拆分窗格

这会将活动窗格的大小减半,并打开另一个窗格。 如果没有任何参数,这将在新窗格中打开默认配置文件。 如果未指定操作,则将使用默认配置文件的等效设置。

命令名称:splitPane

默认绑定:

// In settings.json
{ "command": { "action": "splitPane", "split": "auto", "splitMode": "duplicate" }, "keys": "alt+shift+d" },

// In defaults.json
{ "command": { "action": "splitPane", "split": "horizontal" }, "keys": "alt+shift+-" },
{ "command": { "action": "splitPane", "split": "vertical" }, "keys": "alt+shift+plus" },
{ "command": { "action": "splitPane", "split": "up" } },
{ "command": { "action": "splitPane", "split": "right" } },
{ "command": { "action": "splitPane", "split": "down" } },
{ "command": { "action": "splitPane", "split": "left" } }

参数

名称 必要性 接受 说明
split 必需 "vertical""horizontal""auto""up""right""down""left" 窗格的拆分方式。 "auto" 将沿具有最大表面积的方向进行拆分。
commandline 可选 字符串形式的可执行文件名 可执行文件在窗格中运行。
startingDirectory 可选 字符串形式的文件夹位置 将在其中打开该窗格的目录。
elevate 可选 truefalsenull 重写配置文件的 elevate 属性。 如果省略,此操作将按照配置文件的 elevate 设置进行。 当设置为 truefalse 时,此操作就像配置文件(分别)设置为 "elevate": true"elevate": false 一样。
tabTitle 可选 字符串 聚焦于新窗格时选项卡的标题。
index 可选 整数 将根据其在下拉列表中的位置打开的配置文件(从 0 开始)。
profile 可选 字符串形式的配置文件名称或 GUID 将根据其 GUID 或名称打开的配置文件。
colorScheme 可选 字符串形式的配色方案名称 要取代配置文件的设置 colorScheme 使用的方案
suppressApplicationTitle 可选 truefalse 当设置为 false 时,应用程序可以通过发送标题更改消息来更改选项卡标题。 当设置为 true 时,将禁止显示这些消息。 如果未提供,则将从配置文件的设置继承该行为。
splitMode 可选 "duplicate" 控制窗格拆分的方式。 仅接受 "duplicate",这会将焦点窗格的配置文件复制到新窗格中。
size 可选 Float 指定新窗格的大小,作为当前窗格大小的一小部分。 1.0 将为“所有当前窗格”,并且 0.0 为“无任何父项”。 默认为 0.5

关闭窗格

这会关闭活动窗格。 如果没有拆分窗格,将关闭当前选项卡。如果只有一个选项卡处于打开状态,则将关闭该窗口。

命令名称:closePane

默认绑定:

{ "command": "closePane", "keys": "ctrl+shift+w" }

移动窗格焦点

这会将焦点更改为其他窗格,具体取决于方向。 如果设置为 direction,则 "previous" 会将焦点移到最近使用的窗格。

命令名称:moveFocus

默认绑定:

{ "command": { "action": "moveFocus", "direction": "down" }, "keys": "alt+down" },
{ "command": { "action": "moveFocus", "direction": "left" }, "keys": "alt+left" },
{ "command": { "action": "moveFocus", "direction": "right" }, "keys": "alt+right" },
{ "command": { "action": "moveFocus", "direction": "up" }, "keys": "alt+up" },
{ "command": { "action": "moveFocus", "direction": "previous" }, "keys": "ctrl+alt+left" }

参数

名称 必要性 接受 说明
direction 必需 "left""right""up""down""previous""previousInOrder""nextInOrder""first""parent""child" 焦点将移动的方向。

接受的 direction

  • updownleftright 在给定方向上移动焦点。
  • first 将焦点移动到树中的第一个叶窗格。
  • previous 将焦点移动到当前窗格之前最近使用的窗格。
  • nextInOrderpreviousInOrder 按创建顺序将焦点移动到下一个或上一个窗格。
  • parent 移动焦点以选择当前窗格的父窗格。 这使用户能够一次选择多个窗格
  • child 将焦点移动到此窗格的第一个子窗格。

“移动”窗格

将当前活动窗格移动到窗口中的其他选项卡。

命令名称:movePane

默认绑定:(无)

参数

名称 必要性 接受 说明
index 必需 数字 要移动到的选项卡的零索引索引

交换窗格

交换选项卡中两个窗格的位置。此操作在 direction 参数指定的活动窗格和目标窗格上运行。

命令名称:moveFocus

默认绑定:

{ "command": { "action": "swapPane", "direction": "down" } },
{ "command": { "action": "swapPane", "direction": "left" } },
{ "command": { "action": "swapPane", "direction": "right" } },
{ "command": { "action": "swapPane", "direction": "up" } },
{ "command": { "action": "swapPane", "direction": "previous"} },
{ "command": { "action": "swapPane", "direction": "previousInOrder"} },
{ "command": { "action": "swapPane", "direction": "nextInOrder"} },
{ "command": { "action": "swapPane", "direction": "first" } },

参数

名称 必要性 接受 说明
direction 必需 "left""right""up""down""previous""previousInOrder""nextInOrder""first""parent""child" 焦点将移动的方向。

接受的 direction 值(这些值与 moveFocus 命令的值相同)

  • updownleftright:将活动窗格与给定方向的窗格交换。
  • first:将活动窗格与树中的第一个叶窗格交换。
  • previous:将活动窗格与当前窗格之前最近使用的窗格交换。
  • nextInOrderpreviousInOrder:按创建顺序将活动窗格与下一个或上一个窗格交换。
  • parent:不执行任何操作。
  • child:不执行任何操作。

缩放窗格

这会扩展焦点窗格以填充窗口的全部内容。

命令名称:togglePaneZoom

默认绑定:

{ "command": "togglePaneZoom" }

Windows Terminal toggle pane zoom

调整窗格大小

这会更改活动窗格的大小。

命令名称:resizePane

默认绑定:

{ "command": { "action": "resizePane", "direction": "down" }, "keys": "alt+shift+down" },
{ "command": { "action": "resizePane", "direction": "left" }, "keys": "alt+shift+left" },
{ "command": { "action": "resizePane", "direction": "right" }, "keys": "alt+shift+right" },
{ "command": { "action": "resizePane", "direction": "up" }, "keys": "alt+shift+up" }

参数

名称 必要性 接受 说明
direction 必需 "left""right""up""down" 调整窗格大小的方向。

将窗格标记为只读

可以将窗格标记为只读,这将防止输入进入文本缓冲区。 如果尝试关闭只读窗格或将文本输入到只读窗格中,终端将显示一个弹出警告。

命令名称:toggleReadOnlyMode

默认绑定:

{ "command": "toggleReadOnlyMode" }

可以在窗格上启用只读模式。 这与切换类似,但在再次触发时并不会切换状态。

命令名称:enableReadOnlyMode

默认绑定:

{ "command": "enableReadOnlyMode" }

可以在窗格上禁用只读模式。 这与切换类似,但在再次触发时并不会切换状态。

命令名称:disableReadOnlyMode

默认绑定:

{ "command": "disableReadOnlyMode" }

重启窗格

此命令将手动重启活动窗格中的 commandline。 这对于 ssh 这样的场景特别有用,在该场景中,你可能希望在不关闭窗格的情况下重启连接。

请注意,这将终止窗格中的进程(如果当前正在运行)。

命令名称:restartConnection

默认绑定:

{ "command": "restartConnection" }


剪贴板集成命令

复制

这会将所选终端内容复制到剪贴板。 如果选择不存在,则将键同事按下直接发送到终端。

命令名称:copy

默认绑定:

// In settings.json
{ "command": { "action": "copy", "singleLine": false }, "keys": "ctrl+c" },

// In defaults.json
{ "command": { "action": "copy", "singleLine": false }, "keys": "ctrl+shift+c" },
{ "command": { "action": "copy", "singleLine": false }, "keys": "ctrl+insert" },
{ "command": { "action": "copy", "singleLine": false }, "keys": "enter" }

参数

名称 必要性 接受 说明
singleLine 可选 truefalse true 时,复制的内容将复制为单一的一行。 为 false 时,则将从所选文本保留换行符。
copyFormatting 可选 truefalse"all""none""html""rtf" true 时,则所选文本的颜色和字体格式也将复制到剪贴板。 为 false 时,则只会将纯文本复制到剪贴板。 还可以指定要复制的格式。 当为 null 时,将继承全局 "copyFormatting" 行为。

粘贴

这会插入复制到剪贴板上的内容。

命令名称:paste

默认绑定:

// In settings.json
{ "command": "paste", "keys": "ctrl+v" },

// In defaults.json
{ "command": "paste", "keys": "ctrl+shift+v" },
{ "command": "paste", "keys": "shift+insert" }

将选定内容扩展到单词

如果存在选定内容,则会展开所选内容以完全包含部分选中的任何单词。

命令名称:expandSelectionToWord

默认绑定:

{ "command": "expandSelectionToWord" }

全选

这会选择文本缓冲区中的所有内容。

命令名称:selectAll

默认绑定:

{ "command": "selectAll", "keys": "ctrl+shift+a" }

标记模式

这会切换标记模式。 标记模式是一种模式,你可以使用键盘在终端中的光标位置创建选区。

命令名称:markMode

默认绑定:

{ "command": "markMode", "keys": "ctrl+shift+m" },

切换选区标记

使用键盘修改选区时,将移动选区的一端。 你可以使用此操作切换到其他选区标记。

命令名称:switchSelectionEndpoint

默认绑定:

{ "command": "switchSelectionEndpoint" },

切换块选择

使现有选区成为块选择,这意味着所选区域是一个矩形,而不会环绕到每行的开头和末尾。

命令名称:toggleBlockSelection

默认绑定:

{ "command": "toggleBlockSelection" },


回滚命令

向上滚动

这会将屏幕向上滚动由 "rowsToScroll" 定义的行数。 如果未提供 "rowsToScroll",它将向上滚动系统默认值定义的量,这与鼠标滚动量相同。

命令名称:scrollUp

默认绑定:

{ "command": "scrollUp", "keys": "ctrl+shift+up" }

参数

名称 必要性 接受 说明
rowsToScroll 可选 整数 要滚动的行数。

向下滚动

这会将屏幕向下滚动由 "rowsToScroll" 定义的行数。 如果未提供 "rowsToScroll",它将向下滚动系统默认值定义的量,这与鼠标滚动量相同。

命令名称:scrollDown

默认绑定:

{ "command": "scrollDown", "keys": "ctrl+shift+down" }

参数

名称 必要性 接受 说明
rowsToScroll 可选 整数 要滚动的行数。

向上滚动一整页

这会将屏幕向上滚动一整页(即窗口的高度)。

命令名称:scrollUpPage

默认绑定:

{ "command": "scrollUpPage", "keys": "ctrl+shift+pgup" }

向下滚动一整页

这会将屏幕向下滚动一整页(即窗口的高度)。

命令名称:scrollDownPage

默认绑定:

{ "command": "scrollDownPage", "keys": "ctrl+shift+pgdn" }

滚动到最早的历史记录

这会将屏幕向上滚动到输入缓冲区的顶部。

命令名称:scrollToTop

默认绑定:

{ "command": "scrollToTop", "keys": "ctrl+shift+home" }

滚动到最新的历史记录

这会将屏幕向下滚动到输入缓冲区的顶部。

命令名称:scrollToBottom

默认绑定:

{ "command": "scrollToBottom", "keys": "ctrl+shift+end" }

清除缓冲区

此操作可用于手动清除终端缓冲区。 这适用于你未处于命令行 shell 提示符中且无法轻松运行 Clear-Host/cls/clear 的情况。

命令名称:clearBuffer

默认绑定:

{ "command": { "action": "clearBuffer", "clear": "all" } }

参数

名称 必要性 接受 说明
clear 可选 "screen""scrollback""all" 要清除的屏幕部分。
  • "screen":清除终端视区内容。 回滚保持不变。 将光标行移动到视区顶部(未修改)。
  • "scrollback":清除回滚。 视区保持不变。
  • "all"(默认):清除回滚和可见视区。 将光标行移动到视区顶部。

___

视觉对象调整命令

调整字号

这会将文本大小更改为指定的磅值。

命令名称:adjustFontSize

默认绑定:

{ "command": { "action": "adjustFontSize", "delta": 1 }, "keys": "ctrl+=" },
{ "command": { "action": "adjustFontSize", "delta": -1 }, "keys": "ctrl+-" },
{ "command": { "action": "adjustFontSize", "delta": 1 }, "keys": "ctrl+numpad_plus" },
{ "command": { "action": "adjustFontSize", "delta": -1 }, "keys": "ctrl+numpad_minus" }

参数

名称 必要性 接受 说明
delta 必需 整数 每次命令调用的大小更改量。

重置字号

这会将文本大小重置为默认值。

命令名称:resetFontSize

默认绑定:

{ "command": "resetFontSize", "keys": "ctrl+0" },
{ "command": "resetFontSize", "keys": "ctrl+numpad_0" }

调整不透明度

这将更改窗口的不透明度。 如果 relative 设置为 true,它将相对于当前不透明度调整不透明度。 否则,它会直接将不透明度设置为给定的 opacity

命令名称:adjustOpacity

默认绑定:

{ "command": { "action": "adjustOpacity", "relative": false, "opacity": 0 } },
{ "command": { "action": "adjustOpacity", "relative": false, "opacity": 25 } },
{ "command": { "action": "adjustOpacity", "relative": false, "opacity": 50 } },
{ "command": { "action": "adjustOpacity", "relative": false, "opacity": 100 } }

参数

名称 必要性 接受 说明
opacity 可选 整数 终端应设置的不透明度,或者不透明度应改变的大小取决于 relative 的值
relative 可选 布尔 如果为 true,则按给定 opacity 参数调整当前不透明度。 如果为 false,则完全将不透明度设置为该值。

切换像素着色器效果

这会切换终端中启用的任何像素着色器效果。 如果用户通过 experimental.pixelShaderPath 指定了有效着色器,此操作将打开/关闭该着色器。 这还将切换“怀旧式终端效果”,它通过配置文件设置 experimental.retroTerminalEffect 启用。

命令名称:toggleShaderEffects

默认绑定:

{ "command": "toggleShaderEffects" }

注意

版本 1.6 及更高版本中不再提供 toggleRetroEffect 操作。 建议改用 toggleShaderEffects

设置配色方案

更改活动配色方案。

命令名称:setColorScheme

参数

名称 必要性 接受 说明
colorScheme 必须 字符串 要应用的配色方案的 name

示例绑定:

{ "command": { "action": "setColorScheme", "colorScheme": "Campbell" }, "keys": "" }

试验性添加滚动标记

向文本缓冲区添加滚动标记。 如果存在选区,则标记置于选区中,否则它将置于光标行中。 这是一个试验性功能,我们不保证它会持续存在。

命令名称:addMark

参数

名称 必要性 接受 说明
color 可选 以十六进制格式表示的字符串:"#rgb""#rrggbb" 标记的颜色。

示例绑定:

{ "command": { "action": "addMark", "color": "#ff00ff" } }

试验性滚动标记

在给定方向上滚动到滚动标记。 这是一个试验性功能,我们不保证它会持续存在。

命令名称:scrollToMark

参数

名称 必要性 接受 说明
direction 必需 "first""previous""next""last" 滚动的方向。

示例绑定:

{ "command": { "action": "scrollToMark", "direction": "previous" } }

试验性清除标记

清除当前位置的滚动标记,可以是在选区(如果有),也可以是在光标位置。 这是一个试验性功能,我们不保证它会持续存在。

命令名称:clearMark

示例绑定:

{ "command": { "action": "clearMark" } }

试验性清除所有标记

清除文本缓冲区中的所有滚动标记。 这是一个试验性功能,我们不保证它会持续存在。

命令名称:clearAllMarks

示例绑定:

{ "command": { "action": "clearAllMarks" } }

___

建议

打开建议菜单

这允许用户打开建议菜单。 建议菜单中的条目由 source 属性控制。 建议菜单的行为非常类似于命令面板。 在文本框中键入内容将筛选结果,仅显示与文本匹配的条目。 按 enter 将执行所选条目。 按 esc 将关闭菜单。

Suggestions UI

命令名称:openSuggestions

参数

名称 必要性 接受 说明
source 必须 任意数目的 "recentCommands""tasks""all" 使用哪些建议源来填充此菜单。 请参阅下面的针对每个项的说明。
useCommandline 可选 布尔 如果启用了 shell 集成且此项为 true,建议菜单会预先填充当前命令行的内容。 默认为 true

建议源

支持以下建议源:

  • "recentCommands":将使用最近使用的命令填充建议菜单。 它们由 shell 集成提供支持,因此仅当你将 shell 配置为支持 shell 集成时,它们才可用。 有关详细信息,请参阅 Shell 集成
  • "tasks":将使用设置中的所有 sendInput 操作填充建议菜单。
  • "all":使用所有建议源。

这些值可以单独用作字符串参数值,也可以组合为数组。 例如:

{ "command": { "action": "openSuggestions", "source": ["recentCommands", "tasks"] } },
{ "command": { "action": "openSuggestions", "source": "all" } },
{ "command": { "action": "openSuggestions", "source": "recentCommands" } },

在上面的示例中,前两个命令将打开包含最近使用的命令和任务的建议菜单。 第三个命令将打开仅包含最近使用的命令的建议菜单。

重要

此功能仅在 Windows 终端预览中可用。


___

缓冲区导出

导出缓冲区

这允许用户将缓冲区的文本导出到文件。 如果该文件不存在,则会创建该文件。 如果该文件已存在,则会将其内容替换为终端缓冲区文本。

命令名称:exportBuffer

默认绑定:

{ "command": { "action": "exportBuffer" } }

参数

名称 必要性 接受 说明
path 可选 String 如果已提供,终端会将缓冲区内容导出到给定文件。 否则,终端将打开文件选取器以选择要导出到的文件。

___

全局命令

全局调出

这是可在 OS 中全局运行的特殊操作,而不只是在终端窗口的上下文中。 按下时,此操作会调出终端窗口。 调出哪个窗口、在哪里调出窗口、调出窗口时它如何表现,由此操作的属性控制。

说明

  • 在终端运行时,绑定到 globalSummon 操作的任何键在其他应用程序中都无效 - 它们将始终以终端窗口为焦点。

  • 如果对于给定 keys 已使用 RegisterHotKey API 注册其他正在运行的应用程序,终端将无法侦听这些按键。

  • 终端的提升和未提升的实例将无法同时注册相同的密钥。 这同样适用于终端的预览和稳定版本 - 始终以要启动的第一个版本为准。

  • 仅当终端的实例已在运行时,这些按键才起作用。 若要在登录时自动启动终端,请参阅 startOnUserLogin

命令名称:globalSummon

默认绑定:

此命令当前未绑定在默认设置中

{ "keys": "", "command": { "action": "globalSummon" } }

参数

名称 必要性 接受 说明
desktop 可选 anytoCurrentonCurrent 这会控制终端应如何与虚拟桌面进行交互。
  • "any":将窗口保留在已打开的桌面上 - 将在窗口激活时切换到该桌面。
  • "toCurrent"(默认):将窗口移到当前虚拟桌面。
  • "onCurrent":仅当窗口已处于当前虚拟桌面上时才调出它。
monitor 可选 anytoCurrenttoMouse 这会控制要由/向其中调出窗口的监视器。
  • "any":调出最近使用的窗口,无论它当前处于哪个监视器。
  • "toCurrent":在包含当前前景窗口的监视器中调出最近使用的窗口。
  • "toMouse"(默认):将最近使用的窗口调出到鼠标光标所在的监视器。
name 可选 String 省略(默认)时,请使用 monitordesktop 查找相应的最近使用的窗口。 提供时,调出其名称或 ID 与给定 name 值匹配的窗口。 如果不存在这样的窗口,则创建具有该名称的新窗口。
dropdownDuration 可选 整数 默认为 0。 如果提供了正数,则使用持续 dropdownDuration 毫秒的动画,将窗口从屏幕顶部“滑入”。 200 是此设置的合理值。
toggleVisibility 可选 truefalse 默认为 true。 如果为 true,则当窗口当前处于前景窗口时,按下为此操作分配的键将会关闭(最小化)窗口。 如果为 false,则按下分配的键只会使窗口进入前景。

namemonitordesktop 一起提供时,name 的行为方式如下:

  • desktop
    • "any":中转到已打开给定窗口的桌面。
    • "toCurrent":如果该窗口位于另一个虚拟桌面上,则将其移动到当前活动桌面上。
    • "onCurrent":如果该窗口位于另一个虚拟桌面上,则将其移动到当前活动桌面上。
  • monitor
    • "any":将该窗口保留在已打开的显示器上。
    • "toCurrent":如果窗口位于另一个监视器上,则将其移动到具有当前前景窗口的监视器。
    • "toMouse":如果窗口位于另一个监视器上,则将其移动到鼠标光标所在的监视器。

desktopmonitor 属性可以通过下列方式进行组合:

组合 "desktop": "any" "desktop": "toCurrent" "desktop": "onCurrent" 不包含的信息
"monitor": "any" 转到窗口所在的桌面(保留位置不动) 将窗口移动到此桌面(保留位置不动) 如果此桌面上没有窗口:
  • 在默认位置创建一个新的窗口
或者:
  • 激活此桌面上的操作(不要移动它)
调出 MRU 窗口
"monitor": "toCurrent" 转到窗口所在的桌面,移动到前景窗口所在的监视器 将窗口移动到此桌面,移动到前景窗口所在的监视器 如果此桌面上没有窗口:
  • 创建新的窗口
或者:
  • 激活此桌面上的操作,并将其移动到前景窗口
将 MRU 窗口调出到前景窗口所在的监视器
"monitor": "toMouse" 转到窗口所在的桌面,移动到鼠标所在的监视器 将窗口移动到此桌面,移动到鼠标所在的监视器 如果此桌面上没有窗口:
  • 创建新的窗口
或者:
  • 激活此桌面上的操作,并将其移动到鼠标所在的监视器
将 MRU 窗口调出到鼠标所在的监视器
不包括 保留在原位置 移动到当前桌面 仅在当前桌面上 不可用

示例


// Summon the most recently used (MRU) window, to the current virtual desktop,
// to the monitor the mouse cursor is on, without an animation. If the window is
// already in the foreground, then minimize it.
{ "keys": "ctrl+1", "command": { "action": "globalSummon" } },

// Summon the MRU window, by going to the virtual desktop the window is
// currently on. Move the window to the monitor the mouse is on.
{ "keys": "ctrl+2", "command": { "action": "globalSummon", "desktop": "any" } },

// Summon the MRU window to the current desktop, leaving the position of the window untouched.
{ "keys": "ctrl+3", "command": { "action": "globalSummon", "monitor": "any" } },

// Summon the MRU window, by going to the virtual desktop the window is
// currently on, leaving the position of the window untouched.
{ "keys": "ctrl+4", "command": { "action": "globalSummon", "desktop": "any", "monitor": "any" } },

// Summon the MRU window with a dropdown duration of 200ms.
{ "keys": "ctrl+5", "command": { "action": "globalSummon", "dropdownDuration": 200 } },

// Summon the MRU window. If the window is already in the foreground, do nothing.
{ "keys": "ctrl+6", "command": { "action": "globalSummon", "toggleVisibility": false } },

// Summon the window named "_quake". If no window with that name exists, then create a new window.
{ "keys": "ctrl+7", "command": { "action": "globalSummon", "name": "_quake" } }

打开 quake 模式窗口

此操作是 globalSummon 操作的一种特殊变体。 它专门调出 quake 窗口。 这是以下 globalSummon 操作的简写:

{
"keys": "win+`",
"command": {
"action": "globalSummon",
"name": "_quake",
"dropdownDuration": 200,
"toggleVisibility": true,
"monitor": "toMouse",
"desktop": "toCurrent"
}
}

如果你想更改 quakeMode 操作的行为,建议使用你喜欢的设置在 actions 中创建新的 globalSummon 条目。

命令名称:quakeMode

默认绑定:

{ "keys": "win+`", "command": { "action": "quakeMode" } }

Windows Terminal quake mode



运行多个操作

此操作允许用户将多个顺序操作绑定到一个命令。

命令名称:multipleActions

参数

名称 必要性 接受 说明
actions 必需 操作数组 要运行的 action 的列表。

示例

{ "name": "Create My Layout", "command": {
    "action": "multipleActions",
    "actions": [
        // Create a new tab with 3 panes
        { "action": "newTab", "tabTitle": "Work", "colorScheme": "One Half Dark" },
        { "action": "splitPane", "split": "vertical", "profile": "Windows PowerShell", "tabTitle": "Work", "colorScheme": "Campbell Powershell", },
        { "action": "splitPane", "split": "horizontal", "profile": "Windows PowerShell", "tabTitle": "Work", "colorScheme": "Campbell Powershell", },

        // Create a second tab
        { "action": "newTab", "tabTitle": "Misc"},

        // Go back to the first tab and zoom the first pane
        { "action": "prevTab", "tabSwitcherMode": "disabled" },
        { "action": "moveFocus", "direction": "first"},
        "togglePaneZoom"
        ]
}}


取消绑定密钥(禁用键绑定)

可以从任何命令禁用键绑定或“取消绑定”关联的键。 使用基础终端应用程序(例如 VIM)时,这可能是必需的。 未绑定的键将传递到基础终端。

命令名称:unbound

使用未绑定的示例:

例如,若要取消绑定快捷键 Alt+Shift+-" 和 Alt+Shift+=",请在 settings.json 文件的 actions 部分包含这些命令。

{
    "actions": [
        { "command": "unbound", "keys": "alt+shift+-" },
        { "command": "unbound", "keys": "alt+shift+=" }
    ]
}

使用 null 的示例:

还可以通过将 "command" 设置为 null,取消绑定默认绑定到操作的击键。 这还会允许击键与命令行应用程序设置关联,而不执行默认操作。

{
   "command" : null, "keys" : ["ctrl+v"]
},

用例方案:

Windows 终端使用快捷键绑定 Ctrl+V 作为粘贴命令。 使用 WSL 命令行时,可能需要使用 Vim 这样的 Linux 应用程序来编辑文件。 但是,Vim 依赖于 Ctrl+V 键绑定来使用 blockwise 视觉模式。 此键绑定将被阻止,并且 Windows 终端粘贴命令优先,除非在 settings.json 文件中调整了 unbound 设置,使得键绑定将与 Vim 命令行应用关联,而不是与 Windows 终端绑定关联。