🚀 在 VS Code 中免費取得

2023 年 6 月 (版本 1.80)

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

更新 1.80.2:此更新解決了這個安全性 問題

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


歡迎使用 Visual Studio Code 2023 年 6 月發行版本。此版本包含許多更新,希望您會喜歡,以下是一些主要重點:

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

預覽體驗者:想盡快試用新功能嗎?您可以下載每晚更新的 預覽體驗者 組建,並在最新更新可用時立即試用。

協助工具

易於存取檢視

新的命令開啟易於存取檢視 (⌥F2 (Windows Alt+F2、Linux Shift+Alt+F2)) 允許螢幕閱讀器使用者逐字元、逐行檢查內容。當焦點位於浮動視窗或聊天面板回應時,請叫用此命令。

協助工具說明改進

新的命令開啟協助工具說明 (⌥F1 (Windows Alt+F1、Linux Shift+Alt+F1)) 會根據目前內容開啟說明選單。目前適用於編輯器、終端機、筆記本、聊天面板和內嵌聊天功能。

停用協助工具說明選單提示,並從說明選單中開啟其他文件 (若有)。

筆記本的協助工具說明

為筆記本新增了新的協助工具說明選單,以提供有關編輯器版面配置以及筆記本導覽和互動的資訊。

聊天音訊提示

現在 GitHub Copilot 聊天體驗有音訊提示,可透過 audioCues.chatRequestSentaudioCues.chatResponsePendingaudioCues.chatResponseReceived 啟用。

聊天協助工具改進

聊天回應會在收到時立即提供給螢幕閱讀器,而內嵌和聊天面板協助工具說明選單包含更詳細的資訊,說明預期會發生的情況以及如何與每個功能互動。

設定編輯器替代文字改進

當使用螢幕閱讀器瀏覽時,「設定」編輯器 (可透過喜好設定:開啟設定 (UI) 命令存取) 現在比較不冗長。特別是,「設定」範圍切換器會宣告範圍的實際名稱,而不是檔案路徑,而且已清除設定描述替代文字,使其不包含原始 Markdown 格式。

Navigating through the Settings editor with NVDA on Windows

工作台

預覽影片的自動播放和循環播放

您現在可以為內建影片檔案預覽啟用影片自動播放和循環播放。相關設定為

  • mediaPreview.video.autoPlay — 啟用影片自動播放。自動播放的影片會自動靜音。
  • mediaPreview.video.loop — 啟用影片循環播放。

這些設定預設為關閉。

當編輯器為唯讀時提供更多協助

隨著上個里程碑在 VS Code 中導入唯讀模式,編輯器可能會因為工作區組態而變成唯讀。

在這個里程碑中,當您嘗試在唯讀編輯器中輸入時,我們增強了編輯器中的通知訊息,並在某些情況下提供連結以變更 files.readonly 設定。

預設檔案對話方塊位置

新的設定 files.dialog.defaultPath 可以組態檔案對話方塊 (例如在開啟或儲存檔案或資料夾時) 開啟時應顯示的預設位置。只有在沒有其他已知位置時,才會使用此預設值作為後援,例如在空白的 VS Code 視窗中。

在索引標籤上按兩下停用最大化編輯器群組

新的設定 workbench.editor.doubleClickTabToToggleEditorGroupSizes 會在按兩下該群組的索引標籤時,停用將編輯器群組的大小從最大化切換為還原。

控制固定寬度索引標籤的最小寬度

新的設定 workbench.editor.tabSizingFixedMinWidth 會在 workbench.editor.tabSizing 設定為 fixed 時,控制索引標籤的最小大小。固定索引標籤寬度在 1.79 版本資訊中有更詳細的說明。

編輯器群組分割大小調整已變更為「自動」

workbench.editor.splitSizing 設定的新值 auto 是新的預設值。在此模式中,分割編輯器群組只會在沒有任何編輯器群組調整大小的情況下,將可用大小平均分配給所有編輯器群組。否則,分割編輯器群組的空間會分成兩半,並放置在新的編輯器群組中。

此變更的目的是不要中斷您在分割時建立的版面配置,但仍保留先前平均分配大小的預設行為。

搜尋 .gitignore 排除行為

search.useIgnoreFiles 設定為 true 時,現在會遵守工作區的 .gitignore,無論工作區是否初始化為 Git 存放庫。

註解的最大高度

設定 comments.maxHeight 可讓您停用註解上的最大高度限制,例如使用 GitHub Pull Requests and Issues 擴充功能時針對提取要求顯示的註解。

在 VS Code 中疑難排解問題

命令面板中有新的命令說明:疑難排解問題,可協助您在 VS Code 中疑難排解問題。啟動的工作流程可協助您使用特殊的「疑難排解」設定檔和 VS Code 的擴充功能二分功能來找出問題的原因。擴充功能二分會在二元搜尋中啟用和停用您安裝的擴充功能,同時指出問題是否重現。這會縮小造成問題的擴充功能範圍,並協助您在回報問題時提供正確的資訊。

停用 Chromium 沙箱

如果您有無法避免以提高權限的使用者身分啟動 VS Code 桌面版的案例,例如您在 Linux 上使用 sudo 或在 Windows 上的 AppLocker 環境中以管理員身分啟動 VS Code,則需要使用 --no-sandbox --disable-gpu-sandbox 命令列選項啟動 VS Code,才能讓應用程式如預期般運作。

根據 問題 #184687 中的意見反應,現在有兩個新的設定,可在您需要停用 Chromium 沙箱時更輕鬆地進行操作

  1. 新的命令列選項 --disable-chromium-sandbox 可停用應用程式中所有進程的 Chromium 沙箱。這個新選項可用來取代 --no-sandbox --disable-gpu-sandbox。此選項適用於執行階段在未來版本中可能新增的任何新進程沙箱。

  2. 若要在啟動時持續停用 Chromium 沙箱,請執行下列步驟

    • 開啟命令面板 (⇧⌘P (Windows、Linux Ctrl+Shift+P))。
    • 執行喜好設定:組態執行階段引數命令。
    • 此命令會開啟 argv.json 檔案以組態執行階段引數。您可能會在其中看到一些預設引數。
    • 新增 "disable-chromium-sandbox": true
    • 重新啟動 VS Code。

注意:除非您看到問題,否則請勿使用此設定!

編輯器

縮小和展開選取範圍時略過子字組

現在可以將展開縮小選取範圍命令組態為略過子字組。這是透過 editor.smartSelect.selectSubwords 設定完成的。預設情況下,會選取子字組,但現在可以停用。

  • true -> Co|deEditor 選取 [Code]Editor,然後選取 [CodeEditor]
  • false -> Co|deEditor 選取 [CodeEditor]

當您經常將展開和縮小選取範圍與多個游標和異質字詞搭配使用時,此設定會派上用場。

改進 JSX/TSX 中 CSS 模組的 Emmet 支援

Emmet 支援 JSX/TSX 檔案的新一組縮寫。在 JSX 或 TSX 檔案中輸入 ..test,並展開縮寫後,會新增行 <div styleName={styles.test}></div>

屬性名稱和值前置詞可以使用 emmet.syntaxProfiles 設定進行組態。透過如下組態 emmet.syntaxProfiles 設定

"emmet.syntaxProfiles": {
    "jsx": {
        "markup.attributes": {
            "class*": "className",
        },
        "markup.valuePrefix": {
            "class*": "myStyles"
        }
    }
}

然後在 JSX 或 TSX 檔案中展開縮寫 ..test,您會取得縮寫 <div className={myStyles.test}></div>

可調整大小的內容浮動視窗

現在可以調整內容浮動視窗控制項的大小。您可以將游標停留在控制項邊框上方,並拖曳窗格來變更浮動視窗的大小。

終端機

影像支援

終端機中的影像 (已在上次版本中預覽) 現在預設為啟用。終端機中的影像通常透過將影像像素資料編碼為文字來運作,然後透過特殊的逸出序列寫入終端機。目前支援的協定為 sixel 和 iTerm 首創的 內嵌影像協定

若要手動測試影像,您可以從 libsixel 存放庫下載並 cat .six 範例檔案

Running cat with a sixel file will print an image

或將 imgcat python 套件imgcat 指令碼與 .png、.gif 或 .jpg 檔案搭配使用

Running imgcat with a png file will print the image

可以透過設定停用此功能

"terminal.integrated.enableImages": false

現在支援新的連結格式,包括需要向上掃描才能找到檔案的連結,以及具有範圍 (行到行或字元到字元) 的連結。

  • @@ git 範圍連結

    Links from git in the style '@@ - + @@' are now detected

  • OCAML 的 Dune 樣式範圍連結

    Links in the style 'File "src/cli.js", lines 15-19' are now detected
    Links in the style 'File "src/cli.js", line 15, characters 8-34' are now detected
    Links in the style 'File "src/cli.js", lines 15-19, characters 8-34' are now detected

  • ESLint 樣式多行連結

    Links from ESLint that prefix a result with 'line:col' now are detected

  • Ripgrep 樣式多行連結

    Links from ripgrep that prefix a result with 'line:' now are detected

已移除已淘汰的 shell 和 shellArgs 設定

設定 terminal.integrated.shell.*terminal.integrated.shellArgs.* 已在一年多前由終端機設定檔取代,且剛剛已移除。如果您仍在使用舊的 shellshellArgs 設定,以下是遷移前後的範例,可協助您進行遷移

// Before
{
  "terminal.integrated.shell.windows": "pwsh.exe",
  "terminal.integrated.shellArgs.windows": ["-Login"],

  "terminal.integrated.shell.osx": "bash",
  "terminal.integrated.shellArgs.osx": ["-l"],
}

// After
{
  "terminal.integrated.profiles.windows": {
    "PowerShell Login": {
      // Source is a special property that will use VS Code's logic to detect
      // the PowerShell or Git Bash executable.
      "source": "PowerShell",
      "args": ["-Login"],
      "icon": "terminal-powershell"
    },
  },

  "terminal.integrated.profiles.osx": {
    // This will override the builtin bash profile
    "bash": {
      "path": "bash",
      "args": ["-l"],
      "icon": "terminal-bash"
    }
  }
}

測試

終端機輸出支援

先前,在測試結果檢視中顯示的測試輸出會一律顯示在內嵌文字編輯器中。這會剝奪它在終端機中執行時可能擁有的豐富樣式,例如色彩、樣式和符號。在此版本中,我們會以真實的 xterm.js 終端機顯示輸出。

Results shown in the Tests Results panel with green checkmarks

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

既然測試結果檢視功能完整,顯示測試輸出的命令已重新導向為開啟「測試結果」檢視,而不是建立暫時終端機。

原始檔控制

關閉存放庫改進

過去,使用者可以使用Git:關閉存放庫命令或「原始檔控制」檢視中的「關閉存放庫」動作來關閉存放庫,但某些動作 (例如,從已關閉的存放庫開啟檔案) 會重新開啟已關閉的存放庫。在這個里程碑中,我們進行了一些改進,因此存放庫已關閉的事實現在會針對每個工作區持續保存。使用者可以使用Git:重新開啟已關閉的存放庫...命令來重新開啟已關閉的存放庫。

筆記本

改進遠端開發的儲存效能

先前,在 VS Code 的遠端擴充功能中儲存筆記本需要將整個筆記本傳送至擴充功能主機,這對於大型筆記本或啟用自動儲存的慢速網路連線而言可能會很慢。我們已透過僅將筆記本的變更傳送至擴充功能主機來改進效能,從而加快筆記本儲存和執行速度。雖然此功能預設仍為停用,但我們有信心很快就能啟用它。若要試用,請將 "notebook.experimental.remoteSave": true 新增至您的設定。如需更多詳細資訊,您可以追蹤 問題 #172345

筆記本全域工具列重新設計

已重新撰寫筆記本編輯器的全域工具列以採用工作台工具列,讓使用者可以更自訂工具列動作。使用者現在可以按一下滑鼠右鍵並從工具列隱藏動作。在工具列中按一下動作的滑鼠右鍵會顯示隱藏該動作的選項,以及重設選單並帶回隱藏的動作。

工具列繼續與所有三種標籤策略搭配運作:alwaysneverdynamic。您可以透過設定 notebook.globalToolbarShowLabel 變更標籤策略。

佈景主題:Monokai Pro (Filter Ristretto) (在 vscode.dev 上預覽)

互動式視窗備份和還原

Python 互動式視窗現在已完全整合 hot exit 功能,並在 VS Code 重新載入之間還原編輯器狀態。interactiveWindow.restore 設定不再有任何效果,且已移除。

如果停用 hot exit,則在關閉 VS Code 時會出現提示,讓您選擇將編輯器狀態儲存為 .ipynb 檔案。

佈景主題:Bearded Theme feat. Gold D Raynh (在 vscode.dev 上預覽)

語言

從預覽複製 Markdown 影像

Markdown 預覽中影像的新增內容選單可讓您從預覽複製影像,並將其貼到 Markdown 編輯器中。複製影像時,預覽編輯器必須是焦點。

新的 markdown.editor.pasteUrlAsFormattedLink.enabled 設定 (預設為 false) 可讓您將連結插入 Markdown 編輯器,這些連結會自動格式化為 Markdown 連結。如果您選取一些文字要取代為貼上的連結,則選取的文字會自動變成連結的標題。如果未選取任何文字,則會有預設連結標題。此功能適用於外部瀏覽器連結以及工作區內的檔案。

您必須啟用設定 editor.pasteAs.enabled,此新設定才能運作。

遠端開發

遠端開發擴充功能可讓您使用 Dev Container、透過 SSH 或 遠端通道連線的遠端機器,或 Windows Subsystem for Linux (WSL) 作為功能完整的開發環境。

您可以在遠端開發版本資訊中了解新的擴充功能和錯誤修正。

遠端選單

在這個里程碑中,我們已更新「遠端」選單,其中包含協助您快速安裝並開始使用遠端連線 (SSH、遠端通道GitHub Codespaces 等) 的項目,方法是安裝必要的擴充功能。「歡迎使用」頁面中也有「連線到...」啟動項目,可協助您開始從 VS Code 桌面版進行遠端連線。

我們也已更新 vscode.dev 上的「歡迎使用」頁面,其中包含連線到遠端通道的啟動項目。

透過通道連線 WSL

上次反覆運算中,我們預覽了透過遠端通道連線至 WSL。此功能在此反覆運算中已穩定。如果您在已安裝 WSL 的 Windows 機器上執行遠端通道,您可以選擇直接從遠端總管連線至 WSL。

Remote Tunnels view with a Connect to WSL option

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

此功能現在適用於 VS Code 桌面版和 vscode.dev。如果您已在 Windows 裝置上執行通道,請務必將 VS Code 更新至最新版本以啟用此功能。

擴充功能的貢獻

GitHub Copilot

我們已在「聊天」檢視中導入僅限預覽的斜線命令,以協助您建立專案和筆記本,以及在工作區中搜尋文字。

注意:若要存取「聊天」檢視、內嵌聊天和斜線命令 (例如 /search/createWorkspace),您需要安裝 GitHub Copilot Chat 擴充功能。

建立工作區

您可以使用 /createWorkspace 斜線命令要求 Copilot 為熱門專案類型建立工作區。Copilot 會先為您的要求產生目錄結構。

然後您可以使用建立工作區按鈕來建立專案目錄,並將其開啟為新的工作區。

Create and open workspace using GitHub Copilot

建立筆記本

您可以使用 /createNotebook 斜線命令要求 Copilot 根據您的需求建立 Jupyter 筆記本。Copilot 會根據您的需求產生筆記本的大綱。

然後您可以使用建立筆記本命令來建立筆記本,並根據建議的大綱填入程式碼儲存格。

產生搜尋參數

您可以要求 Copilot 在工作區搜尋中自動填入搜尋參數。若要執行此操作,請使用 /search 命令,後接您想要在文字中尋找內容的描述。

可以透過如下組態 github.copilot.advanced 設定來啟用這些預覽斜線命令

"github.copilot.advanced": {
   "slashCommands": {
      "createWorkspace": true,
      "createNotebook": true,
      "search": true
   }
}

Copilot YouTube 播放清單

YouTube 上的 VS Code Copilot 系列中有一個新的部分涵蓋 PowerShell 版 Copilot。如果您錯過了該系列,您也會找到其他語言特定的演講,以及在使用 Copilot 進行開發時有效提示的指南。

Python

Mypy 擴充功能

現在有一個 Mypy Type Checker 擴充功能,可使用 mypy 為 Python 提供類型檢查支援,以預發行版本形式提供預覽。這個新的擴充功能會在您的整個程式碼庫 (而不僅僅是目前檔案) 上提供錯誤和警告。它也會使用 dmypy 進行更快的類型檢查。

如果您對這個新的擴充功能有任何問題或想要提供意見反應,您可以在 Mypy 擴充功能 GitHub 存放庫中提出問題。

Debugpy 擴充功能

當 Python 擴充功能移除對 Python 2.7 和 Python 3.6 的支援時,我們收到許多使用者的意見反應,他們無法將程式碼庫升級至最新版本的 Python,並且失去了使用最新版本的 Python 擴充功能偵錯應用程式的能力。為了尋求解決方案,我們建立了一個個別的 Python Debugger 擴充功能,名為 Debugpy。透過將偵錯工具與 Python 擴充功能分開,您最終可以使用最新版本的 Python 擴充功能,同時使用舊版本的偵錯工具 (方法是停用擴充功能自動更新)。這個擴充功能以預發行版本形式提供預覽,使用最新版本的 debugpy。我們計劃在不久的將來支援舊版本的 debugpy。

請試用看看,並告訴我們一切是否運作正常。我們的計劃是淘汰內建的偵錯功能,改用這個個別的擴充功能。

Pylance 本地化

Pylance 擴充功能現在已本地化!這表示如果您已安裝語言套件並在 VS Code 中設定為作用中,則擴充功能的設定、命令和其他文字會翻譯成您的慣用語言。

測試探索和執行重寫

本月,我們將繼續推出測試重寫作為實驗。提醒您,此重寫重新設計了擴充功能中 unittestpytest 的測試探索和執行背後的架構。重寫目前適用於 100% 的 VS Code 預覽體驗者使用者,並將在本月開始逐步轉為穩定版本。重寫將很快採用,但目前選擇加入和退出的設定 pythonTestAdapter 仍然存在。

pytest 和 unittest 的動態執行結果

與新實驗一起推出的是 pytest 和 unittest 的動態執行結果。先前,我們的測試結果只會在所有測試完成執行後才傳回,但現在有了此功能,測試結果會個別傳遞,讓您可以即時查看測試通過和失敗。

協力廠商程式庫的索引持續性

Pylance 會對環境中安裝的協力廠商程式庫執行索引編製,以啟用 IntelliSense 功能,例如自動完成、自動匯入、程式碼導覽等。先前,Pylance 每次在 VS Code 中開啟工作區時都會對這些程式庫進行索引編製。現在,Pylance 會持續保存這些程式庫的索引,減少重複索引編製程序的需求。

淘汰 Python 3.7 支援

Python 3.7 已於 2023-06-27 達到生命週期結束 (EOL)。因此,Python 擴充功能對 Python 3.7 的官方支援將在三個月後於擴充功能的 2023.18 版本 (對應於 VS Code 的 2023 年 9 月版本) 中停止。目前沒有主動移除 Python 3.7 支援的計畫,因此我們預期 Python 擴充功能在可預見的未來將繼續非官方地與 Python 3.7 搭配運作。

由於所有其他版本的 Python 現在都採用年度發行週期,我們預期一旦 Python 版本在下一個日曆年的第一個 Python 擴充功能版本中達到 EOL,就會停止對該版本的官方支援。例如,Python 3.8 預計於 2024 年 10 月達到 EOL,因此 2025 年的第一個 Python 擴充功能版本將停止官方支援。

GitHub Pull Requests and Issues

GitHub Pull Requests and Issues 擴充功能已取得更多進展,可讓您處理、建立和管理提取要求和問題。

  • 在提取要求中最多可以載入 1000 個 (從先前的 100 個) 註解執行緒。
  • 新的 VS Code API 提案 (適用於唯讀訊息) 可讓您直接從未簽出的差異簽出 PR。
  • 樹狀結構和註解中的個人頭像為圓形,而不是正方形。

檢閱擴充功能 0.68.0 版本的變更記錄,以了解其他重點。

預覽功能

TypeScript 5.2 支援

此更新包含即將推出的 TypeScript 5.2 版本的支援。查看 TypeScript 5.2 反覆運算計畫,以取得有關 TypeScript 團隊目前正在進行的工作的更多詳細資訊。即將推出的工具重點包括

  • 新的內嵌常數重構。
  • 新的移至檔案重構,可讓您將符號移至現有檔案。

若要開始使用 TypeScript 5.2 每晚組建,請安裝 TypeScript Nightly 擴充功能。

新的差異編輯器

在此反覆運算中,我們完成了重寫差異編輯器。重寫讓我們能夠新增一些新功能、改進效能,並修正幾個錯誤。

若要試用新的差異編輯器,請將 "diffEditor.experimental.useVersion2": true 新增至您的設定。新的差異編輯器仍為實驗性,但最終會在未來的更新中取代目前的差異編輯器。

所有呈現的功能都需要新的差異編輯器。

摺疊未變更的區域

使用 diffEditor.experimental.collapseUnchangedRegions 來啟用在新版差異編輯器中隱藏未變更區域的功能。當檢閱包含大量未變更程式碼的大型差異時,此功能非常實用。

可以拖曳或點擊隱藏程式碼區塊的邊框,以顯示下方或上方的程式碼。

A screenshot of the "Collapse Unchanged Regions" feature in the new diff editor

顯示插入/刪除標記

插入/刪除標記會指出在行中的哪些位置插入或刪除了文字,當一行同時包含插入和刪除時,這特別有幫助。

使用 diffEditor.experimental.showEmptyDecorations 來啟用/停用插入和刪除標記。

Deletion markers

改良的裝飾

整行刪除/插入現在具有全寬背景顏色。這顯著地減少了雜訊。

這是一個新版差異編輯器如何醒目提示變更的範例

New Diff Editor highlighted changes

這是舊版差異編輯器如何呈現裝飾的範例 (請注意右側第 57 行沒有全寬背景顏色)

Current Diff Editor highlighted changes

同步差異更新

在新版差異編輯器中輸入時,變更會以啟發式方式立即套用,並在一段延遲後觸發非同步差異計算。在舊版差異編輯器中,變更不會立即套用,導致輸入時出現明顯的閃爍。

新版 - 輸入時差異會立即更新

Diffs update immediately when typing

舊版 - 會出現一些明顯的閃爍

Diffs did only update after a delay in the old diff editor

移動偵測

此實驗性功能偵測檔案內移動的程式碼區塊。使用 diffEditor.experimental.showMoves 來開啟它。目前,僅偵測到簡單的移動,但我們計劃在未來改進此功能。一旦選取移動的程式碼區塊,來源和目標位置將會對齊,並顯示它們之間的差異。

Move detection displays line connecting moved code block

由於移動偵測仍處於實驗階段,預期未來更新中會出現重大變更。

擴充功能撰寫

SecretStorage API 現在使用 Electron API 而非 keytar

SecretStorage API 多年來一直是儲存密碼、存取權杖等機密資訊的建議方式。在底層,它一直使用 keytar,這是一個用於在作業系統金鑰鏈中儲存機密資訊的抽象層。由於 keytar 已被棄用和封存,我們為此問題尋找了其他解決方案,特別是著眼於我們的執行階段環境 Electron 來尋求解決方案。

在此版本中,我們已開始從 keytar 轉移到 Electron 的 safeStorage API。此切換對您來說應該是透明的,因為機密資訊會從 keytar 檢索,並透過 Electron 的 safeStorage API 還原。未來,我們將移除此遷移,以便完全移除我們對 keytar 的依賴。

keytar 棄用計畫

長期以來,VS Code 一直嚴重依賴 keytar,這是一個用於在作業系統金鑰鏈中儲存機密資訊的抽象層。此外,我們在 VS Code 中包含了一個 keytar shim,擴充功能在 SecretStorage API 推出之前都依賴它。keytar 本身已 正式封存 且不再維護... 為了提倡良好的安全實務,**不要** 依賴已封存的軟體來儲存機密資訊,我們正在制定計畫從 VS Code 中移除此 shim。

我們已經直接聯繫了仍然使用此 keytar shim 的熱門擴充功能的作者,他們正在努力遷移。我們也想在這裡以及 我們的 GitHub Discussions 中傳達此事,以便我們盡可能減少此變更造成的中斷,對於那些我們沒有直接聯繫的人。我們知道這不是最好的消息,因為我們也花費了相當多的精力來移除我們對 keytar 的依賴,但我們相信這是確保擴充功能使用安全 API 的正確做法。

如果您在擴充功能中直接使用 keytar,您可以考慮以下幾個選項

  • **(推薦)** 使用 VS Code 在 ExtensionContext 上提供的 SecretStorage API。此 API 是跨平台的,並且可在 VS Code 支援的所有平台上運作。它也由 VS Code 團隊維護,將會繼續維護,並且已經是 VS Code API 的一部分多年。
  • **(不推薦)** 您可以將 keytar 模組與您的擴充功能捆綁在一起。請記住,keytar 是一個原生 node 模組,這表示您需要為您想要支援的每個平台 發布平台特定的擴充功能

**時程表**: 目前的計畫是在 **8 月初** 從 VS Code Insiders 中移除此 shim,這表示 **2023 年 9 月** 的穩定版本將是第一個沒有 shim 的版本。

此項目的工作正在 issue #115215 中追蹤,如果您有任何問題,請隨時在 我們的 GitHub Discussions 中提出。

改善本機檔案的 vscode.fs.writeFile 效能

當您使用 vscode.fs.writeFile API 將資料寫入檔案時 (您應該這樣做!),對擴充功能主機本機檔案的寫入操作現在將會更快地完成。

先前,擴充功能主機會將寫入操作委派給 VS Code 用戶端執行,但現在操作直接在擴充功能主機內執行,從而節省了往返行程。

樹狀檢視核取方塊 API

TreeItem checkboxState API 已最終確定。預設情況下,具有核取方塊的樹狀檢視項目,其核取狀態將由 VS Code 管理。可以透過將 TreeViewOptions 屬性 manageCheckboxStateManually 設定為 true 來變更此行為。當設定 manageCheckboxStateManually 時,擴充功能負責管理父項和子項核取方塊的核取和取消核取。

EnvironmentVariableCollection.description

這個新的 API 允許為 EnvironmentVariableCollection 指定描述,顯示在終端機標籤的懸停提示中,以說明變更的確切作用。

// Example of what the Git extension could use
context.environmentVariableCollection.description =
  'An explanation of what the environment changes do';

您可以在內建的 Git 擴充功能中看到此 API 的實際應用,該擴充功能現在描述了變更的作用

Environment variable collection descriptions are explained in a terminal tab's hover

建議的 API

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

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

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

檔案系統提供者的唯讀訊息

當您 registerFileSystemProvider 時,您可以提供唯讀訊息,而不是簡單地將檔案系統標記為唯讀。當使用者嘗試編輯來自該提供者的檔案時,編輯器中會顯示以下訊息。

Read-only file system message

工程

匯出符號的名稱混淆

去年,我們開始 混淆私有屬性和方法的名稱,以縮減我們的程式碼大小。我們現在也混淆匯出符號名稱,這進一步縮減了我們主要工作台 JavaScript 檔案的大小 8%。

我們的名稱混淆建置步驟現在總共節省了核心 VS Code 和我們內建擴充功能的 3.9 MB JavaScript。這種縮減加快了下載速度、縮減了 VS Code 的安裝大小,並加快了您每次啟動 VS Code 時的程式碼載入速度。

Node.js、內建擴充功能和 Electron 的總和檢查碼完整性檢查

作為我們建置的一部分,我們從其他位置取用二進位資源,例如用於遠端伺服器的 Node.js、來自 Marketplace 的內建擴充功能和 Electron。在這個里程碑中,我們透過針對簽入 vscode GitHub 儲存庫的 SHA256 總和檢查碼進行驗證,來確保這些二進位資源的完整性。

新的 Linux 效能機器

我們非常重視 VS Code 的效能,尤其是開啟文字編輯器並看到閃爍游標所花費的時間。為了監控該經過時間,我們每天在 Windows 和 macOS 上執行效能測試。

在這個里程碑中,我們將一台 Linux 機器新增到測試集中,報告 Ubuntu 22 上的啟動時間。

Linux performance machine

事件發射器最佳化

VS Code 在我們的程式碼庫中廣泛使用事件發射器。我們在這個迭代中最佳化了這些發射器,這稍微改善了啟動時間和記憶體使用量。

您可以在 issue #185789 中閱讀有關此改進的更多資訊。

終端機 pty 主機改進

「Pty 主機」程序管理終端機啟動的所有 shell 程序,並進行了多項改進

  • 效能
    • 現在有一個直接通訊通道到 pty 主機程序。其中最重要的改變是減少了終端機的輸入延遲。
    • 透過減少不必要的呼叫,以及在還原多個終端機時平行處理任務,改善了重新連線 (重新載入視窗) 和程序恢復 (重新啟動) 的效能。
    • 我們現在收集有關終端機啟動和重新連線的效能指標,可以透過 **開發人員: 啟動效能** 命令查看。
  • 診斷
    • 所有與終端機相關的記錄都已從 **視窗** 輸出通道移至新的 **終端機** 輸出通道。
    • 當追蹤記錄層級開啟 **Pty 主機** 輸出通道時,終端機將記錄所有 RPC 呼叫,這將有助於診斷終端機問題。

文件

新的 C# 主題

您可以透過一套新的 C# 文章,了解如何在 VS Code 中使用 C# Dev Kit 擴充功能進行 C# 開發。您可以在其中找到解釋如何 入門 的主題,描述擴充功能的語言功能 (程式碼導覽重構偵錯),以及協助開發生命週期,例如 專案套件 管理。

Glob 模式參考

VS Code 有自己的 glob 模式 實作,它用於諸如搜尋檔案和資料夾篩選等功能,讓您自訂檔案總管檢視等等。若要了解詳細資訊,您可以檢閱新的 Glob 模式參考

值得注意的修正

  • 最大化整合式終端機時遺失文字 #134448
  • 支援 fish shell 整合自動注入 #139400

感謝您

最後但同樣重要的是,非常 *感謝* VS Code 的貢獻者。

Issue 追蹤

對我們的 issue 追蹤的貢獻

Pull Requests

vscode 的貢獻

vscode-emmet-helper 的貢獻

vscode-livepreview 的貢獻

vscode-pull-request-github 的貢獻