🚀 在 VS Code 中

2023 年 1 月 (版本 1.75)

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

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


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

如果您想在線上閱讀這些版本發行說明,請前往 更新,網址為 code.visualstudio.com

Insiders: 想要盡快試用新功能嗎?您可以下載每晚 Insiders 組建,並在最新更新可用時立即試用。

內務處理

在先前的版本發行說明中,團隊報告了我們的內務處理工作,我們也想在此處進行相同的報告。

正如我們在 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)。

協助工具

Diff 導航改進

跳到下一個/上一個變更 現在具有音訊提示,以指示是否插入、刪除或修改了行。此外,變更的行會被選取,以便螢幕閱讀器可以讀取。

終端機協助工具模式

終端機:焦點放在協助工具緩衝區 (⌥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 匯出設定檔,以便與他人分享。收到設定檔連結的使用者可以在 VS Code for the Web 中預覽共用的設定檔,並將其匯入到他們的本地 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,如果您看到檔案監視問題,請參考此 FAQ 條目 以獲取更多資訊。

鍵盤快速鍵編輯器改進

顯示貢獻快速鍵的擴充功能

鍵盤快速鍵編輯器現在在 來源 欄中顯示貢獻快速鍵的擴充功能。您可以選取擴充功能名稱以開啟擴充功能的詳細資訊頁面。

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 設定,這可能不夠時間。

參考此 FAQ 條目 以獲取有關 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 和下一個單字 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+向左/向右箭頭)。

終端機

新的預設快速鍵

已添加以下預設快速鍵,以提高進階終端機功能的發現性

開啟偵測到的連結 命令 (⇧⌘G (Windows, Linux Ctrl+Shift+G)) 是以鍵盤存取方式開啟終端機連結的方法。該命令會開啟一個快速選取,其中包含終端機視窗中所有可用的連結。

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

之所以選擇 ⇧⌘G (Windows, Linux Ctrl+Shift+G) 快速鍵,是因為它與 跳到編輯器中的符號 的動作類似,但適用於終端機。

跳到最近的目錄 - 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/Cmd+Alt+G

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

執行最近的命令 - Ctrl/Cmd+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

Ctrl+C 在 Windows 上放棄選取

Windows 在複製選取和將 SIGINT 發送到 shell 之間共享 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 預覽回饋提供者的快速修復

PowerShell 預覽最近實作了一個新的 可插拔回饋提供者系統,該系統允許在命令失敗時列印建議

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.35git stash 命令引入了新的 --staged 模式。這種新模式允許您輕鬆地僅暫存已預備的變更。如果您有支援此新模式的 Git 版本,則可以使用新的 Git:暫存已預備 命令來利用它。

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

父資料夾中的 Git 儲存庫

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

為了避免混淆並降低資料丟失的風險,從這個里程碑開始,VS Code 將在「原始碼控制」視圖中顯示通知和新的歡迎視圖,並且不會自動從工作區和已開啟檔案的父資料夾中開啟 Git 儲存庫。

Notification that there is a Git repository in parent folders

主題:Dark+ V2,搭配 MacOS Modern 產品圖示

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

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

命令停用

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

為了防止這種情況,我們在以下操作正在進行時停用大多數 Git 命令:簽出提交推送拉取。這意味著在這些操作運行時,大多數 Git 命令將不會出現在命令面板中,並且將在「原始碼控制」視圖和狀態列中停用。

使用者介面改進

在這個里程碑中,我們潤飾了一些「原始碼控制」使用者介面元素

  • 「原始碼控制」視圖中 提交發布分支 動作按鈕的工具提示現在包含分支名稱。
  • 簽出 狀態列項目現在根據簽出的 ref 類型(分支、標籤或提交)使用不同的圖示。
  • 簽出 狀態列項目現在在簽出操作正在進行時顯示旋轉的進度圖示。

筆記本

核心選取器改進

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

Notebook Kernel Picker

加入選取的儲存格

有一個新的命令 加入選取的儲存格 (kb(notebook.cell.joinSelected)`),用於將多個選取的儲存格合併為一個儲存格。

Join Selected Cells command

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

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

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

Notebook Renderer fallback

新文件

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

除錯

JavaScript 除錯

改善 Node.js 啟動效能

用於 Node.js 除錯的「中斷點預測器」已重新編寫和改進,可大幅提高大型專案的速度。例如,在 TypeScript repo 中除錯單元測試時,啟動時間的額外負擔減少了 62%,而在 VS Code repo 中除錯和啟動建置的額外負擔減少了 80%。

如果您遇到諸如中斷點未命中的問題,請提交 issue。您可以透過在 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 擴充功能現在會在工作區資料夾中尋找 requirement 檔案,並允許使用者多重選取任意數量的 requirement 檔案以進行安裝。

從 pyproject.toml 選取選用相依性

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

Pylance 的自動縮排

當為 Python 檔案啟用 editor.formatOnType 設定時,Pylance 將在輸入程式碼時自動縮排程式碼,讓您可以更專注於程式碼的邏輯,而減少關注格式。

若要試用,請透過將以下內容新增至您的使用者 settings.json 檔案,為 Python 檔案啟用 formatOnType

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

即時預覽

外部瀏覽器預覽設定

即時預覽擴充功能現在可讓您在預設瀏覽器以外的瀏覽器中開啟外部瀏覽器預覽。使用 livePreview.customExternalBrowser 設定,您可以將外部預覽設定為在以下瀏覽器中開啟

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

Live Preview Custom External Browser setting

伺服器根目錄設定

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

ESLint

ESLint 擴充功能已更新至 2.4.0 版。主要新功能如下

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

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

    ESLint language status

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

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

GitHub Pull Requests 和 Issues

GitHub Pull Requests 和 Issues 擴充功能上取得了更多進展,該擴充功能可讓您處理、建立和管理 pull request 和 issue。重點包括

  • 支援建議和接受變更。
  • 註解中的 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。

遠端開發

遠端開發擴充功能,可讓您使用容器、遠端機器或 Windows Subsystem for Linux (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) 中繼續。如果您在尚未發佈到遠端的 branch 上,當您選擇在不同的開發環境中繼續工作時,現在將自動提示您發佈目前的 branch,以便您可以在其他地方存取完整的 branch 內容。

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

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

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

您可以在佈景主題選取器中找到新的佈景主題,它們列為Light+ V2 (Experimental)Dark+ V2 (Experimental) (偏好設定:色彩佈景主題 ⌘K ⌘T (Windows、Linux Ctrl+K Ctrl+T))。

TypeScript 5.0 支援

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

  • 新的 switchcase 完成功能可協助您更快速地填寫 switch 陳述式的兩個區段。
  • github.devvscode.dev 上啟用專案範圍的 IntelliSense 的工作。

若要開始使用 TypeScript 5.0 每夜建置版本,請安裝 TypeScript Nightly 擴充功能。

命令面板中的「常用」區段

在此里程碑中,我們在命令面板中新增了一個新的「常用」區段。此區段的目標是協助新使用者更好地了解命令面板的用途及其功能。

commonly used section in the Command Palette

佈景主題:Panda Theme (在 vscode.dev 上預覽)

此區段將顯示在「最近使用」區段下方,因此不會破壞肌肉記憶,並且隨著您執行越來越多的命令並熟悉 VS Code,該區段會消失 (因為「常用」命令會移至「最近使用」) 或該區段位於下方且超出視線範圍。

commonly used section with recently used commands

佈景主題:Panda Theme (在 vscode.dev 上預覽)

目前,我們已將此新體驗放在設定 workbench.commandPalette.experimental.suggestCommands 後面,但我們計劃在不久的將來使其成為預設行為。請告訴我們您的想法!

擴充功能撰寫

註解執行緒狀態

CommentThread state API 已定案。此 API 控制註解是否呈現為已解決或未解決,並可能影響註解檢視中的篩選。您可以在 issue #127473 中了解有關如何使用 API 的更多資訊。

忽略要同步的設定

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

遙測

新的 TelemetryLogger API 已定案。此 API 旨在讓擴充功能作者更輕鬆地使用遙測,並對終端使用者更安全。API 啟用諸如內建密碼清理、遙測輸出通道、錯誤處理常式和自動遙測層級管理等功能。這應可產生更具凝聚力的遙測體驗,並保證符合我們的要求。

建議的 API

每個里程碑都附帶新的建議 API,擴充功能作者可以試用它們。與往常一樣,我們希望收到您的回饋。以下是試用建議 API 的步驟

  1. 尋找您要試用的提案,並將其名稱新增至 package.json#enabledApiProposals
  2. 使用最新的 vscode-dts 並執行 vscode-dts dev。它會將對應的 d.ts 檔案下載到您的工作區中。
  3. 您現在可以針對提案進行程式設計。

您無法發佈使用建議 API 的擴充功能。下一個版本中可能會出現重大變更,而我們絕不希望破壞現有的擴充功能。

讓 notebook 轉譯器回退到不同的 mimetype

有時在轉譯內容時,notebook 轉譯器可能會意識到它無法正確轉譯項目。例如,轉譯器可能要求 kernel 處於特定狀態。

先前對於這種情況,轉譯器的唯一選項是轉譯錯誤訊息。我們新增了一個新的建議 API,讓轉譯器可以擲回一個特殊命名的錯誤,導致 VS Code 靜默回退到轉譯 notebook 輸出項目上儲存的其他資料。例如,互動式圖表轉譯器可以擲回此錯誤,使 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 desktop 將在接下來的幾個里程碑中更新到 Electron 22。透過 Electron 22 更新,VS Code desktop 將不再在 OS X El CapitanmacOS Sierra 上執行。在此里程碑中,我們已為這些受影響平台上的使用者新增了棄用通知,以讓他們為遷移做好準備。如果您是上述 OS 版本的用戶,請查看我們的 FAQ 以取得更多資訊。

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

在先前的版本中,我們開始將應用程式語言傳遞到 Electron,以便它可以正確佈局某些元件,例如視窗控制項覆蓋 (WCO)。同時,語言推薦器依賴於系統語言,但 app.getLocale() 開始提取應用程式語言而不是系統語言,因此我們使用較新的 app.getPreferredSystemLanguages() Electron API 來檢索系統語言以用於語言推薦器。結果,發生了擴充功能檢視中的擴充功能無法轉譯的回歸,因為新的 API 傳回了一些 toLocaleString() 無法剖析的值。

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

此版本將許多系統語言的使用替換為應用程式語言。反過來說,日期現在應以更符合應用程式語言而不是系統語言的格式進行本地化。

重要修正

  • 99878 使用 environmentVariableCollection 在 macOS 上預先設定 PATH env var 無效
  • 153786 具有開啟差異編輯器的任一側的命令
  • 165123 允許使用兩個未命名的側邊開啟差異編輯器
  • 167004 輸出:顯示輸出通道 顯示輸出通道的命令
  • 167528 擴充功能輸出通道的記錄層級在重新載入視窗後仍然存在

感謝您

最後但同樣重要的是,衷心感謝 VS Code 的貢獻者。

Issue 追蹤

對我們的 issue 追蹤的貢獻

Pull request

vscode 的貢獻

vscode-css-languageservice 的貢獻

vscode-hexeditor 的貢獻

vscode-json-languageservice 的貢獻

vscode-languageserver-node 的貢獻

vscode-pull-request-github 的貢獻

debug-adapter-protocol 的貢獻

monaco-editor 的貢獻