🚀 在 VS Code 中

2023 年 6 月 (版本 1.80)

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

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

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


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

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

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

協助工具

協助工具檢視

新的命令開啟協助工具檢視 (⌥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 發行說明中有更詳細的說明。

編輯器群組分割大小調整已變更為 'auto'

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

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

搜尋 .gitignore 排除行為

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

註解的最大高度

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

疑難排解 VS Code 中的問題

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

停用 Chromium 沙箱

如果您有無法避免以提升權限的使用者身分啟動 VS Code 桌面的情況,例如您在 Linux 上使用 sudo 啟動 VS Code,或在 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>

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

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

終端機

影像支援

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

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

Running cat with a sixel file will print an image

或搭配 .png、.gif 或 .jpg 檔案使用 imgcat python 套件imgcat 腳本

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 互動式視窗現在已完全與 熱門結束 功能整合,並還原 VS Code 重新載入之間的編輯器狀態。interactiveWindow.restore 設定不再有任何作用,並且已移除。

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

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

語言

Markdown 從預覽複製影像

Markdown 預覽中影像的新增內容功能表可讓您從預覽複製影像並將其貼到 Markdown 編輯器中。複製影像時,預覽編輯器必須處於焦點狀態。

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

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

遠端開發

遠端開發擴充功能可讓您使用 開發容器、透過 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 類型檢查器擴充功能,可使用 mypy 提供 Python 的類型檢查支援,以預覽版作為預先發行版本提供。這個新的擴充功能會在您的整個程式碼庫中提供錯誤和警告,而不僅僅是目前的檔案。它也使用 dmypy 進行更快速的類型檢查。

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

Debugpy 擴充功能

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

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

Pylance 本地化

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

測試探索和執行重寫

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

pytest 和 unittest 的動態執行結果

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

第三方程式庫的索引持久性

Pylance 會執行環境中安裝的第三方程式庫索引編製,以啟用 IntelliSense 功能,例如自動完成、自動匯入、程式碼導覽等。先前,每次您在 VS Code 中開啟工作區時,Pylance 都會為這些程式庫編製索引。現在,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 Host」程序管理終端機啟動的所有 shell 程序,並進行了多項改進

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

文件

全新 C# 主題

您可以透過一組新的 C# 文章,使用 C# Dev Kit 擴充功能在 VS Code 中學習 C# 開發。在那裡,您會找到說明如何開始使用、描述擴充功能的語言功能(程式碼導覽重構偵錯)以及協助開發生命週期(例如專案套件管理)的主題。

Glob 模式參考

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

值得注意的修正

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

感謝

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

問題追蹤

對我們的問題追蹤的貢獻

提取請求

vscode 的貢獻

vscode-emmet-helper 的貢獻

vscode-livepreview 的貢獻

vscode-pull-request-github 的貢獻