🚀 在 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 月發行版本。此版本包含許多更新,希望您會喜歡,其中一些重點包括

如果您想在線上閱讀這些發行說明,請前往 Updates,網址為 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)。

協助工具

差異導航改進

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

終端機協助工具模式

終端機:聚焦於可存取的緩衝區 (⌥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) 無法運作,但我們正在努力啟用此功能。您可以在 issue #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_ENVIRONMENT 設定為 1。這對於需要知道它們是否在解析 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+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\ 連結。

  • v1.72 中新增了 OSC 超連結支援,現在支援這些連結中常用的 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 次。

新增終端機 Tab 停駐點大小設定

有一個新的設定 terminal.integrated.tabStopWidth,用於設定終端機的 Tab 停駐點寬度。當程式輸出 \t 字元而不是在其設定中設定 Tab 大小時,這非常有用。

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 hook 的存在,某些 Git 操作可能需要很長時間才能完成。我們過去曾見過在先前的命令仍在進行中時啟動命令可能會導致意外結果 (例如,在認可操作正在進行時捨棄檔案上的變更)。

為了防止這種情況,我們在以下操作正在進行時停用大多數 Git 命令:CheckoutCommitPushPull。這表示當這些操作正在執行時,大多數 Git 命令不會出現在命令面板中,並且會在「原始碼控制」視圖和狀態列中停用。

使用者介面改進

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

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

筆記本

核心選擇器改進

我們繼續改進 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 擴充功能現在會在工作區資料夾中尋找 requirement 檔案,並允許使用者多選任意數量的 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,
    },

即時預覽

外部瀏覽器預覽的設定

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

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

Live Preview Custom External Browser setting

伺服器根目錄的設定

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

ESLint

ESLint 擴充功能已更新至 2.4.0 版。主要新功能包括:

  • 支援新的實驗性平面設定檔。您需要在 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 and Issues

GitHub Pull Requests and Issues 擴充功能上取得了更多進展,此擴充功能可讓您處理、建立和管理提取請求和問題。重點包括:

  • 支援建議和接受變更。
  • 註解中的 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 Desktop 上的新本機 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 (實驗性)Dark+ V2 (實驗性) 的新佈景主題。

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 控制註解呈現為已解決還是未解決,並且可以影響「註解」檢視中的篩選。您可以在問題 #127473中了解有關如何使用 API 的更多資訊。

忽略要同步的設定

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

遙測

新的 TelemetryLogger 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),我們將很快移除它。

透過命令列進行效能測試

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

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 上執行。在此里程碑中,我們已為這些受影響平台上的使用者新增了棄用通知,以讓他們為遷移做好準備。如果您是上述 OS 版本的使用者,請查看我們的 FAQ 以取得其他資訊。

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

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

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

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

值得注意的修正

  • 99878 在 macOS 上,使用 environmentVariableCollection 前置 PATH env var 無效
  • 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 的貢獻