Windows 終端機中的自訂動作

重要

自 Windows 終端機 1.4 版起,settings.json 檔案中的 keybindings 陣列已重新命名為 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

這是在按下相關聯按鍵時所執行的命令。

屬性名稱:command

必要性:必要

接受:字串

索引鍵

這會定義用來呼叫命令的按鍵組合。 每個按鍵可以有任意數目的修飾詞。 以下列出接受的修飾詞和按鍵。

如果動作沒有按鍵,則會出現在命令選擇區中,但無法使用鍵盤叫用。

屬性名稱:keys

必要性: 選用

接受:字串或陣列[字串]

動作

這會將其他功能新增至特定命令。

屬性名稱:action

必要性: 選用

接受:字串

名稱

這會設定將在命令選擇區中顯示的名稱。 如果未提供任何名稱,則終端機會嘗試自動產生名稱。

屬性名稱:name

必要性: 選用

接受:字串

圖示

這會設定命令選擇區中顯示的圖示。

屬性名稱:icon

必要性: 選用

接受:檔案位置作為字串或 Emoji



接受的修飾詞和按鍵

修飾詞

ctrl+、 、 shift+alt+win+

注意

Windows雖然密鑰支援做為修飾詞,但系統會保留大部分的 Win+<鍵密鑰>系結。 如果作業系統已保留該按鍵繫結關係,則終端機永遠不會收到該繫結。

輔助按鍵

類型 索引鍵
函式和英數字元按鍵 f1-f24、 、 a-z0-9
符號 `plus-=[]\;',、、、 ./
方向鍵 downleftrightuppagedownpageuppgdn、、pgup、、 endhome
動作按鍵 tabenterescescapespacebackspacedelete、、insert、、 appmenu
Numpad 按鍵 numpad_0-numpad_9numpad0-numpad9numpad_addnumpad_plusnumpad_decimalnumpad_periodnumpad_divide、、numpad_minus、、 numpad_subtractnumpad_multiply
瀏覽器按鍵 browser_backbrowser_forward、、browser_stopbrowser_refreshbrowser_search、、、 browser_favoritesbrowser_home

注意:=plus 為對等項目。 後者不得與 numpad_plus 混淆。


應用程式層級命令

結束

這會關閉所有開啟的終端機視窗。 確認對話方塊隨即會出現在目前視窗中,確認您想關閉所有視窗。

命令名稱:quit

預設繫結:

{ "command": "quit" }

關閉視窗

這會關閉目前的視窗及其中的所有索引標籤。 如果 confirmCloseAllTabs 設定為 true,則會出現確認對話方塊,以確保您想要關閉所有索引標籤。 如需此設定的詳細資訊,請參閱外觀頁面

命令名稱:closeWindow

預設繫結:

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

Windows Terminal confirm close all tabs

Find

這會開啟搜尋對話方塊。 如需搜尋的詳細資訊,請參閱搜尋頁面

命令名稱: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" }

開啟設定檔案

target 欄位而定,會開啟設定 UI、自訂設定檔案 (settings.json) 或預設設定檔案 (defaults.json)。 如果沒有 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" }

傳送輸入

將任意文字輸入傳送至殼層。 例如,輸入 "text\n" 會將 "text" 寫入殼層,後面接著新行字元。

ANSI 逸出序列可供使用,但像 \x1b 這樣的逸出程式碼必須寫入為 \u001b。 例如,"\u001b[A" 會表現出如同按下向上箭號按鈕的行為。

命令名稱:sendInput

預設繫結:

此命令目前尚未在預設設定中繫結

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

參數

名稱 必要性 接受 描述
input 必要 String 要匯入殼層的文字輸入。


索引標籤管理命令

關閉索引標籤

這會關閉指定索引處的索引標籤。 若未提供索引,請使用焦點索引標籤的索引。

命令名稱:closeTab

參數

名稱 必要性 接受 描述
index 選擇性 整數 要關閉的索引標籤位置。

關閉所有其他索引標籤

這會關閉所有索引標籤 (索引處的索引標籤除外)。 若未提供索引,請使用焦點索引標籤的索引。

命令名稱:closeOtherTabs

預設繫結:

{ "command": "closeOtherTabs" }

參數

名稱 必要性 接受 描述
index 選擇性 整數 要保持開啟的索引標籤位置。

關閉索引後的索引標籤

這會關閉索引處索引標籤後面的其他索引標籤。 若未提供索引,請使用焦點索引標籤的索引。

命令名稱:closeTabsAfter

預設繫結:

{ "command": "closeTabsAfter" }

參數

名稱 必要性 接受 描述
index 選擇性 整數 要保持開啟的最後索引標籤位置。

重複的索引標籤

這會複製目前索引標籤的設定檔和目錄,並將其開啟。 這不包括已修改/新增的 ENV 變數。

命令名稱: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 選擇性 true、 、 falsenull 覆寫設定檔的 elevate 屬性。 當省略時,此動作會根據設定檔的 elevate 設定運作。 當設定為 truefalse 時,此動作會表現出如同設定檔分別使用 "elevate": true"elevate": false 設定的行為。
tabTitle 選擇性 String 新索引標籤的標題。
index 選擇性 整數 將會根據其在下拉式清單中位置 (從 0 開始) 開啟的設定檔。
profile 選擇性 字串形式的設定檔名稱或 GUID 將會根據其 GUID 或名稱開啟的設定檔。
colorScheme 選擇性 字串形式的色彩配置名稱 用於取代設定檔 colorScheme 設定的配置
suppressApplicationTitle 選擇性 true, false 當設定為 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 選擇性 String 用於此索引標籤的新標題。如果省略,此命令會將索引標籤標題還原為原始值。

開啟索引標籤重新命名文字方塊

此命令會將索引標籤標題變更為文字欄位,您便能編輯目前索引標籤的標題。清除文字欄位會將索引標籤標題重設為目前殼層執行個體的預設值。

命令名稱: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 終端機預覽

搜尋網頁

嘗試開啟瀏覽器視窗,並搜尋所選文字。 如果沒有選取任何文字,則不會執行任何動作。 如果未提供 queryUrl 參數,則會改用 searchWebDefaultQueryUrl 設定。 如果提供 queryUrl 參數,則字串中的 %s 會由所選文字取代。

命令名稱:searchWeb

預設繫結:

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

參數

名稱 必要性 接受 描述
queryUrl 必要 String 用於搜尋的 URL。 此字串中的 %s 會由所選文字取代。 如果省略,則會預設為 searchWebDefaultQueryUrl 設定。

重要

這項功能僅適用於 Windows 終端機預覽



視窗管理命令

新增視窗

這會建立新視窗。 如果沒有任何引數,則會在新視窗中開啟預設設定檔 (無論 windowingBehavior 的設定為何)。 如果未指定動作,則會使用預設設定檔的對等設定。

命令名稱:newWindow

預設繫結:

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

參數

名稱 必要性 接受 描述
commandline 選擇性 字串形式的可執行檔名稱 可執行檔在索引標籤內執行。
startingDirectory 選擇性 字串形式的資料夾位置 視窗將在其中開啟的目錄。
tabTitle 選擇性 String 視窗索引標籤的標題。
index 選擇性 整數 將會根據其在下拉式清單中位置 (從 0 開始) 開啟的設定檔。
profile 選擇性 字串形式的設定檔名稱或 GUID 將會根據其 GUID 或名稱開啟的設定檔。
suppressApplicationTitle 選擇性 true, false 當設定為 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 選擇性 String 用於此視窗的新名稱。 如果省略,此命令會將視窗名稱還原為原始值。

開啟視窗重新命名對話方塊

此命令變更會顯示快顯視窗,可讓您編輯目前視窗的名稱。 清除文字欄位會重設視窗名稱。

命令名稱: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"、、"up""auto""right"、、、 "down""left" 窗格的分割方式。 "auto" 會以提供最大表面區域的方向分割。
commandline 選擇性 字串形式的可執行檔名稱 可執行檔在窗格內執行。
startingDirectory 選擇性 字串形式的資料夾位置 在其中開啟窗格的目錄。
elevate 選擇性 true、 、 falsenull 覆寫設定檔的 elevate 屬性。 當省略時,此動作會根據設定檔的 elevate 設定運作。 當設定為 truefalse 時,此動作會表現出如同設定檔分別使用 "elevate": true"elevate": false 設定的行為。
tabTitle 選擇性 String 當新窗格為焦點時的索引標籤標題。
index 選擇性 整數 將會根據其在下拉式清單中位置 (從 0 開始) 開啟的設定檔。
profile 選擇性 字串形式的設定檔名稱或 GUID 將會根據其 GUID 或名稱開啟的設定檔。
colorScheme 選擇性 字串形式的色彩配置名稱 用於取代設定檔 colorScheme 設定的配置
suppressApplicationTitle 選擇性 true, false 當設定為 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 選擇性 true, false 當為 true 時,複製的內容將會複製成一行。 當為 false 時,會從選取的文字保存新行。
copyFormatting 選擇性 true、、false"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" }

清除緩衝區

此動作可用於手動清除終端機緩衝區。 這適用於下列案例:當您不在命令列殼層提示字元中,且無法輕易執行 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 必要 String 要套用的色彩配置 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 選擇性 布林值 如果啟用殼層整合 並且為 true,則建議功能表會預先填入目前命令列的內容。 預設為 true

建議來源

支援下列建議來源:

  • "recentCommands":這會以最近使用的命令填入建議功能表。 這些由殼層整合提供技術支援,因此只有在殼層設定為支援殼層整合時,才能使用這些功能。 如需詳細資訊,請參閱殼層整合
  • "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 如果提供,則終端機會將緩衝區內容匯出至指定檔案。 否則,終端機會開啟檔案選擇器,選擇要匯出的檔案。

___

全域命令

全域叫用

這是在作業系統中全域運作的特殊動作,而不僅是在終端機視窗的內容中運作。 按下時,此動作會叫用終端機視窗。 此動作的屬性會控制下列項目:叫用哪個視窗、叫用視窗的位置以及叫用視窗時視窗的行為方式。

注意事項

  • 當終端機運行時,任何繫結至終端機中 globalSummon 動作的按鍵都無法在其他應用程式中運作,這些按鍵一律會聚焦於終端機視窗。

  • 如果另一個執行中應用程式已使用 RegisterHotKey API 註冊指定 keys,則終端機將無法接聽這些按鍵輸入。

  • 已提升權限和未提升權限的終端機執行個體,無法同時註冊相同按鍵。 預覽版和穩定版的終端機亦是如此,最先啟動的終端機一律優先使用。

  • 僅當終端機執行個體已在執行中時,這些按鍵輸入才能運作。 若要在登入時自動啟動終端機,請參閱 startOnUserLogin

命令名稱:globalSummon

預設繫結:

此命令目前尚未在預設設定中繫結

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

參數

名稱 必要性 接受 描述
desktop 選擇性 any、 、 toCurrentonCurrent 這會控制終端機該如何與虛擬桌面互動。
  • "any":將視窗保留在現有桌面上,則會在啟動視窗時切換至該桌面。
  • "toCurrent" (預設值):將視窗移至目前的虛擬桌面。
  • "onCurrent":僅當視窗已位於目前虛擬桌面時,才會叫用該視窗。
monitor 選擇性 any、 、 toCurrenttoMouse 這會控制叫用視窗來源/目的地的監視器。
  • "any":叫用最近使用的視窗,無論其目前位於哪個監視器。
  • "toCurrent":將最近使用的視窗與目前的前景視窗一併叫用至監視器。
  • "toMouse" (預設值):將最近使用的視窗叫用至滑鼠游標所在的監視器。
name 選擇性 String 在省略時 (預設值),請使用 monitordesktop 尋找適合叫用的最近使用視窗。 在提供時,叫用名稱或識別碼符合指定 name 值的視窗。 如果不存在此類視窗,請建立具有該名稱的新視窗。
dropdownDuration 選擇性 整數 預設為 0。 當提供正數時,使用持續 dropdownDuration 毫秒的動畫,從畫面頂端「滑入」視窗。 200 是此設定的合理值。
toggleVisibility 選擇性 true, false 預設為 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 視窗叫用至滑鼠所在的監視器上
不包含 保留其所在位置 移至目前桌面 僅限在目前桌面上 N/A

範例


// 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" } }

開啟地震模式視窗

此動作為 globalSummon 動作的特殊變化。 其特別叫用地震視窗。 此為下列 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 命令列時,您可能須使用 Linux 應用程式 (例如 Vim) 編輯檔案。 不過,Vim 依賴 Ctrl+V 鍵系結來使用 區塊式視覺模式。 除非在 settings.json 檔案中調整 unbound 設定,讓按鍵繫結關係與 Vim 命令列應用程式建立關聯,而不是與 Windows 終端機繫結建立關聯,否則會封鎖此按鍵繫結關係,並優先使用 Windows 終端機貼上命令。