現已釋出!閱讀關於 11 月新增功能和修復的內容。

2023 年 1 月 (版本 1.75)

更新 1.75.1:此更新解決了這些問題

下載:Windows:x64 Arm64 | Mac:通用 Intel Apple 晶片 | Linux:deb rpm tarball Arm snap


歡迎使用 Visual Studio Code 2023 年 1 月版。此版本中有許多更新,希望您會喜歡,其中一些主要亮點包括:

如果您想線上閱讀這些發行說明,請訪問 code.visualstudio.com 上的更新頁面。

內測版:想盡快嘗試新功能?您可以下載每晚的內測版構建,並儘快嘗試最新的更新。

內務管理

在以前的版本說明中,團隊報告了我們的整理工作,我們希望在這裡做同樣的事情。

正如我們在 2022 年 11 月宣佈的那樣,我們使用 12 月來整理我們的 GitHub 問題和拉取請求(請參閱我們的問題清理指南)。在我們的所有儲存庫中,我們實現了開放問題和拉取請求的淨減少量為 3637 個。不出所料,減少量的大部分發生在我們的前 5 個儲存庫中:microsoft/vscode (2520)、microsoft/vscode-jupyter (374)、microsoft/vscode-remote-release (278)、microsoft/vscode-python (220) 和 microsoft/vscode-pull-request-github (160)。

輔助功能

差異導航改進

轉到下一個/上一個更改現在有音訊提示來指示某行是插入、刪除還是修改。此外,更改的行被選中,以便螢幕閱讀器可以讀取。

終端輔助功能模式

終端:焦點輔助緩衝區 (⌥F2 (Windows Alt+F2, Linux Shift+Alt+F2)) 命令允許螢幕閱讀器透過鍵盤導航終端緩衝區。

終端輔助功能幫助

與編輯器中的顯示輔助功能幫助命令類似,終端:顯示終端輔助功能幫助 () 命令為螢幕閱讀器使用者提供重要資訊。

Terminal accessibility help is presented on top of the terminal

工作區信任編輯器快捷方式

為了提高工作區信任編輯器的鍵盤輔助功能,您可以使用 工作區:管理工作區信任 開啟它,現在可以使用鍵盤切換當前工作區的信任狀態,使用 Ctrl/Cmd+Enter,或者切換父資料夾的信任狀態,使用 Ctrl/Cmd+Shift+Enter

Workspace Trust Editor showing the trust buttons with their keyboard shortcuts

改進了設定編輯器指示器上的鍵盤導航

對於具有多個指示器的設定(例如“在其他位置修改”指示器和“預設值已更改”指示器),現在使用左右箭頭鍵在指示器之間導航。此更改允許使用者透過按一次 Tab 鍵來退出指示器。

配置檔案

我們很高興地宣佈 配置檔案 功能現已在 VS Code 中正式推出。配置檔案可以包括擴充套件、設定、鍵盤快捷鍵、UI 狀態、任務和使用者程式碼片段。您可以針對不同的開發場景自定義 VS Code,例如資料科學、文件編寫,或者針對多種程式語言(例如 Python 或 Java)。如果您有基於工作流的不同 VS Code 設定(例如“工作”或“演示”),您也可以將它們儲存為不同的配置檔案。您可以同時開啟具有不同配置檔案的多個工作區(資料夾)。

下圖演示了使用針對工作設定自定義的工作配置檔案開啟的資料夾。

Folder opened in Work profile

您還可以匯出和匯入配置檔案,以便與同事、朋友或學生共享,幫助他們開始使用 VS Code。

以下影片演示瞭如何使用 GitHub gist 匯出配置檔案以與他人共享。接收配置檔案連結的使用者可以在Web 版 VS Code 中預覽共享配置檔案,並將其匯入到本地 VS Code 例項中。

Export and share profile

注意:配置檔案目前在遠端場景(例如 GitHub Codespaces)中不起作用,但我們正在努力啟用此功能。您可以在問題 #165247 中跟蹤進度。

工作臺

改進的多檢視調整大小支援

現在可以透過拖動檢視的角落同時調整多個檢視的大小。

改進的網格佈局

如果編輯器已最小化,則在調整整個工作臺或側邊欄大小時,網格將保留該狀態。在下面的短影片中,當整個編輯器區域展開時,右側最小化編輯器的寬度保持不變。

從“自定義佈局”命令還原預設設定

當使用自定義自定義佈局命令時(無論是透過觸發命令還是使用自定義標題欄中的佈局控制元件),您可以使用佈局控制元件右上角的恢復箭頭按鈕還原預設設定

Customize layout control showing the new Restore Defaults button

從面板管理面板對齊方式

現在可以像面板位置一樣,直接從面板上下文選單調整面板對齊方式。

Panel context menu showing the panel alignment submenu

簡化的首選項選單

我們簡化了您的全域性設定的首選項選單,並將選項組織成更合乎邏輯的順序和分組。

Global settings menu showing expanded Themes flyout

樹查詢歷史記錄

樹檢視中的“查詢”控制元件現在支援歷史記錄導航。您可以使用向上/向下箭頭鍵導航以前的搜尋歷史記錄。

樹查詢連續匹配

樹檢視“查詢”控制元件現在支援連續匹配以及現有的“模糊”匹配。在下面的影片中,最初搜尋 "src" 時會匹配到 "resource"。當透過模糊匹配切換按鈕停用“模糊”匹配時,只會突出顯示包含連續文字 "src" 的文字。

按頁滾動列表

一個新的設定 workbench.list.scrollByPage 允許您配置在直接單擊捲軸時列表是否應按頁滾動。

列表型別導航模式

新的 workbench.list.typeNavigationMode 設定允許您配置列表的型別導航模式。預設情況下(設定值 automatic),導航會在您鍵入時在列表和樹中發生。如果您希望僅在某些時間啟用導航,您可以將 typeNavigationMode 設定為 trigger,並且列表僅在執行 list.triggerTypeNavigation 命令後才會進入型別導航模式。

預設情況下,命令 list.triggerTypeNavigation 沒有鍵盤快捷鍵,但您可以新增自己的快捷鍵。例如,如果您想在按下 / 鍵後進入型別導航模式,您可以新增一個快捷鍵,例如

{
  "key": "/",
  "command": "list.toggleKeyboardNavigation",
  "when": "listFocus"
}

開啟大檔案的新確認

為了防止意外開啟非常大的檔案,尤其是在遠端環境中,由於網路傳輸可能產生實際成本,因此在開啟檔案之前會顯示確認。可以透過新的 workbench.editorLargeFileConfirmation 設定修改此限制,並且根據開啟本地檔案與遠端檔案有不同的預設值。

Large file confirmation shown for a 2GB package.json file

檔案觀察器支援 files.watcherExclude glob 模式

files.watcherExclude 設定支援 glob 模式,用於強大的檔案觀察器排除規則。但是,檔案觀察器使用的庫本身並不支援 glob 模式。在此里程碑中,我們貢獻了對排除 glob 模式的支援,以實現更高效的資源使用,尤其是在 Linux 上。

對於 Linux,如果您看到檔案觀察問題,請參閱此 常見問題解答條目 以獲取更多資訊。

鍵盤快捷鍵編輯器改進

顯示貢獻鍵盤快捷鍵的擴充套件

鍵盤快捷鍵編輯器現在在來源列中顯示貢獻快捷鍵的擴充套件。您可以選擇副檔名稱以開啟擴充套件的詳細資訊頁面。

Source column shows extensions contributing keybindings

您還可以使用擴充套件上下文選單中提供的擴充套件鍵盤快捷鍵操作搜尋由擴充套件貢獻的任何鍵盤快捷鍵。

Extension keyboard shortcuts action

顯示 when 子句屬性的上下文鍵建議

鍵盤快捷鍵編輯器現在顯示 when 屬性的上下文鍵建議。您可以使用 Ctrl+Space 快捷鍵觸發建議。

Context key suggestions for when clause property

搜尋帶有和絃的快捷鍵

鍵盤快捷鍵編輯器現在支援搜尋帶有和絃的快捷鍵。例如,"Ctrl+K" 也會顯示所有以 Ctrl+K 作為第一個和絃的快捷鍵。

配置 shell 環境解析超時的設定

一個新的設定 application.shellEnvironmentResolutionTimeout(僅限 macOS 和 Linux)允許您在需要時增加解析 shell 環境的超時時間。預設情況下,VS Code 會等待最多 10 秒鐘來解析環境,但在某些具有更復雜 shell 設定的情況下,這可能不夠時間。

請參閱此 常見問題解答條目,瞭解有關 VS Code 如何解析 shell 環境的更多資訊。

新的 VSCODE_RESOLVING_ENVIRONMENT 環境變數

當 VS Code 正在解析使用者 shell 環境時,它現在將設定一個新的環境變數 VSCODE_RESOLVING_ENVIRONMENT1。這對於需要知道它們是否在解析 shell 環境的上下文中執行的使用者指令碼(例如,在 .bashrc 中)很有用。

更新後更容易選擇退出釋出說明

您現在可以直接從釋出說明編輯器中選擇退出在每次更新後閱讀釋出說明。這將反映並更新 update.showReleaseNotes 設定。

There's a checkbox inside the release notes editor that allows the user to opt out reading release notes after every update

編輯器

建議選擇模式

有一個新設定 (editor.suggest.selectionMode) 允許您配置是否在鍵入時自動選擇建議或透過觸發字元選擇建議。

預設是始終選擇最佳建議,以便按下 EnterTab 插入它。如果您不想選擇建議,請將值設定為 neverwhenQuickSuggestionwhenTriggerCharacter。使用這些設定值時,建議仍會顯示,但不會自動選擇,您可以使用箭頭鍵選擇一個。

請注意,此設定僅適用於自動建議,不適用於您透過 Ctrl+Space 顯式觸發時顯示的建議。

程式碼操作列表現在可以滾動

某些擴充套件會生成很長的程式碼操作列表。如果沒有空間來呈現所有程式碼操作,您現在可以滾動瀏覽列表

顏色裝飾器限制

編輯器中顯示的顏色裝飾器數量限制為 500 個。這是為了防止在開啟包含大量顏色的檔案時出現效能問題。此限制現在可以透過 editor.colorDecoratorsLimit 設定進行配置。

CSS decorators shown in the editor

編輯器查詢轉到匹配項

新的轉到匹配項...命令允許您在開啟查詢控制元件時根據計數跳轉到檔案中的特定匹配項。當您有大量匹配項並想跳轉到特定匹配項時,這很有用。

Go To Match... command

重新設計的行內建議工具欄

在此里程碑中,我們重新設計了行內建議工具欄,使其更緊湊且更易於使用。它具有用於快速迴圈瀏覽替代建議以及完全或逐詞接受建議的按鈕。

在下面的影片中,使用者查看了由 GitHub Copilot 提供的兩個建議(在註釋提示上觸發),然後遞增地接受第一個 console 和下一個單詞 log,形成 console.log

The toolbar features buttons to quickly cycle through alternative suggestions and to accept a suggestion fully or word by word.

設定 "editor.inlineSuggest.showToolbar": "always" 可用於在行內建議可用時始終顯示工具欄。

我們還添加了用於逐詞接受/撤消建議的預設鍵盤快捷鍵 (Ctrl+Arrow Left/Arrow Right)。

終端

新預設鍵盤快捷鍵

添加了以下預設鍵盤快捷鍵,以提高高階終端功能的可發現性

開啟檢測到的連結命令 (⇧⌘O (Windows, Linux Ctrl+Shift+O)) 是開啟終端連結的鍵盤可訪問方式。該命令開啟一個快速選擇框,其中包含終端視口中的所有可用連結。

Ctrl+Shift+O will open a Quick Pick with a categorized list of links found

選擇 ⇧⌘O (Windows, Linux Ctrl+Shift+O) 快捷鍵是因為它與轉到編輯器中的符號操作類似,但適用於終端。

轉到最近目錄 - Ctrl/Cmd+G

轉到最近目錄 (⌘G (Windows, Linux Ctrl+G)) 開啟一個快速選擇框,其中包含最近的目錄,由shell 整合獲取。它支援固定和模糊匹配。

Directories are presented in a Quick Pick, split up by the current and previous sessions.

選擇此快捷鍵是因為 Ctrl+G 是一個使用率相對較低的 shell 快捷鍵。

將 Ctrl+G 傳送到 shell - Ctrl+Alt+G

由於 Ctrl+G 現在用於轉到最近目錄,因此使用 Ctrl+Alt+G 是將 Ctrl+G 直接傳送到 shell 的新方式。

執行最近命令 - Ctrl+Alt+R

執行最近命令 (⌃⌥R (Windows, Linux Ctrl+Alt+R)) 開啟一個快速選擇框,其中包含最近執行的命令,模仿大多數 shell 的反向索引搜尋 (Ctrl+R),但在更易於訪問和功能更強大的包中。它支援固定和模糊匹配。

Commands previously run are split up by current and previous sessions and also pulled in from the shell's history file

選擇快捷鍵 ⌃⌥R (Windows, Linux Ctrl+Alt+R) 是因為它是一種替代 Ctrl+R 的行為,但該快捷鍵太重要了,無法覆蓋其預設行為。

輔助功能模式覆蓋

由於反向索引搜尋對於螢幕閱讀器來說不太易於訪問,當輔助功能模式開啟時,Ctrl+R 將觸發執行最近命令,而 Ctrl+Alt+R 將傳送 Ctrl+R 到 shell。

此版本對終端中的連結檢測進行了許多改進

  • 在某些情況下會檢測包含空格的連結

    • 當整行都是連結時。
    • Python 風格的堆疊跟蹤連結:File "<path>", line <line>
    • 一些編譯器錯誤:<path>(<line>,<col>) : ...
    • 文字的獨立樣式部分都獨立檢測,因此如果路徑帶下劃線,即使有空格也應該被檢測到。
  • 包含 [] 字元的連結現在可以工作,它們甚至支援檢測此類困難的邊緣情況

    Links that end in the ] character will be detected, even when the whole link is wrapped in [ and ]

  • 現在檢測 vscode:// 協議連結。

  • 現在在 Windows 上檢測 /mnt/\\wsl$\\\wsl.localhost\ 連結。

  • OSC 超連結支援在 v1.72 中新增,現在支援這些連結中常用的 file:// 協議(例如 ls --hyperlink)。

  • terminal.integrated.enableFileLinks 設定現在具有一個 "notRemote" 選項,允許它僅在檔案存在檢查可能導致效能問題的遠端上條件停用。

大多數連結格式也始終支援以下行和列格式

  • <file>:<line>
  • <file>:<line>:<column>
  • <file> <line>
  • <file> <line>:<column>
  • <file>(<line>)
  • <file>(<line>,<column>)
  • <file>(<line>, <column>)
  • <file> (<line>)
  • <file> (<line>,<column>)
  • <file> (<line>, <column>)
  • 單引號或無引號也適用於這些
    • "<file>",<line>
    • "<file>",<line>:<column>
    • "<file>", line <line>
    • "<file>", line <line>, col <column>
    • "<file>", line <line>, column <column>
    • "<file>":line <line>
    • "<file>":line <line>, col <column>
    • "<file>":line <line>, column <column>
    • "<file>": line <line>
    • "<file>": line <line>, col <column>
    • "<file>": line <line>, column <column>
    • "<file>" on line <line>
    • "<file>" on line <line>, col <column>
    • "<file>" on line <line>, column <column>

終端編輯器檔案拖放支援

終端編輯器現在支援在按住 Shift 的同時拖放,以將檔案寫入終端而不是開啟編輯器。

Dragging a file into a terminal editor will show 'Hold Shift to drop into editor'

“不安全”配置檔案檢測

由於安全漏洞,最近取消了對 Windows 上 Cygwin shell 的檢測。此版本以更安全的形式重新引入此功能,並檢測更多 shell 配置檔案,包括 Cygwin、Cmder 和 MSYS2。為了減輕安全問題,在使用這些配置檔案之前,必須透過選擇預設配置檔案命令進行配置

Select Default Profile is available via the terminal view dropdown or the Command Palette

The newly detected profiles appear in a "detected" section at the bottom of the Quick Pick

選擇後,在將其新增到 settings.json 檔案並作為常規配置檔案之前,會顯示警告

The notification explains the path is potentially unsafe as it could be modified by another user

如果計算機不被多個使用者使用,例如在公司環境中,可以安全地忽略此警告。

終端檢視中的切換命令

一個長期以來的請求是將清除終端命令新增到終端檢視操作中,但我們一直擔心 UI 臃腫。多虧了一個新的內部功能,我們有新的預設隱藏的操作出現在溢位選單中,但可以透過右鍵單擊來切換顯示

Clear terminal, Run Active File, and Run Selected Text commands are now available in the terminal view's overflow menu

Right-click one of the view actions to toggle which ones are visible and which go into the overflow menu

Windows 上的 Ctrl+C 丟棄選擇

Windows 在複製選擇和向 shell 傳送 SIGINT 之間共享 Ctrl+C,具體取決於是否存在選擇。一個常見的煩惱是,如果您不小心進行了選擇,Ctrl+C 可能不會發送 SIGINT。為了幫助緩解這個問題,用於複製選擇的 Ctrl+C 現在也會清除選擇,因此按兩次 Ctrl+C 將可靠地傳送 SIGINT 1 次或 2 次。

新增終端製表位大小設定

有一個新設定 terminal.integrated.tabStopWidth,用於配置終端的製表位寬度。當程式輸出 \t 字元而不是在其配置中配置製表符大小時,這很有用。

Powerline 三角形和對角線自定義字形

GPU 加速的終端現在可以獲得用於三角形和對角線 Powerline 額外符號字形 (U+E0B8-U+E0BF) 的畫素完美自定義字形。這些字元是單寬還是雙寬字元不明確,並且根據使用的字型而有所不同,因此我們選擇將它們渲染為單寬。

之前

Triangles and diagonal line previously could display with bad anti-aliasing and odd borders

之後

Triangles and diagonal line glyphs are drawn pixel perfect

在“在活動終端中執行選定文字”中使用帶括號的貼上模式

在活動終端中執行選定文字命令現在將在支援的 shell 中使用“帶括號的貼上模式”執行文字,因此多行選擇將被視為單個輸入,而不是多個命令。這使得執行實際指令碼更加直觀,錯誤更少。

之前

Previously, running two echo statements would be run one after the one with 2 separate prompts

之後

Running two echo statements will now run in a single prompt

Pwsh Preview 反饋提供程式的快速修復

PowerShell Preview 最近實現了新的可插拔反饋提供程式系統,允許在命令失敗時列印建議

Running 'gcc' in pwsh preview will present 3 suggestions, which VS Code will present as Quick Fixes

終端現在從 [General][cmd-not-found] 反饋提供程式中提取快速修復。可以透過單擊燈泡或透過 Ctrl/Cmd+. 開啟快速修復對話方塊。

原始碼管理

新命令

Git 2.35 引入了 git stash 命令的新 --staged 模式。這種新模式允許您輕鬆地僅暫存已暫存的更改。如果您有支援這種新模式的 Git 版本,您可以使用新的Git:暫存已暫存命令來利用它。

VS Code 已經支援使用Git:刪除標籤命令刪除本地標籤。此里程碑中,我們啟用了使用新的Git:刪除遠端標籤命令刪除遠端標籤。

父資料夾中的 Git 儲存庫

VS Code 使用 git rev-parse --show-toplevel 來確定 Git 儲存庫的根目錄。在大多數情況下,Git 儲存庫的根目錄位於工作區內,但在某些情況下,Git 儲存庫的根目錄位於工作區或開啟檔案(s)的父資料夾中。雖然在工作區或開啟檔案(s)的父資料夾中開啟 Git 儲存庫對於高階使用者來說是一個很棒的功能,但對於新使用者來說可能會造成混淆。我們看到過這種情況,這種混淆導致丟棄來自這些 Git 儲存庫的更改,從而導致資料丟失。

為了避免混淆並降低資料丟失的風險,從此里程碑開始,VS Code 將在“原始碼管理”檢視中顯示通知和新的歡迎檢視,並且不會自動從工作區或開啟檔案(s)的父資料夾中開啟 Git 儲存庫。

Notification that there is a Git repository in parent folders

主題:Dark+ V2MacOS Modern 產品圖示

開啟儲存庫按鈕將開啟一個快速選擇框,其中包含在工作區或開啟檔案(s)的父資料夾中發現的所有 Git 儲存庫的列表。從父資料夾中開啟 Git 儲存庫的選擇會被記住。

使用者可以使用 git.openRepositoryInParentFolders 設定控制如何處理來自父資料夾的 Git 儲存庫。希望恢復舊行為的使用者可以將 git.openRepositoryInParentFolders 設定為 always

命令停用

根據 Git 儲存庫的大小或各種 Git 鉤子的存在,某些 Git 操作可能需要很長時間才能完成。我們過去看到過,在前一個命令仍在進行時啟動命令可能會導致意外結果(例如,在提交操作進行時丟棄檔案上的更改)。

為了防止這種情況,我們會在以下操作進行時停用大多數 Git 命令:CheckoutCommitPushPull。這意味著在這些操作執行時,大多數 Git 命令將不會出現在命令面板中,並且會在“原始碼管理”檢視和狀態列中停用。

使用者介面改進

此里程碑中,我們完善了“原始碼管理”使用者介面的某些元素

  • “原始碼管理”檢視中提交釋出分支操作按鈕的工具提示現在包含分支名稱。
  • 簽出狀態列專案現在根據簽出的引用型別(分支、標籤或提交)使用不同的圖示。
  • 簽出狀態列專案現在在簽出操作進行時顯示旋轉進度圖示。

Notebook

核心選擇器改進

我們繼續改進 MRU(最近使用)核心選擇器。可以透過將 notebook.kernelPicker.type 設定為 mru 來啟用它。未使用的核心將移至輔助選擇器選擇另一個核心...。當您安裝了最新的 JupyterPython 擴充套件時,此選擇器將按來源(例如:Jupyter 核心、Python 環境等)對所有核心進行分組。

Notebook Kernel Picker

合併選定單元格

有一個新命令合併選定單元格 (kb(notebook.cell.joinSelected)`) 用於將多個選定的單元格合併為一個單元格。

Join Selected Cells command

將輸出回退渲染為支援的 mimetype

Jupyter Notebook 中的富輸出(例如 IPyWidgets)僅在核心的生命週期內可見。這意味著當筆記本關閉並重新開啟時,輸出不再可見。但是,在許多這些情況下,可以使用回退機制渲染輸出。例如,IPyWidget 在某些情況下(取決於所使用的 widget)可以渲染為靜態影像或 HTML 內容。

因此,開啟帶有 matplotlib widget(或類似 widget)的現有筆記本的使用者現在可以看到輸出,而無需重新執行程式碼。

Notebook Renderer fallback

新文件

有兩個新主題可幫助您在 VS Code 中使用 Jupyter Notebook。

除錯

JavaScript 除錯

改進的 Node.js 啟動效能

用於 Node.js 除錯的“斷點預測器”已被重寫和改進,以顯著提高大型專案的速度。例如,在 TypeScript 儲存庫中除錯單元測試時的啟動時間開銷減少了 62%,在 VS Code 儲存庫中除錯和啟動構建的開銷減少了 80%。

如果您遇到斷點未命中等問題,請提交問題。您可以透過在 launch.json 中設定 "enableTurboSourcemaps": false 來停用新行為,但是隨著我們獲得信心,此選項最終將被刪除。

語言

JavaScript React 語言標籤現在是 JavaScript JSX

JavaScript React 語言模式已重新命名為 JavaScript JSX,以反映 JSX 語法不僅僅用於 React。TypeScript React 也已重新命名為 TypeScript JSX

請注意,只更改了 UI 中顯示的語言名稱。內部語言 ID (javascriptreacttypescriptreact) 保持不變,以確保相容性。

新的 shellscript 語法

VS Code 現在使用來自 better-shell-syntax 的新語法進行 shellscript 語法高亮顯示。

擴充套件

VS Marketplace 擴充套件簽名

從 2022 年 11 月開始上傳到 Visual Studio Marketplace 的每個擴充套件都由 VS Marketplace 進行程式碼簽名。當用戶透過 VS Code 的“擴充套件”檢視安裝簽名擴充套件時,VS Code 將驗證簽名,從而證明該擴充套件確實來自 VS Marketplace,並且擴充套件包未被修改。如果簽名驗證失敗,VS Code 將不會安裝該擴充套件。

VS Marketplace 正在為所有現有擴充套件簽名(包括自 11 月以來未更新的擴充套件)。一旦此過程完成(在幾個月內),VS Code 將要求所有來自 VS Marketplace 的擴充套件都經過 VS Marketplace 簽名。此要求將保證來自 VS Marketplace 的每個包的完整性,從而提高我們的擴充套件生態系統的整體安全性。

注意:擴充套件作者無需執行任何操作即可選擇加入 Marketplace 簽名。除了 Marketplace 簽名之外,我們目前正在研究釋出者簽名。有關釋出者簽名的更多資訊,請參閱討論 #137

從 CLI 固定擴充套件版本

當您從 CLI 安裝特定版本的擴充套件時(code --install-extension {publisher}.{name}@{version}),它現在將固定到該版本。這意味著當您啟用自動更新時,擴充套件將不會自動更新。

同步固定擴充套件版本

設定同步現在將同步固定的擴充套件版本。這意味著當您在一臺機器上安裝特定版本的擴充套件時,它將固定到您同步到的所有其他機器上的該版本。

對擴充套件的貢獻

Python

從已啟用的終端啟動 VS Code 時自動選擇環境

如果使用者透過已啟用 conda 或虛擬環境的終端啟動 VS Code,Python 擴充套件現在會檢測到這一點,然後自動選擇環境本身,或者詢問使用者是否希望將該環境作為他們選擇的環境;具體取決於環境。

建立環境時選擇 requirements 檔案

使用Python:建立環境命令建立虛擬環境時,Python 擴充套件現在會在工作區資料夾中查詢 requirements 檔案,並允許使用者多選要安裝的任意數量的 requirements。

從 pyproject.toml 選擇可選依賴項

Python 擴充套件會檢測並載入 pyproject.toml 檔案中 [project.optional-dependencies] 部分提供的可選依賴項。如果我們檢測到工作區包含 pyproject.toml 以及任何選定的可選依賴項,我們使用 pip 可編輯安裝命令。

Pylance 自動縮排

當為 Python 檔案啟用 editor.formatOnType 設定時,Pylance 會在鍵入時自動縮排程式碼,讓您可以更專注於程式碼邏輯,而不是格式化。

要試用它,請透過將以下內容新增到使用者 settings.json 檔案中來為 Python 檔案啟用 formatOnType

 "[python]": {
        "editor.formatOnType": true,
    },

即時預覽

外部瀏覽器預覽設定

Live Preview 擴充套件現在允許您在預設瀏覽器以外的瀏覽器中開啟外部瀏覽器預覽。使用 livePreview.customExternalBrowser 設定,您可以將外部預覽設定為在以下位置開啟

  • Microsoft Edge
  • Google Chrome
  • Mozilla Firefox
  • 您的預設瀏覽器

Live Preview Custom External Browser setting

伺服器根設定

您現在可以將伺服器的根路徑設定為工作區中的子資料夾。例如,您可以透過將 livePreview.serverRoot 設定為 "src" 來要求 Live Preview 從工作區中的 src 資料夾提供檔案。

ESLint

ESLint 擴充套件已更新到版本 2.4.0。主要新功能包括

  • 支援新的實驗性平面配置檔案。您需要使用設定 eslint.experimental.useFlatConfig 在 VS Code 中單獨啟用支援。需要 ESLint 版本 8.21 或更高版本。

  • ESLint 狀態指示器移至 VS Code 的語言狀態區域。因此,刪除了設定 eslint.alwaysShowStatus。請改用 VS Code 的固定功能。

    ESLint language status

    語言狀態項現在會在儲存期間計算程式碼修復時通知您驗證時間過慢和 ESLint 執行時間過長。可用時間預算(以毫秒為單位)可以透過兩個設定 eslint.timeBudget.onValidationeslint.timeBudget.onFixes 進行控制。

  • 可以使用新設定 eslint.problems.shortenToSingleLine 將長問題波浪線縮短為單行。

GitHub 拉取請求和議題

GitHub 拉取請求和問題擴充套件取得了更多進展,該擴充套件允許您處理、建立和管理拉取請求和問題。亮點包括

  • 支援建議和接受更改。
  • 註釋中的 GitHub 控制代碼現在已連結。
  • 可以在建立時將標籤新增到 PR。
  • 實驗性設定 githubPullRequests.experimental.quickDiff 將在編輯器裝訂線中顯示簽出 PR 中更改行的快速差異檢視。

檢視擴充套件的 0.58.0 版本更新日誌以檢視其他亮點。

GitHub Copilot

GitHub Copilot 擴充套件是一個由 AI 提供支援的程式碼補全工具,可幫助您更快、更智慧地編寫程式碼。您可以使用 VS Code 中的 Copilot 擴充套件來生成程式碼,或從它生成的程式碼中學習。

GitHub Copilot 透過行內建議 UI 整合到 VS Code 編輯器中,讓您可以檢視各種建議並輕鬆接受全部或部分生成的程式碼。

GitHub Copilot 現在正式面向企業推出,具有許可證管理、組織範圍的策略控制和隱私保護等功能。您可以在GitHub Copilot for Business 公告中瞭解更多資訊。

要開始使用,您可以在 GitHub Copilot 網站上註冊免費試用。

我們還在 VS Code 文件中添加了新的 VS Code 中的 GitHub Copilot 主題,幫助您開始使用 Copilot。

遠端開發

遠端開發擴充套件允許您將容器、遠端機器或適用於 Linux 的 Windows 子系統 (WSL) 用作功能齊全的開發環境。此版本的亮點包括:

  • Dev Container 支援多個 devcontainers.json 檔案。
  • Docker 憑據轉發。
  • X11 和 Wayland 轉發

您可以在遠端開發釋出說明中瞭解有關新擴充套件功能和錯誤修復的資訊。

遠端隧道

防止休眠

遠端隧道現在可以防止計算機在 Windows、macOS 和基於 systemd 的 Linux 系統上進入休眠狀態。如果您離開桌面遠端工作並希望確保隧道保持可訪問性,這非常有用。要使用此功能

  • 從 VS Code UI 開啟“遠端隧道訪問”時,將設定 remote.tunnels.access.preventSleep 更新為 true
  • 在 CLI 上使用 code tunnel 時,傳入 --no-sleep 標誌。

可靠性改進

遠端隧道中的幾個連線相關問題已修復,這應該會提高可靠性。

繼續工作

“繼續工作”功能支援在本地視窗中從 Git 儲存庫開始,並在遠端視窗中繼續,例如 GitHub Codespace。如果您位於尚未釋出到遠端的分支上,當您選擇在不同的開發環境中繼續工作時,現在會自動提示您釋出當前分支,以便您可以在其他地方訪問完整的分支上下文。

此外,當您位於遠端視窗中的 Git 儲存庫上時,您現在可以使用繼續在新的本地克隆中工作命令在 VS Code 桌面上的新本地 Git 克隆中繼續工作。

最後,所有在本地、遠端或 Web 視窗中繼續工作的選項現在都方便地顯示在遠端指示器中。這些選項也可在命令面板中找到。

Continue Working On actions now available in the remote indicator

預覽功能

Dark+ V2 和 Light+ V2 實驗性主題

現在可以使用兩個新的顏色主題:Dark+ V2 和 Light+ V2。這些主題是現有 Dark+ 和 Light+ 主題的演變,旨在提高可訪問性,並使 VS Code 看起來比以往更好!這些主題仍標記為實驗性,我們正在尋求早期反饋。

Dark+ V2 and Light+ V2 experimental themes

您可以在“顏色主題”選擇器(首選項:顏色主題 ⌘K ⌘T (Windows, Linux Ctrl+K Ctrl+T))中找到名為Light+ V2 (Experimental)Dark+ V2 (Experimental) 的新主題。

TypeScript 5.0 支援

此更新包括對即將釋出的 TypeScript 5.0 版本的支援。有關 TypeScript 團隊目前正在進行的工作的更多詳細資訊,請參閱 TypeScript 5.0 迭代計劃。一些編輯器工具亮點

  • 新的 switchcase 補全功能可幫助您更快地填寫 switch 語句的兩個部分。
  • 正在努力在 github.devvscode.dev 上啟用專案範圍的 IntelliSense。

要開始使用 TypeScript 5.0 每晚版本,請安裝 TypeScript Nightly 擴充套件。

命令面板中的“常用”部分

此里程碑中,我們在命令面板中添加了一個新的“常用”部分。此部分的目標是幫助新使用者更好地瞭解命令面板的用途和功能。

commonly used section in the Command Palette

主題:熊貓主題(在 vscode.dev 上預覽)

此部分將顯示在“最近使用”部分下方,以免破壞肌肉記憶,並且隨著您執行越來越多的命令並熟悉 VS Code,此部分要麼消失(因為“常用”命令向上移動到“最近使用”),要麼在摺疊下方看不見。

commonly used section with recently used commands

主題:熊貓主題(在 vscode.dev 上預覽)

目前,我們將這種新體驗放在設定 workbench.commandPalette.experimental.suggestCommands 之後,但我們計劃在不久的將來使其成為預設行為。讓我們知道您的想法!

擴充套件創作

評論執行緒狀態

CommentThread state API 已最終確定。此 API 控制評論是渲染為已解決還是未解決,並可能影響“評論”檢視中的過濾。您可以在問題 #127473中瞭解有關如何使用此 API 的更多資訊。

忽略要同步的設定

您現在可以在註冊設定時使用 ignoreSync 屬性預設將設定隱藏在“設定同步”中。這對於不打算跨機器同步的設定很有用。

遙測

新的 TelemetryLogger API 已最終確定。此 API 旨在使擴充套件作者更容易使用遙測,並對終端使用者更安全。此 API 啟用了內建的機密清理、遙測輸出通道、錯誤處理程式和自動遙測級別管理等功能。這應該會帶來更具凝聚力的遙測體驗,並保證符合我們的要求。

提議的 API

每個里程碑都會帶來新的提議 API,擴充套件作者可以嘗試這些 API。一如既往,我們希望得到您的反饋。以下是嘗試提議 API 的步驟

  1. 查詢您要嘗試的提議並將其名稱新增到 package.json#enabledApiProposals
  2. 使用最新的vscode-dts並執行vscode-dts dev。它會將相應的d.ts檔案下載到您的工作區中。
  3. 您現在可以根據該提議進行程式設計。

您不能釋出使用提議 API 的擴充套件。下個版本中可能會有破壞性更改,我們絕不希望破壞現有擴充套件。

允許筆記本渲染器回退到不同的 mimetype

有時在渲染內容時,筆記本渲染器可能會意識到它無法正確渲染該專案。例如,渲染器可能要求核心處於某種狀態。

以前對於這種情況,渲染器唯一的選擇是渲染錯誤訊息。我們添加了一個新的擬議 API,允許渲染器丟擲一個特殊命名的錯誤,導致 VS Code 靜默回退以渲染儲存在筆記本輸出專案上的其他資料。例如,互動式圖表渲染器可以丟擲此錯誤,使 VS Code 回退並渲染儲存在當前輸出專案上的影像資料。

要觸發此回退,請在 renderOutputItem 中丟擲名為 vscode.fallbackToNextRenderer 的錯誤

throw new class extends Error {
    override name = 'vscode.fallbackToNextRenderer';
}();

這個特殊錯誤僅適用於在某些情況下預期渲染會失敗的情況。如果您的渲染器遇到意外錯誤,它應該繼續顯示錯誤訊息。

快速差異

快速差異,即編輯器中新增、更改和刪除行上顯示的裝訂線裝飾,目前僅可由 SCM 提供程式使用。擬議的快速差異 API 允許在 SCM 提供程式之外使用快速差異。以下示例來自 GitHub Pull Request 擴充套件,它使用快速差異 API 顯示 PR 中更改行的快速差異

vscode.window.registerQuickDiffProvider(
  { scheme: 'file' },
  {
    provideOriginalResource: (uri: vscode.Uri) => {
      const changeNode = this.reviewModel.localFileChanges.find(
        changeNode => changeNode.changeModel.filePath.toString() === uri.toString()
      );
      if (changeNode) {
        return changeNode.changeModel.parentFilePath;
      }
    }
  },
  'GitHub Pull Request',
  this.repository.rootUri
);

完整的提案在 quickDiffProvider.d.ts 中。

連續測試執行

連續測試執行允許測試擴充套件指示它們能夠在發生更改時觀察和重新執行測試。支援此 API 的方法是在測試執行配置檔案上指示支援...

const profile = controller.createRunProfile('Run', TestRunProfileKind.Run, runHandler);
+profile.supportsContinuousRun = true;

然後在 runHandler 中檢查它

const runHandler = (request: TestRunRequest, token: CancellationToken) => {
+   if (request.continuous) {
+       return watchForFileChangesThenRunTests(request, token);
+   }
}

完整的提案在 testContinuousRun.d.ts 中。

工程

擴充套件主機實用程式程序

擴充套件主機使用實用程式程序是程序沙盒所必需的,現在預設啟用。仍然有一個設定 (extensions.experimental.useUtilityProcess),我們很快就會將其刪除。

透過命令列進行效能測試

我們引入了以下 node 模組來從命令列執行一組效能測試。

vscode-bisect - 此模組可幫助我們快速測量效能迴歸。執行 npx vscode-bisect --help 瞭解如何操作此工具。

vscode-perf - 此模組可幫助我們測量 VS Code 的效能。npx vscode-perf --help 描述瞭如何操作此工具。

GB18030 認證

VS Code 現已透過 GB18030 認證 - 這意味著中國政府的認證委員會已確認 VS Code 可以正確表示所有中文漢字。測試涵蓋了所有內建使用場景。隨著 VS Code 獲得認證,核心 Visual Studio 系列(包括 Visual Studio 和 Visual Studio for Mac)已透過 GB18030 認證。

遷移到 ESM

我們已經開始將我們的程式碼庫遷移到 ESM。VS Code 專案早於原生模組 (ESM),我們一直在使用非同步模組系統 (AMD)。AMD 對我們很有用,但現在是時候繼續前進了。我們已經開始將我們的程式碼庫遷移到 ESM,我們正在取得良好進展,並希望在接下來的幾個月內完成這項工作。

macOS 10.11 和 10.12 的 EOL 警告

VS Code 桌面將在接下來的幾個里程碑中更新到 Electron 22。隨著 Electron 22 的更新,VS Code 桌面將不再在 OS X El CapitanmacOS Sierra 上執行。在此里程碑中,我們為這些受影響平臺上的使用者添加了棄用通知,以讓他們準備遷移。如果您是上述作業系統版本的使用者,請檢視我們的 常見問題解答以獲取更多資訊。

改進了系統和應用程式語言變數的使用

在以前的版本中,我們開始將應用程式語言傳遞給 Electron,以便它可以正確佈置一些元件,例如視窗控制元件疊加層 (WCO)。同時,語言推薦器依賴於系統語言,但 app.getLocale() 開始獲取應用程式語言而不是系統語言,因此我們使用較新的 app.getPreferredSystemLanguages() Electron API 來檢索用於語言推薦器的系統語言。結果,發生了一個迴歸,擴充套件檢視中的擴充套件無法渲染,因為新 API 返回了一些 toLocaleString() 無法解析的值。

我們為恢復版本推出的即時解決方案是恢復使用 app.getLocale() 並暫時中斷語言推薦,但事實證明,程式碼庫中的許多區域也應該使用應用程式語言變數而不是系統語言變數。

此版本將許多系統語言用法替換為應用程式語言。反過來,日期現在應該以與應用程式語言一致的格式而不是系統語言的格式本地化。

值得注意的修復

  • 99878 在 macOS 上使用 environmentVariableCollection 預置 PATH 環境變數不起作用
  • 153786 有一個命令可以開啟差異編輯器的任意一側
  • 165123 允許開啟帶有兩個無標題側邊的差異編輯器
  • 167004 輸出:顯示輸出通道 顯示輸出通道的命令
  • 167528 重新載入視窗後,擴充套件輸出通道的日誌級別仍然存在

感謝

最後但同樣重要的是,向 VS Code 的貢獻者們致以衷心的感謝

問題跟蹤

對我們問題跟蹤的貢獻

拉取請求

vscode 的貢獻

vscode-css-languageservice 的貢獻

vscode-hexeditor 的貢獻

vscode-json-languageservice 的貢獻

vscode-languageserver-node 的貢獻

vscode-pull-request-github 的貢獻

debug-adapter-protocol 的貢獻

monaco-editor 的貢獻

© . This site is unofficial and not affiliated with Microsoft.