終端基礎
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 取自您的系統預設值。Shell 會被檢測並顯示在終端配置檔案下拉列表中。
您可以在終端配置檔案文章中瞭解有關配置終端 Shell 的更多資訊。
管理終端
終端選項卡 UI 位於終端檢視的右側。每個終端都有一個條目,其中包含其名稱、圖示、顏色和組裝飾(如果有)。
透過選擇終端面板右上角的 + 圖示、從終端下拉列表中選擇一個配置檔案或觸發⌃⇧`(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
區域終端位置。
新視窗中的終端
有幾種不同的方式可以在新視窗中開啟終端
- 使用⌃⇧⌥`(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)觸發。
提示:可以透過從跳過 Shell 的命令中刪除
workbench.action.terminal.focusFind
命令,將Ctrl+F傳送到 Shell。
執行選定文字
要使用runSelectedText
命令,請在編輯器中選擇文字,然後透過命令面板(⇧⌘P(Windows、Linux Ctrl+Shift+P))執行命令終端:在活動終端中執行選定文字,終端將嘗試執行選定文字。如果在活動編輯器中沒有選擇文字,則游標所在的整行將在終端中執行。
提示:還可以使用命令
workbench.action.terminal.runActiveFile
執行活動檔案。
最大化終端
可以透過單擊帶有向上箭頭圖示的最大化面板大小按鈕來最大化終端檢視。這將暫時隱藏編輯器並最大化面板。這對於暫時專注於大量輸出很有用。有些開發人員透過開啟新視窗、最大化面板並隱藏側邊欄來將 VS Code 用作獨立的終端。
請注意,只有當面板的對齊選項設定為居中時,才能將其最大化。
全選
有一個終端:全選命令,在 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,您可以使用它來獲取 AI 驅動的終端命令和 Shell 指令碼幫助。有幾種方法可以將 Copilot 與終端一起使用
終端內聯聊天
直接在終端中啟動內聯聊天以獲取 Shell 命令幫助
- 開啟終端(⌃`(Windows、Linux Ctrl+`))
- 按⌘I(Windows、Linux Ctrl+I)或從命令面板執行終端內聯聊天命令
- 用自然語言輸入您的問題或請求,例如
- “如何在此目錄中查詢最大的檔案?”
- “告訴我如何撤銷上次 git commit”
- “建立一個 bash 指令碼來分析日誌檔案”
當 Copilot 提供響應時,您可以選擇執行直接執行命令,或選擇插入將其新增到終端以進行進一步編輯。
有關將 GitHub Copilot 與終端一起使用的更多資訊,請參閱使用終端內聯聊天。
終端聊天參與者
在聊天檢視中以提問模式使用專用@terminal
聊天參與者
- 開啟聊天檢視(⌃⌘I(Windows、Linux Ctrl+Alt+I))
- 使用
@terminal
開頭提問,將其指向終端參與者 - 詢問終端命令、Shell 指令碼或解釋終端輸出
示例
@terminal 列出此工作區中最大的 5 個檔案
@terminal /解釋 top shell 命令
@terminal 如何遞迴地 grep 模式
在聊天中引用終端上下文
您可以將終端資訊作為上下文包含在您的聊天提示中
- 使用
#terminalSelection
將終端中的選定文字新增到您的聊天提示中 - 使用
#terminalLastCommand
包含您在終端中執行的最後一個命令
後續步驟
本文件已涵蓋終端的基礎知識。請繼續閱讀以瞭解更多資訊
- 終端內聯聊天 - 直接在終端中提供 AI 驅動的建議。
- 任務 - 任務允許您與外部工具整合並大量利用終端。
- 掌握 VS Code 的終端 - 一個外部部落格,其中包含大量終端高階使用者提示。
- 透過瀏覽 VS Code 中的鍵盤快捷鍵(首選項:開啟鍵盤快捷鍵,然後搜尋“終端”)來探索終端命令。
常見問題
我啟動終端時遇到問題
有關此類問題,請參閱專用故障排除指南。
如何建立管理員終端?
整合終端 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 版本管理器)使用者經常在 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 請求開啟“括號貼上模式”,但有些東西不支援它。要解決此問題,您可以執行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 編輯器正常工作,這並不是一個選項。 - 將
bindkey -e
新增到您的 init 指令碼中以明確設定 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
有關更多資訊,請參閱最小對比度部分。