2022 年 7 月 (版本 1.70)
更新 1.70.1:此更新解決了這些問題。
更新 1.70.2:此更新解決了這些問題。
更新 1.70.3:此更新僅適用於 Windows 7 使用者,並且是最後一個支援 Windows 7 的版本。
下載:Windows:x64 Arm64 | Mac:通用 Intel Silicon | Linux:deb rpm tarball Arm snap
歡迎使用 Visual Studio Code 2022 年 7 月發行版本。此版本包含許多更新,我們希望您會喜歡,其中一些主要重點包括
- 更輕鬆的標題列自訂 - 隱藏/顯示功能表列、命令中心或版面配置控制項。
- 摺疊選取範圍 - 在編輯器中建立您自己的摺疊區域。
- 搜尋多重選取 - 選取多個搜尋結果,然後對其執行動作。
- 樹狀檢視尋找和篩選控制項 - 在樹狀檢視(例如「尋找總管」)中尋找和篩選。
- 終端機改進 - 預設開啟 Shell 整合、擴充的 PowerShell 鍵盤快速鍵。
- 命令列選項 --merge - 使用 3 向合併編輯器作為預設合併工具。
- 筆記本:前往最近失敗的儲存格 - 直接跳到筆記本錯誤。
- Python 入門體驗 - 在 VS Code 中快速安裝和設定 Python。
- 固定捲動預覽 - 新的捲動 UI 顯示目前的原始碼範圍。
- 開發容器 CLI 主題 - 瞭解更新的開發容器 CLI。
如果您想在線上閱讀這些版本資訊,請前往 更新,網址為 code.visualstudio.com。
觀看發行派對: 聆聽 VS Code 團隊討論一些新功能。您可以在我們的 YouTube 頻道上找到活動錄影。
Insiders: 想要盡快試用新功能嗎?您可以下載每晚的 Insiders 組建,並在最新更新可用時立即試用。
工作台
更輕鬆的標題列自訂
對於使用自訂標題列的使用者(Windows、macOS 和網頁上的預設值),您可能已經注意到我們正在將更多互動式內容引入標題列。雖然已經有設定可以個別隱藏這些元素,但您現在可以按一下滑鼠右鍵標題列,以存取可切換功能表列(macOS 桌面版上未顯示)、命令中心和版面配置控制項的內容功能表。
對於期望系統內容功能表的 Windows 使用者,仍然可以透過按一下滑鼠右鍵視窗左上角的 VS Code 圖示或按下 Alt+Space
來觸發功能表。滑鼠位置用於判斷使用 Alt+Space
觸發時的行為,因此如果自訂功能表位於標題列的頂端,則會顯示自訂功能表。
對於 Linux 使用者,由於 問題 #156397,標題列中的空白區域不會開啟內容功能表。您必須按一下滑鼠右鍵標題列中您想要隱藏的其中一個項目。
已改進的功能表列摺疊
隨著命令中心的加入,我們嘗試將功能表列縮小為漢堡功能表以騰出空間。在聽到使用者意見反應後,我們切換回舊的功能表列摺疊行為,直到大部分功能表摺疊,然後才切換到漢堡功能表。
可存取的 macOS 標題列縮放
同樣地,作為改進命令中心體驗的一部分,當互動式元件出現在 macOS 的標題列中時,標題列現在會隨著 UI 的其餘部分縮放,以提高協助工具。
摺疊選取範圍
命令從選取範圍建立手動摺疊範圍 (⌘K ⌘, (Windows、Linux Ctrl+K Ctrl+,)) 從目前選取的行建立摺疊範圍並將其摺疊。此範圍稱為手動摺疊範圍,並位於摺疊提供者計算的範圍之上。
可以使用命令移除手動摺疊範圍 (⌘K ⌘. (Windows、Linux Ctrl+K Ctrl+.)) 再次移除手動摺疊範圍。
當程式設計語言不支援摺疊時,手動摺疊範圍特別有用。
保留摺疊範圍
即使摺疊範圍不再是摺疊提供者計算的範圍的一部分,VS Code 現在也會保留摺疊範圍。典型的範例是當使用者註解檔案、啟動字串常值或建立語法錯誤時,這會使得無法建立所有範圍。此類摺疊範圍會變成「已復原」範圍。一旦摺疊提供者在相同位置傳回範圍,或使用命令移除手動摺疊範圍,就會移除這些範圍。
隱藏摺疊控制項
現在可以使用設定 "editor.showFoldingControls": "never"
隱藏裝訂邊中的摺疊控制項。仍然可以使用摺疊命令和快速鍵展開和摺疊摺疊範圍。
3 向合併編輯器改進
我們繼續調整新的 3 向合併編輯器,並在此版本中預設啟用它。可以透過按一下原始檔控制檢視中的衝突檔案來開啟合併編輯器。
重點包括接受來自一側之所有變更的新命令、改進的內容功能表、增強的差異色彩,以及更強調衝突與非衝突變更。
我們也開始探索替代的差異演算法,以提高合併衝突的精確度。如果您在差異或合併編輯器中遇到次佳的變更醒目提示或對齊方式,我們想要在我們的 GitHub 問題追蹤器中記錄這些案例!
命令列選項合併
您現在可以使用命令列選項在 VS Code 中啟動合併編輯器
-m --merge <path1> <path2> <base> <result> Perform a three-way merge by providing paths for two modified versions of a file, the common origin of both modified versions, and the output file to save merge results.
例如,如果您在 .gitconfig
中設定此選項,這可讓您將 VS Code 用作 Git 的合併工具
[merge]
tool = code
[mergetool "code"]
cmd = code --wait --merge $REMOTE $LOCAL $BASE $MERGED
搜尋檔案裝飾
搜尋檢視中的搜尋結果現在在右側具有檔案裝飾和色彩,以表達檔案的問題和原始檔控制資訊。這類似於檔案總管中已顯示的檔案裝飾。
搜尋多重選取
搜尋檢視現在也支援多重選取。您對選取範圍中的一個結果執行的任何動作(例如,關閉或取代)也會在其他選取的項目上執行。
樹狀尋找控制項
樹狀檢視(例如檔案總管)現在支援尋找控制項。您可以按下樹狀檢視內的 ⌥⌘F (Windows、Linux Ctrl+Alt+F) 以彈出尋找控制項。您可以使用尋找控制項來醒目提示相符的元素,或切換篩選按鈕以隱藏所有不符合搜尋詞彙的元素。
注意: 如果您習慣在檔案總管具有焦點時,在叫用 ⌥⌘F (Windows、Linux Ctrl+Alt+F) 時,在編輯器中開啟尋找控制項,您可以據此設定您的鍵盤快速鍵
{
"key": "cmd+f", // "ctrl+f" on Windows/Linux
"command": "-list.find",
"when": "listFocus && listSupportsFind"
}
透過新增檔案建立任意檔案
已改進檔案 > 新增檔案...(或歡迎使用頁面上的新增檔案...連結)體驗,以允許建立任意檔案。您現在可以在快速輸入方塊中輸入檔案名稱,以在磁碟上建立檔案。
終端機
預設啟用 Shell 整合
Shell 整合的自動插入已在上次發行版本中移出預覽,現在預設為啟用。對於支援的 Shell 設定(大多數 bash/zsh/pwsh 組態),它應該可以正常運作,而無需任何變更,而且您應該會看到命令裝飾
佈景主題:藍寶石佈景主題
注意:在 Windows 上,您需要 PowerShell 7 (pwsh) 才能支援 Shell 整合。您可以透過 https://aka.ms/PSWindows 安裝。
如果 Shell 整合功能未自動亮起,您將需要設定手動安裝,此安裝已在此版本中簡化。
當 terminal.integrated.shellIntegration.enabled
設定設定為 true
時,會啟用自動插入,將此設定新增至您的 settings.json
檔案以停用此功能
"terminal.integrated.shellIntegration.enabled": "false"
這將僅停用 VS Code 的 Shell 整合插入。即使停用,如果您的設定已針對 VS Code 可辨識的其他終端機啟用 Shell 整合,它仍然會擷取這些整合。如果您不喜歡命令和/或捲軸裝飾,您可以僅停用其顯示,同時仍然利用 Shell 整合帶來的額外功能。
簡化的 Shell 整合手動安裝
先前的手動安裝需要多個步驟,並且與平台和 Shell 相關。新的手動安裝使用 code
CLI 來擷取 Shell 整合指令碼,並且跨平台運作,以及連線到遠端視窗時運作,這表示您可以在您的點檔案中同步它,而且它應該可以正常運作。
# Manual install on bash
[[ "$TERM_PROGRAM" == "vscode" ]] && . "$(code --locate-shell-integration-path bash)"
您可以在終端機 Shell 整合中閱讀更多關於如何為其他 Shell 安裝 Shell 整合的資訊。
更多 Shell 整合組態選項
新的設定 terminal.integrated.shellIntegration.decorationsEnabled
可讓您在 gutter
、overviewRuler
或兩者都不顯示命令裝飾。為了方便存取,當您按一下裝飾時,您可以透過內容功能表中的設定命令裝飾修改此設定(選取切換可見性以顯示選項下拉式清單)。
您也可以從下拉式清單中設定預設、成功或錯誤圖示。
預設色彩和圖示索引標籤設定
可以使用 terminal.integrated.tabs.defaultIcon
和 terminal.integrated.tabs.defaultColor
針對每個資料夾設定預設圖示和終端機索引標籤色彩。
擴充的 PowerShell 鍵盤快速鍵
由於 Shell 整合,還有其他 PowerShell 鍵盤快速鍵,例如 Ctrl+Space。由於缺少 VT 編碼,這些鍵盤快速鍵在以前是不可能的。如果 Shell 整合在 pwsh 中運作,則下列鍵盤快速鍵現在應該可以運作
- Ctrl+Space - 僅在 Windows 上預設為
MenuComplete
。 - Alt+Space - 預設為
SetMark
。 - Shift+Enter - 預設為
AddLine
。 - Shift+End - 預設為
SelectLine
。 - Shift+Home - 預設為
SelectBackwardsLine
。
這適用於所有平台,甚至是通常不可能使用這些鍵盤快速鍵的 Linux/macOS。預設值隨時可以使用 Set-PSReadLineKeyHandler
在您的 pwsh 設定檔中重設。如果您有其他預期的鍵盤快速鍵,請告訴我們。
執行最近的命令以取代反向搜尋
當啟用 Shell 整合時,我們的目標是執行最近的命令,以作為 Shell 反向搜尋 (Ctrl+R) 的跨 Shell 替代方案。有一種新的連續搜尋模式,當觸發命令時,它是預設模式。此模式的行為類似於大多數 Shell 中的 Ctrl+R,並具有切換回模糊搜尋的選項
新的 inTerminalRunCommandPicker
內容金鑰可用,可讓您設定類似 Ctrl+R 的鍵盤快速鍵以移至下一個相符項目。例如,下列鍵盤快速鍵現在是 Shell 反向搜尋的相當完整的替代方案,而 Ctrl+Alt+R 則是舊行為的後援
{ "key": "ctrl+r", "command": "workbench.action.terminal.runRecentCommand", "when": "terminalFocus" },
{ "key": "ctrl+alt+r", "command": "workbench.action.terminal.sendSequence", "args": { "text": "\u0012"/*^R*/ }, "when": "terminalFocus" },
{ "key": "ctrl+r", "command": "workbench.action.quickOpenNavigateNextInViewPicker", "when": "inQuickOpen && inTerminalRunCommandPicker" },
{ "key": "ctrl+c", "command": "workbench.action.closeQuickOpen", "when": "inQuickOpen && inTerminalRunCommandPicker" },
多行命令現在會在適當的位置顯示新行符號,並且也會使用括號貼上模式,這表示它們會被視為已貼上,以支援 Shell。這通常表示它們都會新增至相同的提示,而不是個別執行。
其他 Shell 整合改進
以下是 Shell 整合的較小改進
-
命令導覽已改進視覺回饋,短暫顯示「焦點框線」,然後在裝訂邊中保留持續的矩形,以協助醒目提示緩衝區中的位置。
-
新的
workbench.action.terminal.copyLastCommand
命令可用,以允許使用鍵盤快速鍵複製上一個命令的輸出(Ctrl/Cmd+Shift+向上鍵、Ctrl/Cmd+C、Esc、Ctrl/Cmd+End 的快速鍵)。 -
Bash Shell 整合
- 支援更多
$PROMPT_COMMAND
格式。 - 當已經使用
bash-preexec
協助程式時,Shell 整合應該可以更好地運作。
- 支援更多
轉譯改進
在啟用 GPU 加速時,對終端機轉譯進行了數項改進
-
半圓 Powerline 符號現在是自訂轉譯的。與先前版本中的箭頭符號類似,這些符號應該與相鄰儲存格無縫混合,並延伸到儲存格的高度,即使使用行高也是如此。
-
圓角框線繪圖字元 (
╭
、╮
、╰
、╯
) 現在使用更平滑的曲線。 -
改進了背景色彩變更時字形的裁剪,這在
npm
輸出警告時很常見。 -
與上述裁剪問題類似,存在一個問題,其中某些字形中的反鋸齒會與其他字元重疊並降低視覺效果。使用如上所示的背景範例最容易說明此問題。
Work
的k
中的像素也可能逸出儲存格的界限朝另一個方向。由於此像素幾乎與背景色彩相同而被移除,因此此像素將不再出現在字形中。
原始檔控制
動作按鈕改進
我們根據使用者意見反應,繼續調整原始檔控制動作按鈕
- 只有在高度確定本機分支領先或落後遠端追蹤分支時,才會顯示同步變更動作按鈕。
- 認可動作按鈕僅根據已變更資源的清單啟用,同時考慮到智慧認可設定
git.enableSmartCommit
git.suggestSmartCommit
git.smartCommitChanges
- 認可動作按鈕圖示會根據分支保護設定更新
git.branchProtection
git.branchProtectionPrompt
改進的 rebase 衝突解決
在此里程碑中,我們解決了在解決合併衝突時 rebase 流程中的一些較小問題。使用者現在應該能夠在解決所有合併衝突後,使用原始檔控制檢視中的認可按鈕繼續 rebase 作業。
認可輸入欄位拼字檢查
在此里程碑中,我們確認所有必要的擴充功能 API 都可用於支援認可輸入欄位中的拼字檢查。我們聯絡了兩個熱門拼字檢查擴充功能的作者,並提交了提取要求,說明如何更新其擴充功能以提供認可描述文字的拼字檢查。
偵錯
JavaScript 偵錯
當您建立啟動組態以偵錯 JavaScript/TypeScript 程式時,您可以設定 "console": "integratedTerminal"
以在終端機中執行該程式(而不是直接產生處理序)。幾個月前,我們注意到 launch.json
組態中的 "args"
部分逸出 Shell,但並未完全逸出。這表示嘗試將引數傳遞給您的程式可能會意外觸發 Shell 中的特殊行為。我們清理了此問題,然後意識到設定包含對 Shell 具有特殊意義之字元的引數是一件有用的事情,而且有些使用者依賴此行為。
我們辯論了正確的修正方式,並決定此行為應該是選擇加入,並且需要變更偵錯配接器協定 (DAP)。我們對 DAP 進行了此變更,在 VS Code 和 js-debug 中實作了此變更,其他偵錯配接器也應該很快就會跟進。
以下是如何在節點啟動組態中使用新行為
{
"type": "node",
"console": "integratedTerminal",
...
// If you pass args as a single string, the characters will not be escaped for the terminal,
// so the command in backticks will be evaluated, and output will be redirected to "outfile".
// The user is responsible for knowing the type of shell that this will be run in,
// and doing any escaping necessary.
"args": "`echo hello` > outfile",
// If you pass args as an array, the characters will be escaped for the terminal,
// so that the program receives them verbatim.
"args": ["`echo hello` > outfile"]
}
偵錯工作階段的選取器
偵錯時,您現在可以在命令面板中執行偵錯:選取偵錯工作階段。這會顯示一個選取器,其中包含您的作用中偵錯工作階段,您可以使用此選取器來搜尋和篩選您的個別偵錯工作階段。每個選取器項目的描述都會顯示產生它的工作階段(如果適用)。
在選取器中選取項目將會在呼叫堆疊檢視中焦點偵錯工作階段。偵錯動作(例如,暫停、逐步執行、重新啟動、停止)將會在焦點偵錯工作階段上執行。選取工作階段也會顯示工作階段的偵錯主控台。
工作
執行工作命令的篩選器支援
工作:執行工作 (workbench.action.tasks.runTask
) 動作支援依工作名稱和類型篩選,以便以更簡潔且可設定的方式選取和執行工作。
例如
{
"key": "ctrl+h",
"command": "workbench.action.tasks.runTask",
"args": {
"task": "VS Code - Build",
"type": "npm"
}
}
改進的自動工作流程
受信任的工作區功能可讓 VS Code 簡化執行自動工作的流程。依預設,如果資料夾受信任,則會執行自動工作,否則您會針對每個資料夾提示一次。可以使用 task.allowAutomaticTasks
設定(預設值為 auto
)設定此行為,以在執行自動工作之前永遠 (on
) 或永不 (off
) 提示。
語言
格式化 JSON 時保留換行符號
您現在可以在格式化 JSON 文件中的行時保留初始行位置。例如,包含單行值的陣列在格式化後仍會將這些值保留在同一行上。JSON 檔案中的額外換行符號 (newlines) 也會保留。若要啟用此功能,請在 [設定編輯器] 中設定選項JSON > 格式:保留行。
筆記本
前往最近失敗的儲存格
如果您的最近執行的儲存格失敗,現在有一個按鈕可以跳到該儲存格。您也可以執行筆記本:前往最近失敗的儲存格來執行相同的動作。
當您執行一組儲存格並想要知道哪個儲存格失敗並停止群組執行時,這非常有用。
筆記本 Markdown 預覽附件轉譯
現在可以在 Jupyter 筆記本中轉譯內嵌的 base64 影像。
貼到 Jupyter 筆記本中並透過 
參考的影像現在將會在 VS Code 筆記本中如預期般轉譯。
下列 Markdown 原始碼
將會轉譯為
共用筆記本連結
共用子功能表中的複製 vscode.dev 連結命令現在支援筆記本連結。
適用於網頁的 VS Code
設定顯示語言
您現在可以使用 [擴充功能] 檢視中語言套件擴充功能上提供的設定顯示語言按鈕來設定瀏覽器的顯示語言。
設定完成後,您可以使用目前設定的語言套件擴充功能上的清除顯示語言按鈕來清除顯示語言。
擴充功能貢獻
Python
入門體驗
Python 擴充功能逐步解說現在可以順利地將使用者轉換為安裝 Python(如果他們需要),並選取 Python。當未安裝 Python 時,會開啟 Microsoft Store 或適當的逐步解說磚,而使用者可以自動執行顯示的指示。只有在使用者動作需要解譯器時,才會顯示與解譯器相關的任何提示,而不是在啟動時顯示。此外,UI 提示已改進為更精確地說明錯誤和建議的變更。
狀態列中的解譯器資訊
新增了新的設定 python.interpreter.infoVisibility
,其控制何時在狀態列中顯示關於所選解譯器的資訊。依預設,解譯器資訊只會在開啟 Python 相關檔案時顯示 (onPythonRelated
)。可以將其設定為 always
以還原為舊行為,無論開啟什麼檔案,都會顯示所選的解譯器。新增了警告狀態,以指示所選解譯器何時無效
自動偵錯組態
Python 擴充功能現在支援自動偵錯組態,其會分析目前的專案,並為您提供不需要額外修改的偵錯組態。
擴充功能可辨識 Django、Flask 和 FastApi 專案,以及簡單的 Python 檔案。
實驗性擴充功能:WWBD
有一個名為 WWBD 的新實驗性 Python 擴充功能,可作為 Python 環境工作流程構想的沙箱。到目前為止,有一個建立環境命令適用於虛擬環境,以查看單一命令是否可以協助使用者設定新的虛擬環境(請參閱 WWBD 擴充功能頁面以取得完整詳細資料和其他擴充功能)。您可以閱讀專案存放庫中的構想類別,以瞭解正在考慮的其他構想,包括 conda 支援。
Jupyter
將繪圖影像複製到剪貼簿
現在可以在 Jupyter 擴充功能中,將儲存格輸出中的繪圖複製到剪貼簿。請確定您已選取正確的簡報,因為目前僅支援 PNG 輸出
設定正確的簡報類型後,選取右上角的複製到剪貼簿按鈕
網頁擴充功能
下列功能已移植到 Jupyter 擴充功能的網頁版本
- 繪圖檢視器
- 資料框架檢視器
如果您想要試用此功能,請從本機電腦啟動 Jupyter,方法是
jupyter notebook --no-browser --NotebookApp.allow_origin_pat=https://.*\.vscode-cdn\.net
然後使用 vscode.dev 中的命令Jupyter:指定 Jupyter 伺服器以進行連線連線至它。
如需詳細資訊(和評論),請參閱此討論項目。
互動式視窗還原
互動式視窗工作階段現在可以在 VS Code 視窗重新載入時還原,方法是開啟設定 interactiveWindow.restore
。
限制:原始核心狀態不會跨視窗重新載入持續存在(如需更多資訊,請參閱此討論項目)。如果您使用遠端 Jupyter 伺服器,互動式視窗將會在重新載入時連線到先前的核心工作階段。
從 .env 檔案載入環境變數
已對從 .env
檔案載入環境變數進行許多修正,包括偵測對 .env
檔案的變更。Python 核心現在將會從設定 python.envFile
中定義的檔案載入環境變數。
GitHub 提取要求和問題
在 GitHub 提取要求和問題擴充功能方面取得了更多進展,此擴充功能可讓您處理、建立及管理提取要求和問題。此版本的重點包括
- 有一個新的按鈕可以僅顯示自檢視器上次檢閱以來對提取要求的變更。
- 原始檔控制檢視中的新認可與建立提取要求動作可讓您執行 Git 認可,並移至建立 PR 檢視,一步到位。
githubPullRequests.pullRequestDescription
設定可用於設定 PR 描述的來源文字。
查看擴充功能 0.48.0 版本的變更記錄,以查看其他重點。
遠端開發
持續開發 遠端開發擴充功能,其可讓您使用容器、遠端電腦或 適用於 Linux 的 Windows 子系統 (WSL) 作為全功能開發環境。
您可以在遠端開發版本資訊中瞭解新的擴充功能功能和錯誤修正。
預覽功能
編輯器固定捲動
現在可以顯示 UI,以顯示使用者在捲動期間所處的範圍。「固定捲動」UI 將會顯示編輯器頂端所在的類別/介面/命名空間/函式/方法/建構函式,協助您瞭解文件內的位置。使用 editor.experimental.stickyScroll.enabled
設定啟用固定捲動。
<video src="/assets/updates/1_70/sticky-scroll.mp4" autoplay loop controls muted title=""固定捲動" 顯示 TypeScript 檔案的原始碼範圍">
TypeScript 4.8 支援
此更新包含對即將推出的 TypeScript 4.8 版本的支援。請參閱 TypeScript 4.8 迭代計畫,以取得有關 TypeScript 團隊目前正在處理之事項的更多詳細資訊。
若要開始使用 TypeScript 4.8 每晚組建,請安裝 TypeScript Nightly 擴充功能。
設定設定檔
在過去幾個月中,我們一直致力於在 VS Code 中支援設定設定檔,這是社群最受歡迎的要求之一。此功能可在 Insiders 版本中透過 workbench.experimental.settingsProfiles.enabled
設定進行預覽。試用看看,並透過在 VS Code 存放庫中建立問題或在 問題 #116740 中留言,讓我們知道您的意見反應。
在此里程碑中,我們也在適用於網頁的 VS Code 中新增了對設定設定檔的支援。您可以使用 insiders.vscode.dev 和相同的 workbench.experimental.settingsProfiles.enabled
設定來試用。
佈景主題:淺粉紅色
工作重新連線
在視窗重新載入時,監看工作可以透過啟用 task.experimental.reconnection
重新連線,這會在擴充功能變更或 VS Code 版本更新後更快地返回工作。
程式碼動作
我們一直致力於為 VS Code 中的程式碼動作提供更好的體驗。程式碼動作包括重構、來源動作和快速修正。
可以從內容功能表中選取重構或來源動作、從燈泡或透過快速修正開啟新的實驗性程式碼動作控制項。透過 editor.experimental.useCustomCodeActionMenu
設定試用看看。透過在 VS Code 存放庫中建立問題或在 問題 #152913 中留言,讓我們知道任何意見反應。
也可以從新的程式碼動作控制項存取程式碼動作的重構預覽。將滑鼠游標停留在已啟用的項目上方,以檢視如何預覽。自訂鍵盤快速鍵支援選取程式碼動作,以及預覽選取範圍。
在此里程碑中,我們也新增了對程式碼動作自訂鍵盤快速鍵的支援,其中包括快速修正 (⌘. (Windows、Linux Ctrl+.))。您可以透過將下列程式碼片段與您想要的鍵盤快速鍵新增至 keybindings.json
來試用。
[
{
"key": "ctrl+k",
"when": "codeActionMenuVisible",
"command": "focusPreviousCodeAction"
},
{
"key": "ctrl+j",
"when": "codeActionMenuVisible",
"command": "focusNextCodeAction"
}
]
跨適用於網頁和桌面的 VS Code 的編輯工作階段
持續開發編輯工作階段,其可讓您在跨適用於網頁或桌面的 VS Code 繼續處理存放庫時,帶入您未認可的變更。一些重點包括
- 您現在可以在關閉編輯工作階段功能時,從雲端刪除所有儲存的編輯工作階段。
- 現在支援使用 Microsoft 驗證登入。
- 如果您在尋找編輯工作階段時遇到問題,可以使用編輯工作階段:顯示編輯工作階段命令檢視您的所有編輯工作階段。
若要試用編輯工作階段,請在您的設定中設定 workbench.experimental.editSessions.enabled
,並使用編輯工作階段:儲存目前編輯工作階段命令,在提示時使用 GitHub 或 Microsoft 驗證登入。然後在另一部電腦或 VS Code 執行個體上的存放庫中使用編輯工作階段:繼續最新的編輯工作階段命令,以將所有已修改檔案的工作內容還原到您的工作區。您可以隨時使用編輯工作階段:登出命令登出編輯工作階段。
當我們繼續反覆運算編輯工作階段體驗時,請試用看看,並透過在 問題 #141293 中留言,與我們分享您的意見反應。
擴充功能撰寫
'not in' 運算子適用於 'when' 子句
已存在一個運算子適用於 when 子句,即 in
,其允許在另一個具有陣列或物件類型值的內容金鑰內動態查閱內容金鑰的值。我們新增了一個新的運算子 not in
,其會否定此運算子。請參閱 when 子句內容文件以取得詳細資訊。
htmlLanguageParticipants 貢獻點
新的貢獻點 htmlLanguageParticipants
允許類似 HTML 的語言宣告它們想要繼承所有 HTML 語言伺服器功能,例如程式碼完成、hover 和大綱。這對於不想實作完整語言伺服器的程式設計語言擴充功能很有用。
以下範例為內建的 handlebars
擴充功能,現在會將自己加入其 package.json
中的 htmlLanguageParticipants
。
"contributes": {
"htmlLanguageParticipants": [
{
"languageId": "handlebars"
}
]
}
Quarkus
擴充功能已採用此貢獻點。它使用嵌入式 Qute
HTML 範本語言,豐富了 HTML 功能,提供額外的建議。
拖曳至編輯器 API
文字編輯器拖曳 API 讓擴充功能可以處理將檔案或其他內容拖曳至文字編輯器中的操作。這些拖曳事件可能來自 VS Code 內部,例如將檔案從 VS Code 的檔案總管拖曳至文字編輯器,也可能是從您的作業系統將檔案拖曳至 VS Code 而產生。
若要將檔案拖曳至編輯器中,使用者可以按住 kbsytyle(Shift)
鍵並拖曳,然後將檔案放到檔案中的特定位置。此時,您的擴充功能可以選擇如何處理拖曳的資料。
請查看 拖曳至編輯器擴充功能範例
,以了解此 API 的實際運作方式。
建議的 API
每個里程碑版本都會推出新的建議 API,擴充功能作者可以試用這些 API。一如既往,我們希望收到您的意見反應。以下是試用建議 API 的步驟
尋找您想要試用的提案
,並將其名稱新增至package.json#enabledApiProposals
。- 使用最新的
vscode-dts
並執行vscode-dts dev
。它會將對應的d.ts
檔案下載到您的工作區。 - 您現在可以根據提案進行程式設計。
您無法發佈使用建議 API 的擴充功能。下一個版本中可能會出現重大變更,而我們絕不希望破壞現有的擴充功能。
Webview 關聯式選單
新的 webview 關聯式選單提案讓進階 webview
可以輕鬆自訂使用者在 webview 內按一下滑鼠右鍵時顯示的關聯式選單。這個新的貢獻點使用 VS Code 的一般關聯式選單,因此自訂選單與編輯器的其餘部分完美契合。Webview 也可以針對 webview 的不同區段顯示自訂關聯式選單。
若要試用這個新的 API,您需要啟用 contribWebviewContext
提案。
"enabledApiProposals": [
"contribWebviewContext"
]
若要將新的關聯式選單項目新增至您的 webview,請在新的 webview/context
區段下的 menus
中新增一個項目。每個貢獻都包含一個 command
(也是標題的來源)和一個 when
子句。when 子句
應包含 webview == 'YOUR_WEBVIEW_VIEW_TYPE'
,以確保關聯式選單僅適用於您擴充功能的 webview。
"contributes": {
"menus": {
"webview/context": [
{
"command": "catCoding.yarn",
"when": "webview == 'catCoding'"
},
{
"command": "catCoding.insertLion",
"when": "webview == 'catCoding' && webviewSection == 'editor'"
}
]
},
"commands": [
{
"command": "catCoding.yarn",
"title": "Yarn 🧶",
"category": "Cat Coding"
},
{
"command": "catCoding.insertLion",
"title": "Insert 🦁",
"category": "Cat Coding"
},
...
]
}
在 webview 內部,您也可以使用 data-vscode-context
資料屬性
(或在 JavaScript 中使用 dataset.vscodeContext
)來設定 HTML 特定區域的上下文。data-vscode-context
值是一個 JSON 物件,用於指定使用者在元素上按一下滑鼠右鍵時要設定的上下文。最終上下文由從文件根目錄到按一下的元素的路徑決定。
請考慮以下 HTML 範例
<div class="main" data-vscode-context='{"webviewSection": "main", "mouseCount": 4}'>
<h1>Cat Coding</h1>
<textarea data-vscode-context='{"webviewSection": "editor", "preventDefaultContextMenuItems": true}'></textarea>
</div>
如果使用者在 textarea
上按一下滑鼠右鍵,將會設定以下上下文
webviewSection == 'editor'
— 這會覆寫父元素中的webviewSection
。mouseCount == 4
— 這繼承自父元素。preventDefaultContextMenuItems == true
— 這是一個特殊的上下文,會隱藏 VS Code 通常新增至 webview 關聯式選單的複製和貼上項目。
如果使用者在 <textarea>
內部按一下滑鼠右鍵,他們將會看到
檢視大小
檢視大小提案讓擴充功能可以為其貢獻的檢視提供權重
"contributes": {
"views": {
"github-pull-request": [
{
"id": "github:createPullRequest",
"type": "webview",
"name": "Create Pull Request",
"size": 2
},
{
"id": "github:compareChanges",
"name": "Compare Changes",
"size": 1
}
]
}
}
大小的運作方式與 CSS 屬性 flex-grow
類似。在上述範例中,"size": 2
的檢視大小將是 "size": 1
的檢視大小的兩倍。只有當檢視容器由相同的擴充功能貢獻時,才會採用 size 屬性。
可擴充的 HTML 筆記本轉譯器
我們內建的 筆記本轉譯器
現在公開了一個實驗性 API,讓擴充功能可以自訂 HTML 內容的轉譯。這個 API 目前公開了一個單一掛鉤 postRender
,它會在 HTML 內容的初始轉譯之後調用。
若要嘗試使用這個實驗性 API,您的擴充功能 需要擴充
。vscode.builtin-renderer
API
"contributes": {
"notebookRenderer": [
{
"id": "vscode-samples.my-custom-html-extension",
"displayName": "My custom html renderer extension",
"entrypoint": {
"extends": "vscode.builtin-renderer",
"path": "./out/main.js"
}
}
]
}
然後,您的轉譯器可以在 vscode-builtin-renderer
上註冊轉譯掛鉤
import type { RendererContext } from 'vscode-notebook-renderer';
export async function activate(ctx: RendererContext<void>) {
const htmlRenderer = await ctx.getRenderer('vscode.builtin-renderer');
if (!htmlRenderer) {
throw new Error(`Could not load 'vscode.builtin-renderer'`);
}
htmlRenderer.experimental_registerHtmlRenderingHook({
// Invoked after the HTML content for `outputItem` has been rendered to `element`
postRender(outputItem: OutputItem, element: HTMLElement): HTMLElement | undefined {
// You can either modify `element` or return a replacement element
}
});
}
測試這個新的 API,並告訴我們您的想法!
偵錯配接器協定
RunInTerminalRequest 的 argsCanBeInterpretedByShell
RunInTerminalRequest
支援一個新的屬性 argsCanBeInterpretedByShell
,它會告知用戶端命令 args
中的特殊 Shell 字元是否應保持未逸出狀態。這是為了讓使用者可以編寫將在終端機中啟動的啟動設定,並包含應由 Shell 解釋的字元。
工程
Electron 沙箱支援的進度
在這個里程碑版本中,我們在預設啟用 Electron 的 沙箱
方面取得了重大進展。我們計劃在 8 月為 Insiders 啟用沙箱,並最終使其成為 Stable VS Code 中的預設設定。
對於好奇的使用者,在設定中設定 "window.experimental.useSandbox": true
將會啟用沙箱模式。希望您不會注意到任何變化,但如果您發現問題,請回報給我們。
Markdown 語言伺服器
在這個迭代中,我們將 VS Code 大部分用於編寫 Markdown 的工具提取到一個 程式庫
和 語言伺服器
中。這包括我們用於路徑完成、文件大綱和診斷的工具。
VS Code 的內建 Markdown 擴充功能已切換為使用這個新的語言伺服器,雖然希望您不會注意到行為上的任何差異。不過,這種切換應有助於提高效能,因為它將 Markdown 工具移至自己的程序。移至語言伺服器也有助於我們提高實驗性 Markdown 連結診斷的效能。
我們希望其他工具和編輯器也能從這些新的套件中受益,甚至為它們做出貢獻。我們可以一起為所有人建構更好的 Markdown 工具!如果您有興趣,請查看相關專案
Markdown 語言服務
— 一個 TypeScript 程式庫,提供用於處理 Markdown 的工具。Markdown 語言伺服器
— 一個使用語言服務建構的 Markdown語言伺服器
。
Debian 套件相依性
Debian 套件相依性現在由腳本產生,而不是硬式編碼。這解決了 2016 年回報的問題
,其中遺失的相依性會導致程式在某些機器上執行階段當機。
文件和擴充功能
開發容器 CLI
開發容器命令列介面
(CLI) 主題已針對 最新版本
的 CLI 進行更新。開發容器 CLI 可讓您建置和執行開發容器,並且是 開發容器規格
的開放原始碼參考實作
Azure Developer CLI (azd)
Azure Developer CLI
及其互補的 VS Code 擴充功能
現在已公開預覽。Azure Developer CLI (azd) 提供開發人員友善的命令,對應到您工作流程中的關鍵階段:程式碼、建置、部署、監視、重複,從而加速您從本機開發環境到 Azure 的時間。
Azure Developer CLI 使用 可擴充的範本
,其中包含在 Azure 中啟動並執行應用程式所需的一切。範本包含最佳實務、應用程式程式碼和可重複使用的基礎架構即程式碼資產。更重要的是,它們涵蓋了遠遠超出「Hello World!」的端對端情境。
使用 Azure Developer CLI,您可以初始化、佈建和部署應用程式,或者更好的是,使用 'azd up'
一步完成!如需支援的 azd
命令清單,請參閱 開發人員 CLI 參考
。
感謝您
最後但同樣重要的是,非常感謝 VS Code 的貢獻者。
Issue 追蹤
對我們的 Issue 追蹤的貢獻
提取要求
對 vscode
的貢獻
@0evan (Evan Spensley)
:區分測試裝飾標籤PR #155433
@amanasifkhalid (Aman Khalid)
:關閉 #134566:新增終端機索引標籤預設顏色/圖示的設定PR #147463
@angelozerr (Angelo)
:使用自訂語言貢獻 html 語言伺服器。PR #146731
- @babakks (Babak K. Shandiz)
- 🎁 將「Surround with snippet」新增至快速修正選單
PR #152718
- 🔨 修正檔案名稱中帶有句點的 Markdown 診斷問題
PR #153206
- 🎁 將「Surround with snippet」新增至快速修正選單
@Balastrong (Leonardo Montini)
:正確顯示警告訊息PR #154266
@CGNonofr (Loïc Mangeonjean)
:為 Monaco 程式碼動作提供者提供觸發和文件PR #149937
@eamodio (Eric Amodio)
:關閉 #54285 新增 webview/context 貢獻PR #154524
@eltociear (Ikko Ashimine)
:修正 languageDetectionWorkerServiceImpl.ts 中的錯字PR #155923
@fadeevab (Alexander Fadeev)
:為升級後的語法新增 Makefile 測試:逗號、註解、ShebangPR #154625
@FantasqueX (FantasqueX)
:將已棄用的 canceled 取代為 Cancellation Error。PR #156094
- @ferdnyc (Frank Dana)
- RPM:讓 /usr/bin/code 由套件擁有
PR #142907
- 建置 .rpm 套件時移除 fakeroot 包裝函式
PR #153249
- RPM:讓 /usr/bin/code 由套件擁有
@gjsjohnmurray (John Murray)
:嘗試防止以管理員身分執行時更新使用者類型 Windows 安裝 (#_148428)PR #155631
@jbicker (Jan Bicker)
:修正錯誤的 SignatureInformation.activeParameter 註解PR #155279
@jeanp413 (Jean Pierre)
:提案 TerminalExitStatus.reasonPR #152833
@jlelong (Jerome Lelong)
:將單字邊界新增至以字母開頭或結尾的括號組分隔符號PR #151204
@joscol (Joshua Cole)
:允許 CommentNode 同時變更本文文字並進入編輯模式PR #155767
- @jzyrobert (Robert Jin)
- 在檔案總管檢視中新增全部展開按鈕
PR #153614
- 編輯 showFoldingControls 以具有永不設定
PR #153764
- 在檔案總管檢視中新增全部展開按鈕
@liby (Bryan Lee)
:在 TypeScript 中新增對角括號比對和色彩化的支援PR #151705
@mingwiki
:修正 Socks5 Proxy Regex Checking 警告PR #144954
@MonadChains (MonadChains)
:新增複製上次命令輸出的命令 (#_152097)PR #153235
@nirabhromakhal (nirabhromakhal)
:修正狀態列可能會溢位而不影響通知 beak 的問題PR #155649
@PieterBranderhorst
:讓隱藏的摺疊範圍獨立於範圍提供者,新增手動摺疊…PR #139779
- @pingren (Ping)
- 修正 #114461
PR #151824
- 修正包裝索引標籤時的索引標籤位置
PR #156116
- 修正 #114461
@pwxn (Paul Landers)
:新增將編輯器捲動到頂端/底部的命令PR #155861
@qingpeng9802 (Qingpeng Li)
:移除 es5 類別相容性PR #153853
- @r3m0t (Tomer Chachamu)
- 修正展開時未顯示測試錯誤的問題
PR #153994
- 工作區資料夾更新時更新麵包屑導航
PR #154616
- 修正展開時未顯示測試錯誤的問題
@SamirPS (SamirAk)
:程式碼掃描:棄用 CodeQL Action v1PR #156271
- @ssigwart (Stephen Sigwart)
- 修正編輯器區域中的終端機未重新載入的問題
PR #151852
- 修正建議小工具卡住的問題
PR #152011
- 為搜尋編輯器檔案篩選條件新增按鍵繫結
PR #153954
- 偵測具有空格的終端機連結,然後是 line:col
PR #153957
- 修正顯示 webview 後選單快捷鍵無法運作的問題
PR #154648
- 修正編輯器區域中的終端機未重新載入的問題
@SvanT (Svante Boberg)
:新增遺失的處置PR #155976
@yiliang114 (易良)
:修正:錯字PR #155310
對 vscode-generator-code
的貢獻
- @hawkticehurst (Hawk Ticehurst)
@MatejKastak
:chore:統一產生的 package.json 中的縮排PR #357
@nhedger (Nicolas Hedger)
:新增 pnpm 作為套件管理員PR #339
對 vscode-js-debug
的貢獻
@Balastrong (Leonardo Montini)
:再次檢查原生 tostring 是否為 [object *]PR #1339
對 vscode-json-languageservice
的貢獻
@bytemain (Artin)
:feat:支援數字 constPR #141
@octogonz (Pete Gonzalez)
:當 "//" 用於註解時,請勿回報「重複的物件金鑰」PR #144
對 monaco-editor
的貢獻
@alexander-zw (Alexander Wu)
:[webpack readme] 新增如何取得語言/功能PR #3171
@MasterOdin (Matthew Peveler)
:移除 mysql 的重複測試案例PR #3138
@tonilastre (Toni)
:為查詢語言 Cypher 新增設定和語法剖析器PR #3102