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

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 啟用。

聊天輔助功能改進

聊天響應會盡快提供給螢幕閱讀器,並且內聯和聊天面板的輔助功能幫助選單包含有關預期內容以及如何與每個功能進行互動的更詳細資訊。

設定編輯器 alt 文字改進

設定編輯器(可透過 首選項:開啟設定 (UI) 命令訪問)在使用螢幕閱讀器進行導航時現在不那麼冗長了。特別是,設定範圍切換器會 announcing 範圍的實際名稱,而不是檔案路徑,並且設定描述 alt 文字已清理,不再包含原始 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 時,現在會尊重工作區的 .gitignore,無論工作區是否已初始化為 Git 儲存庫。

評論的最大高度

comments.maxHeight 設定可讓您停用評論的最大高度限制,例如在使用 GitHub Pull Requests and Issues 擴充套件時顯示的拉取請求的評論。

排查 VS Code 中的問題

命令面板中新增了一個命令 幫助:排查問題,以幫助您排查 VS Code 中的問題。啟動的工作流程透過特殊的排查 配置檔案和 VS Code 的 擴充套件二分查詢功能幫助您識別問題的根源。擴充套件二分查詢會在您指示問題是否復現時,以二分查詢的方式啟用和停用已安裝的擴充套件。這可以縮小導致問題的擴充套件範圍,並幫助您在報告問題時提供正確的資訊。

停用 Chromium 沙盒

如果您在某些情況下無法避免以提升的使用者身份啟動 VS Code 桌面版(例如,在 Linux 上使用 sudo 啟動 VS Code,或在 Windows 的 AppLocker 環境中以管理員身份啟動),則需要使用 --no-sandbox --disable-gpu-sandbox 命令列選項啟動 VS Code 才能使應用程式按預期工作。

根據 issue #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

或者使用 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: 重新開啟已關閉的儲存庫... 命令來重新開啟已關閉的儲存庫。

Notebook

改進了遠端開發的儲存效能

以前,在 VS Code 的遠端擴充套件中儲存筆記本需要將整個筆記本傳送到擴充套件主機,這對於大型筆記本或自動儲存啟用的慢速網路連線可能會很慢。我們透過僅將筆記本的更改傳送到擴充套件主機來提高了效能,從而實現了更快的筆記本儲存和執行。雖然此功能仍處於停用狀態,但我們有信心很快就能啟用它。要嘗試一下,請將 "notebook.experimental.remoteSave": true 新增到您的設定中。有關更多詳細資訊,您可以關注 issue #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 或遠端隧道使用開發容器、遠端機器或適用於 Linux 的 Windows 子系統 (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 將根據您的要求生成筆記本大綱。

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

生成搜尋引數

您可以使用 /search 命令後跟您想要在文字中查詢的內容的描述,讓 Copilot 自動填充工作區搜尋中的搜尋引數。

可以透過配置 github.copilot.advanced 設定來啟用這些預覽斜槓命令,如下所示:

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

Copilot YouTube 播放列表

在 YouTube 上的 VS Code Copilot 系列中有新一集內容,介紹了 Copilot for PowerShell。如果您錯過了該系列,您還可以找到其他 特定語言的講座以及有關使用 Copilot 進行開發的 有效提示的指導。

Python

Mypy 擴充套件

現在有一個 Mypy 型別檢查器擴充套件,它使用 mypy 提供 Python 型別檢查支援,目前作為預釋出版本預覽提供。這個新擴充套件可以對您的整個程式碼庫報告錯誤和警告,而不僅僅是當前檔案。它還使用 dmypy 進行更快的型別檢查。

如果您對這個新擴充套件有任何問題或希望提供反饋,可以在 Mypy 擴充套件 GitHub 倉庫中提交問題。

Debugpy 擴充套件

當 Python 擴充套件停止支援 Python 2.7 和 Python 3.6 時,我們收到了大量使用者反饋,他們無法將程式碼庫升級到最新版本的 Python,也無法使用最新版本的 Python 擴充套件除錯應用程式。為了解決這個問題,我們建立了一個單獨的 Python 偵錯程式擴充套件,稱為 Debugpy。透過將偵錯程式與 Python 擴充套件分開,您最終可以同時使用最新版本的 Python 擴充套件和舊版本的偵錯程式(透過停用 擴充套件自動更新)。此擴充套件以預釋出版本預覽提供,使用最新版本的 debugpy。我們計劃在不久的將來支援舊版本的 debugpy。

請嘗試使用並 告訴我們一切是否正常。我們的計劃是用這個單獨的擴充套件來取代內建的除錯功能。

Pylance 本地化

Pylance 擴充套件現在已本地化!這意味著如果已安裝 語言包並在 VS Code 中設定為啟用狀態,則擴充套件中的設定、命令和其他文字將翻譯成您的首選語言。

測試發現和執行重寫

本月,我們繼續將測試重寫作為一項實驗推出。提醒一下,這次重寫重新設計了擴充套件中 unittestpytest 的測試發現和執行的架構。重寫目前對 100% 的 VS Code Insiders 使用者有效,並將從本月開始逐步推廣到穩定版。重寫將在短期內採用,但目前選擇加入和退出的設定 pythonTestAdapter 仍然存在。

pytest 和 unittest 的動態執行結果

與新實驗一起推出的是 pytest 和 unittest 的動態執行結果。以前,我們的測試結果只有在所有測試執行完畢後才會返回,但現在有了這個功能,測試結果是單獨返回的,允許您即時檢視測試透過和失敗。

第三方庫的索引持久化

Pylance 對環境中安裝的第三方庫進行索引,以啟用 IntelliSense 功能,如自動完成、自動匯入、程式碼導航等。以前,Pylance 每次開啟 VS Code 工作區時都會對這些庫進行索引。現在,Pylance 會持久化這些庫的索引,減少了重複索引過程的需要。

Python 3.7 支援的棄用

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

隨著所有其他 Python 版本現在採用年度釋出節奏,我們預計一旦 Python 版本達到 EOL,將在下一日曆年的第一個 Python 擴充套件版本中停止對其官方支援。例如,Python 3.8 計劃於 2024 年 10 月達到 EOL,因此 2025 年的第一個 Python 擴充套件版本將停止官方支援。

GitHub 拉取請求和議題

GitHub Pull Requests and Issues 擴充套件取得了更多進展,該擴充套件允許您處理、建立和管理拉取請求和問題。

  • 在拉取請求中最多可載入 1000 個(之前為 100 個)評論執行緒。
  • 用於只讀訊息的新 VS Code API 提案允許您直接從未檢出的 diff 檢出 PR。
  • 樹狀圖和評論中的頭像現在是圓形的,而不是方形的。

請查閱擴充套件 0.68.0 版本的更新日誌,瞭解其他亮點。

預覽功能

TypeScript 5.2 支援

此更新包括對即將釋出的 TypeScript 5.2 版本的支援。請檢視 TypeScript 5.2 迭代計劃,瞭解有關 TypeScript 團隊當前工作內容的更多詳細資訊。即將推出的工具亮點包括:

  • 一個新的 內聯常量 重構。
  • 一個新的 移動到檔案 重構,允許您將符號移動到現有檔案中。

要開始使用 TypeScript 5.2 夜間構建,請安裝 TypeScript Nightly 擴充套件。

新的 diff 編輯器

此版本中,我們完成了 diff 編輯器的重寫。重寫使我們能夠新增一些新功能,改進效能,並修復了幾個錯誤。

要嘗試新的 diff 編輯器,請將 "diffEditor.experimental.useVersion2": true 新增到您的設定中。新 diff 編輯器仍處於實驗階段,但最終將在未來的更新中取代當前 diff 編輯器。

所有展示的功能都需要新的 diff 編輯器。

摺疊未更改區域

使用 diffEditor.experimental.collapseUnchangedRegions 啟用在新 diff 編輯器中隱藏未更改區域。當審查包含大量未更改程式碼的大型 diff 時,此功能非常有用。

隱藏行塊的邊框可以拖動或點選以顯示程式碼的底部或頂部。

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

顯示插入/刪除標記

插入/刪除標記指示一行中單詞插入或刪除的位置,當一行同時包含插入和刪除時尤其有用。

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

Deletion markers

改進的裝飾

整行刪除/插入現在具有全寬背景色。這大大減少了噪聲。

這是新 diff 編輯器如何突出顯示更改的示例:

New Diff Editor highlighted changes

這是舊 diff 編輯器如何渲染裝飾(請注意右側的第 57 行沒有全寬背景色):

Current Diff Editor highlighted changes

同步 diff 更新

在新 diff 編輯器中鍵入時,更改會啟發式地立即應用,並在延遲一段時間後觸發非同步 diff 計算。在舊 diff 編輯器中,更改不會立即應用,導致鍵入時出現可見的閃爍。

新 - 鍵入時 diff 會立即更新

Diffs update immediately when typing

舊 - 有一些可見的閃爍

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

移動檢測

此實驗性功能可檢測檔案中移動的程式碼塊。使用 diffEditor.experimental.showMoves 來啟用它。目前,只能檢測到簡單的移動,但我們計劃將來改進此功能。一旦選中移動的程式碼塊,源位置和目標位置將被對齊並顯示它們之間的 diff。

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 封裝,擴充套件在引入 SecretStorage API 之前就依賴它。keytar 本身 已正式存檔 且未被維護……為了推廣良好的安全實踐,依賴一個已存檔的軟體來儲存機密,我們正在制定一項移除 VS Code 中此封裝的計劃。

我們已直接聯絡了仍在使用此 keytar 封裝的流行擴充套件的作者,他們正在努力進行遷移。我們希望在此以及 我們的 GitHub Discussions 中傳達這一點,以便為我們未直接聯絡的擴充套件作者提供資訊,從而最大限度地減少此次更改造成的中斷。我們知道這不是最好的訊息,因為我們也付出了大量努力來移除對 keytar 的依賴,但我們相信這是確保擴充套件使用安全 API 的正確做法。

如果您在擴充套件中直接使用 keytar,您可以考慮以下幾種選擇:

  • (推薦)使用 VS Code 在 ExtensionContext 上提供的 SecretStorage API。此 API 是跨平臺的,可在 VS Code 支援的所有平臺上執行。它由 VS Code 團隊維護,並將繼續得到維護,並且已成為 VS Code API 的一部分多年。
  • (不推薦)您可以將 keytar 模組與您的擴充套件捆綁在一起。請注意,keytar 是一個原生 Node 模組,這意味著您需要為要支援的每個平臺 釋出一個特定平臺的擴充套件

時間表:目前的計劃是在八月初從 VS Code Insiders 中移除此封裝,這意味著2023 年 9 月的穩定版將是第一個沒有此封裝的版本。

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

改進了本地檔案的 vscode.fs.writeFile 效能

當您使用 vscode.fs.writeFile API 將資料寫入檔案時(您應該這樣做!),對擴充套件主機本地檔案的寫操作現在將更快地得到解決。

以前,擴充套件主機會將寫操作委託給 VS Code 客戶端執行,但現在該操作直接在擴充套件主機內部執行,從而節省了往返。

Tree checkbox API

TreeItemcheckboxState 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。一如既往,我們希望得到您的反饋。以下是嘗試提議 API 的步驟

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

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

檔案系統提供程式的只讀訊息

當您 registerFileSystemProvider 時,您可以提供一個只讀訊息,而不是僅僅將檔案系統標記為只讀。下方訊息會在編輯器中顯示,當用戶嘗試編輯來自該提供程式的檔案時。

Read-only file system message

工程

匯出符號的名稱修飾

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

我們的名稱修飾構建步驟現在總共節省了 3.9 MB 的 JavaScript,覆蓋了核心 VS Code 和我們的內建擴充套件。此減小加快了下載速度,減小了 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 主機程序。最顯著的變化是降低了終端的輸入延遲。
    • 透過減少不必要的呼叫和並行化任務(當有多個終端正在恢復時),提高了重新連線(重新載入視窗)和程序恢復(重啟)的效能。
    • 我們現在收集終端啟動和重新連線的效能指標,可以透過Developer: Startup Performance 命令檢視。
  • 診斷
    • 所有與終端相關的日誌已從Window 輸出通道移至新的Terminal 輸出通道。
    • 當跟蹤日誌級別開啟時,Pty Host 輸出通道將記錄所有 RPC 呼叫,這將有助於診斷終端問題。

文件

新的 C# 主題

您可以透過 C# Dev Kit 擴充套件,在 VS Code 中學習 C# 開發,並透過一組新的 C# 文章。在那裡,您將找到解釋如何 入門,描述擴充套件的語言功能(程式碼導航重構除錯),並輔助開發生命週期,如 專案 管理。

Glob 模式參考

VS Code 有自己的 glob 模式 實現,它用於搜尋檔案和資料夾過濾等功能,讓您可以自定義檔案資源管理器檢視等。要了解詳細資訊,您可以查閱新的 Glob Patterns Reference

值得注意的修復

  • 最大化整合終端時丟失文字 #134448
  • 支援 Fish shell 整合自動注入 #139400

感謝

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

問題跟蹤

對我們問題跟蹤的貢獻

拉取請求

vscode 的貢獻

vscode-emmet-helper 的貢獻

貢獻於 vscode-livepreview

vscode-pull-request-github 的貢獻

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