終端基礎
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) 鍵盤快捷鍵開啟外部終端。
終端外殼
整合終端可以使用您計算機上安裝的各種 shell,預設是從您的系統預設值中提取的。Shell 會在終端配置檔案下拉列表中被檢測到並顯示。

您可以在 終端配置檔案 文章中瞭解更多關於配置終端 shell 的資訊。
管理終端
終端選項卡 UI 位於終端檢視的右側。每個終端都有一個條目,包含其名稱、圖示、顏色和組裝飾(如有)。

透過選擇 **TERMINAL** 面板右上角的 **+** 圖示,從終端下拉選單中選擇一個配置檔案,或透過觸發 ⌃⇧` (Windows, Linux Ctrl+Shift+`) 命令來新增終端例項。此操作會在與該終端關聯的選項卡列表中建立另一個條目。
透過將滑鼠懸停在選項卡上並選擇 **垃圾桶** 按鈕,選擇一個選項卡項並按 **Delete**,使用 **終端: 終止活動終端例項** 命令,或透過右鍵單擊上下文選單來移除終端例項。
透過聚焦下一個 ⇧⌘] (Windows, Linux Ctrl+PageDown) 和聚焦上一個 ⇧⌘[ (Windows, Linux Ctrl+PageUp) 來導航終端組。
當終端的狀態發生變化時,圖示可能會出現在選項卡標籤的終端標題右側。一些例子是響鈴(macOS)以及任務,當沒有錯誤時顯示勾號,否則顯示 X。將滑鼠懸停在圖示上可閱讀狀態資訊,其中可能包含操作。
組(分屏)
將多個終端並排放置,並透過拆分終端來建立組。
- 將滑鼠懸停在右側終端列表中的條目上,然後選擇內聯拆分按鈕。
- 右鍵單擊上下文選單並選擇 **拆分** 選單選項。
- 按住 **Alt** 並單擊選項卡、**+** 按鈕或終端面板上的單個選項卡。
- 觸發 ⌘\ (Windows, Linux Ctrl+Shift+5) 命令。
新終端的工作目錄取決於 terminal.integrated.splitCwd 設定。
透過聚焦上一個窗格 ⌥⌘← (Windows, Linux Alt+Left) 或下一個窗格 ⌥⌘→ (Windows, Linux Alt+Right) 在組中的終端之間導航。
拖放選項卡可以重新排列它們。將選項卡拖動到主終端區域可以實現將終端從一個組移動到另一個組。
可以使用命令面板中的 **終端: 取消拆分終端** 命令或右鍵單擊上下文選單將終端移至其自己的組中。
編輯器區域內的終端
您可以使用 **終端: 在編輯器區域建立新終端** 命令、**終端: 在編輯器區域的右側建立新終端** 命令,或將終端從終端檢視拖動到編輯器區域來在編輯器區域(終端編輯器)中開啟終端。終端編輯器顯示為常規編輯器選項卡。

您可以在編輯器組佈局系統中將終端編輯器放在任一側,或以多種維度進行排列,例如,PowerShell 和 WSL 終端堆疊在檔案編輯器右側。

可以使用 terminal.integrated.defaultLocation 設定來更改預設的 `view` 或 `editor` 區域終端位置。
新視窗中的終端
可以通過幾種不同的方式在新 VS Code 視窗中開啟終端。
- 使用 ⌃⇧⌥` (Windows, Linux Ctrl+Shift+Alt+`)
- 如果您有多個終端,請右鍵單擊終端選項卡;如果您只打開了一個終端,請左鍵單擊該選項卡。然後選擇 **將終端移動到新視窗**。
- 從多個不同的選單中選擇可用的 **新建終端視窗** 條目。
導航緩衝區
終端中的內容稱為緩衝區,緊靠底部檢視的上方部分稱為“滾動回溯”。保留的滾動回溯量由 terminal.integrated.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)
- 滾動到底部 - ⌘End (Windows Ctrl+End, Linux Shift+End)
還可以進行 **命令** 導航(請參閱 shell 整合)。
- 滾動到上一個命令 - ⌘↑ (Windows, Linux Ctrl+Up)
- 滾動到下一個命令 - ⌘↓ (Windows, Linux Ctrl+Down)
滾動會即時發生,但可以透過 terminal.integrated.smoothScrolling 設定配置為在短時間內動畫顯示。
連結
終端具有複雜的連結檢測功能,支援編輯器整合,甚至擴充套件貢獻的連結處理程式。將滑鼠懸停在連結上會顯示下劃線,然後按住 **Ctrl** / **Cmd** 鍵並單擊。
這些內建的連結處理程式按以下優先順序順序使用:
-
URI/URL:看起來像 URI 的連結,例如 `https://vscode.com.tw`、`vscode://path/to/file` 或 `file://path/to/file` 將使用協議的標準處理程式開啟。例如,`https` 連結將開啟瀏覽器。

-
檔案連結:連結到已驗證存在於系統上的檔案。這些將檔案在新編輯器選項卡中開啟,並支援許多常見的行/列格式,如 `file:1:2`、`file:line 1, column 2`。

-
資料夾連結:連結到資料夾與檔案連結類似,但會將新 VS Code 視窗開啟到該資料夾。

-
單詞連結:回退連結型別,使用 terminal.integrated.wordSeparators 設定。該設定定義了單詞邊界,並使幾乎所有文字成為單詞。啟用單詞連結會在工作區中搜索該單詞。如果只有一個結果,則開啟該檔案;否則,將顯示搜尋結果。單詞連結被認為是“低置信度”,除非按住 **Ctrl** / **Cmd** 鍵,否則不會顯示下劃線或工具提示。它們對行和列字尾的支援也有限。

可以使用 **開啟檢測到的連結** 命令(⇧⌘O (Windows, Linux Ctrl+Shift+O))透過鍵盤訪問連結。

如果連結驗證導致效能問題,例如在高延遲遠端環境中,可以透過 terminal.integrated.enableFileLinks 設定 停用它。
處理連結的擴充套件
擴充套件可以貢獻 **連結提供程式**,允許擴充套件定義單擊時發生的情況。例如,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**。
當啟用 terminal.integrated.copyOnSelection 時,複製會在選中時自動完成。
預設情況下,貼上多行時會發出警告,可以透過 terminal.integrated.enableMultiLinePasteWarning 設定停用。僅當 shell 不支援“帶括號貼上模式”時才會這樣做。啟用該模式時,shell 會表明它可以處理多行貼上。
使用滑鼠
右鍵單擊行為
右鍵單擊行為因平臺而異。
- Linux:顯示上下文選單。
- macOS:選擇游標下的單詞並顯示上下文選單。
- Windows:如果存在選區,則複製並刪除選區;否則,貼上。
可以使用 terminal.integrated.rightClickBehavior 設定進行配置。選項包括:
- `default` - 顯示上下文選單。
- `copyPaste` - 如果有選區則複製,否則貼上。
- `paste` - 右鍵單擊時貼上。
- `selectWord` - 選擇游標下的單詞並顯示上下文選單。
- `nothing` - 不執行任何操作,並將事件傳遞給終端。
列選擇
按住 **Alt** 並單擊並拖動,即可在終端內選擇文字矩形,而不是常規的逐行選擇。
使用 Alt 重新定位游標
按住 **Alt** 並單擊將游標重新定位到滑鼠下方。這透過模擬箭頭鍵來實現,但對於某些 shell 或程式可能無法可靠工作。此功能可以透過 terminal.integrated.altClickMovesCursor 設定停用。
滑鼠事件模式
當終端中執行的應用程式啟用滑鼠事件模式時,例如 Vim 滑鼠模式,滑鼠互動將被髮送到應用程式而不是終端。這意味著單擊和拖動將不再建立選區。可以透過在 Windows 和 Linux 上按住 **Alt** 鍵來強制進行終端選區,在 macOS 上也可以透過按住 **Option** 鍵來實現,但這需要先啟用 terminal.integrated.macOptionClickForcesSelection 設定。
查詢
整合終端具有查詢功能,可以透過 ⌘F (Windows, Linux Ctrl+F) 觸發。

**Ctrl+F** 可以透過從 要跳過 shell 的命令 中刪除 `workbench.action.terminal.focusFind` 命令來發送到 shell。
執行選中文字
要使用 `runSelectedText` 命令,請在編輯器中選擇文字,然後透過 **命令面板**(⇧⌘P (Windows, Linux Ctrl+Shift+P))執行 **終端: 在活動終端中執行選中文字** 命令,終端將嘗試執行選中文字。如果活動編輯器中沒有選中文字,則將在終端中執行游標所在行的全部內容。
還可以使用 `workbench.action.terminal.runActiveFile` 命令執行活動檔案。
最大化終端
可以透過單擊帶有向上箭頭圖示的最大化面板大小按鈕來最大化終端檢視。這將暫時隱藏編輯器並最大化面板。這對於暫時關注大量輸出很有用。一些開發者將 VS Code 用作獨立終端,方法是開啟一個新視窗,最大化面板,然後隱藏側邊欄。
請注意,只有當面板的 對齊 選項設定為 **Center** 時,才能最大化該面板。
全選
有一個 **終端: 全選** 命令,在 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 設定允許指定一個自定義路徑來代替開啟。
{
"terminal.integrated.cwd": "/home/user"
}
Windows 上的拆分終端將在父終端啟動的目錄中啟動。在 macOS 和 Linux 上,拆分終端將繼承父終端的當前工作目錄。可以使用 terminal.integrated.splitCwd 設定更改此行為。
{
"terminal.integrated.splitCwd": "workspaceRoot"
}
還有可用的擴充套件,例如 Terminal Here,它們提供了更多選項。
固定尺寸終端
**終端: 設定固定尺寸** 命令允許更改終端及其後備偽終端使用的列數和行數。這將在必要時新增捲軸,這可能會導致使用者體驗不佳,並且通常不推薦,但尤其是在 Windows 上,對於在沒有分頁工具的情況下讀取日誌或長行來說,這是一個常見的需求。
您還可以右鍵單擊終端選項卡並選擇 **調整大小以適應內容寬度**(⌥Z (Windows, Linux Alt+Z))來調整終端列數以適應終端中最長的換行。
終端中的 GitHub Copilot
如果您可以訪問 GitHub Copilot,您可以使用它來獲取關於終端命令和 shell 指令碼的 AI 驅動的幫助。有幾種方法可以將 Copilot 與終端結合使用:
終端內聯聊天
直接在終端中啟動內聯聊天以獲取 shell 命令幫助。
- 開啟終端(⌃` (Windows, Linux Ctrl+`))
- 按 **Ctrl+I**(⌘I (Windows, Linux Ctrl+I))或從命令面板執行 **終端內聯聊天** 命令。
- 用自然語言輸入您的問題或請求,例如:
- “如何找到此目錄中最大的檔案?”
- “向我展示如何撤銷上一個 git 提交。”
- “建立一個 bash 指令碼來分析日誌檔案。”

當 Copilot 提供響應時,您可以選擇 **執行** 直接執行命令,或選擇 **插入** 將其新增到終端以進行進一步編輯。
有關使用 GitHub Copilot 與終端的更多資訊,請參閱 使用終端內聯聊天。
終端聊天參與者
在聊天檢視的提問模式下使用專用的 `@terminal` 聊天參與者。
- 開啟聊天檢視 (⌃⌘I (Windows, Linux Ctrl+Alt+I))
- 用 `@terminal` 開始您的問題,以將其定向到終端參與者。
- 詢問有關終端命令、shell 指令碼或解釋終端輸出的問題。
示例
@terminal 列出此工作區中 5 個最大的檔案。@terminal /explain 頂部 shell 命令。@terminal 如何遞迴地 grep 模式。
在聊天中引用終端上下文
您可以在聊天提示中包含終端資訊作為上下文。
- 使用 `#terminalSelection` 將終端中的選中文字新增到聊天提示中。
- 使用 `#terminalLastCommand` 包含您在終端中執行的最後一個命令。
後續步驟
本文件已涵蓋了終端的基礎知識。請繼續閱讀以瞭解更多關於:
- 終端內聯聊天 - AI 驅動的建議直接在您的終端中。
- 任務 - 任務可讓您與外部工具整合並大量利用終端。
- 掌握 VS Code 的終端 - 一篇外部部落格,包含大量終端的高階使用者技巧。
- 透過瀏覽 VS Code 中的鍵盤快捷鍵來探索終端命令(**首選項: 開啟鍵盤快捷鍵**,然後搜尋“terminal”)。
常見問題
啟動終端時遇到問題
有一個 專用故障排除指南 來解決此類問題。
如何建立管理員終端?
整合終端 shell 以 VS Code 的許可權執行。如果您需要以提升的(管理員)或其他許可權執行 shell 命令,請在終端中使用平臺實用程式,如 `runas.exe`。
您可以在 配置配置檔案 中瞭解更多關於透過終端配置檔案自定義終端的資訊。
能否為資源管理器中的“在整合終端中開啟”命令新增鍵盤快捷鍵?
您可以透過資源管理器中的 **在整合終端中開啟** 上下文選單命令為特定資料夾開啟新終端。

預設情況下,“在整合終端中開啟”沒有關聯的鍵盤快捷鍵,但您可以透過鍵盤快捷鍵編輯器(⌘K ⌘S (Windows, Linux Ctrl+K Ctrl+S))新增自己的快捷鍵,以將鍵盤快捷鍵新增到您的 `keybindings.json`。
下面的 `keybindings.json` 示例為 `openInTerminal` 添加了鍵盤快捷鍵 **Ctrl+T**。
{
"key": "ctrl+t",
"command": "openInTerminal",
"when": "filesExplorerFocus"
}
為什麼 nvm 在啟動整合終端時會抱怨字首選項?
nvm (Node Version Manager) 使用者通常在 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` 是使用您路徑中的另一個 `node` 例項全域性安裝的(例如 `/usr/local/bin/npm`)。
- 為了將開發工具放在 `$PATH` 上,VS Code 會在啟動時啟動一個 bash 登入 shell。這意味著您的 `~/.bash_profile` 已經執行過,當整合終端啟動時,它會執行 **另一個** 登入 shell,可能以意想不到的方式重新排序 `$PATH`。
要解決此問題,您需要找到舊 `npm` 的安裝位置並將其及其過時的 `node_modules` 刪除。找到 `nvm` 初始化指令碼,並在它執行之前執行 `which 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 請求開啟“帶括號貼上模式”,但某些程式/shell 無法正確支援它。為了解決此問題,您可以執行 `printf "\e[?2004l"` 來停用該會話的帶括號貼上模式,或將以下內容新增到您的 `~/.inputrc` 檔案中:
set enable-bracketed-paste off
或者,可以透過使用此設定將其關閉來強制忽略 shell 請求的帶括號貼上模式:
{
"terminal.integrated.ignoreBracketedPasteMode": true
}
zsh 中 Ctrl+A、Ctrl+R 輸出 ^A、^R
如果 zsh 處於 Vim 模式而非 Emacs 模式,可能會發生這種情況,這是因為在您的 init 指令碼中將 `$EDITOR` 或 `$VISUAL` 設定為 `vi`/`vim`。
為了解決此問題,您有兩個選擇:
- 確保不要將 `$EDITOR` 設定為 `vi(m)`。但是,如果您希望 Git 編輯器正常工作,則此選項不可行。
- 在您的 init 指令碼中新增 `bindkey -e` 來顯式設定 Emacs。
如何將 Cmd+. 對映到 Ctrl+C,就像 macOS 的內建終端一樣?
macOS 的預設終端使用 **Cmd+.** 執行與 **Ctrl+C** 相同的操作。要在 VS Code 中獲得此行為,請新增此 自定義鍵盤快捷鍵。
{
"key": "cmd+.",
"command": "workbench.action.terminal.sendSequence",
"when": "terminalFocus",
"args": { "text": "\u0003" }
}
為什麼終端中的顏色不正確?
我們預設啟用的一個輔助功能是確保前景文字的最小對比度至少為 4.5。此功能可確保文字無論使用何種 shell 和主題都可以閱讀,否則將無法實現。要停用此功能,您可以設定:
"terminal.integrated.minimumContrastRatio": 1
有關更多資訊,請參閱 最小對比度比率 部分。