2023 年 6 月 (版本 1.80)
更新 1.80.1:此更新解決了這些問題。
更新 1.80.2:此更新解決了此安全問題。
下載:Windows:x64 Arm64 | Mac:通用 Intel Apple Silicon | Linux:deb rpm tarball Arm snap
歡迎使用 Visual Studio Code 2023 年 6 月釋出版本。此版本中有很多更新,我們希望您會喜歡,其中一些主要亮點包括
- 輔助功能改進 - 用於更好地支援螢幕閱讀器的輔助功能檢視,Copilot 音訊提示。
- 更好的編輯器組和選項卡大小調整 - 設定最小選項卡大小,避免不必要的編輯器組大小調整。
- 展開選擇時跳過子詞 - 控制是否對選擇使用駝峰式大小寫。
- 終端影像支援 - 直接在整合終端中顯示影像。
- Mypy 和 Debugpy 的 Python 擴充套件 - 用於 VS Code 中的 Python 型別檢查和除錯。
- 透過隧道遠端連線到 WSL - 使用隧道連線到遠端計算機上的 WSL 例項。
- 預覽:GitHub Copilot 建立工作區/筆記本 - 快速搭建專案和筆記本。
- VS Code 文件中的新 C# - 瞭解使用 C# Dev Kit 擴充套件進行 C# 開發。
如果您想線上閱讀這些發行說明,請訪問 code.visualstudio.com 上的更新頁面。
內測版:想盡快嘗試新功能?您可以下載每晚的內測版構建,並儘快嘗試最新的更新。
輔助功能
可訪問檢視
一個新命令開啟輔助功能檢視(⌥F2 (Windows Alt+F2, Linux Shift+Alt+F2))允許螢幕閱讀器使用者逐字元、逐行檢查內容。當懸停或聊天面板響應獲得焦點時呼叫此命令。
輔助功能幫助改進
一個新命令開啟輔助功能幫助(⌥F1 (Windows Alt+F1, Linux Shift+Alt+F1))根據當前上下文開啟幫助選單。它目前適用於編輯器、終端、筆記本、聊天面板和內聯聊天功能。
從幫助選單中停用輔助功能幫助選單提示並開啟其他文件(如果有)。
筆記本的輔助功能幫助
為筆記本添加了一個新的輔助功能幫助選單,提供有關編輯器佈局以及如何導航和與筆記本互動的資訊。
聊天音訊提示
GitHub Copilot 聊天體驗現在有音訊提示,可以透過 `audioCues.chatRequestSent`、`audioCues.chatResponsePending` 和 `audioCues.chatResponseReceived` 啟用。
聊天輔助功能改進
聊天響應一經收到就會立即提供給螢幕閱讀器,並且內聯和聊天面板輔助功能幫助選單包含有關預期內容以及如何與每個功能互動的更詳細資訊。
設定編輯器 alt 文字改進
使用螢幕閱讀器導航時,設定編輯器(透過首選項:開啟設定 (UI) 命令訪問)現在不那麼冗長。特別是,設定範圍切換器會公佈範圍的實際名稱而不是檔案路徑,並且設定描述 alt 文字已清理,不包含原始 Markdown 格式。
工作臺
預覽影片的自動播放和迴圈
您現在可以為內建影片檔案預覽啟用影片自動播放和迴圈。相關設定是
- `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 拉取請求和問題擴充套件時顯示的評論。
解決 VS Code 中的問題
命令面板中有一個新命令幫助:解決問題,可幫助您解決 VS Code 中的問題。啟動的工作流透過使用特殊的故障排除配置檔案和 VS Code 的擴充套件二分法功能,幫助您識別問題原因。擴充套件二分法將以二分搜尋的方式啟用和停用您已安裝的擴充套件,同時您指示問題是否重現。這可以縮小導致問題的擴充套件範圍,並幫助您在報告問題時提供正確的資訊。
停用 Chromium 沙盒
如果您的場景中無法避免以高許可權使用者身份啟動 VS Code 桌面,例如在 Linux 上使用 `sudo` 啟動 VS Code 或在 Windows 上的 AppLocker 環境中以管理員身份啟動,則需要使用 `--no-sandbox --disable-gpu-sandbox` 命令列選項啟動 VS Code,以便應用程式按預期工作。
根據問題 #184687 中的反饋,現在有兩個新設定,可以在您需要停用 Chromium 沙盒時使其更簡單
-
一個新的命令列選項 `--disable-chromium-sandbox`,用於停用應用程式中所有程序的 Chromium 沙盒。此新選項可以替代 `--no-sandbox --disable-gpu-sandbox`。此選項適用於執行時在未來版本中可能新增的任何新程序沙盒。
-
要在多次啟動時停用 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`,然後展開縮寫,將新增行 `
`。可以使用 `emmet.syntaxProfiles` 設定配置屬性名稱和值字首。透過如下配置 `emmet.syntaxProfiles` 設定
"emmet.syntaxProfiles": {
"jsx": {
"markup.attributes": {
"class*": "className",
},
"markup.valuePrefix": {
"class*": "myStyles"
}
}
}
然後在 JSX 或 TSX 檔案中展開縮寫 `..test`,您將獲得縮寫 `
`。可調整大小的內容懸停
現在可以調整內容懸停控制元件的大小。您可以將滑鼠懸停在控制元件邊框上並拖動邊緣以更改懸停的大小。
終端
影像支援
終端中的影像(在上一個版本中進行了預覽)現在預設啟用。終端中的影像通常透過將影像畫素資料編碼為文字,然後透過特殊轉義序列寫入終端來工作。當前支援的協議有 sixel 和 iTerm 首創的內聯影像協議。
要手動測試影像,您可以從 libsixel 儲存庫下載並 `cat` 一個 `.six` 示例檔案
或者使用 imgcat python 包或 imgcat 指令碼與 .png、.gif 或 .jpg 檔案
此功能可以透過設定停用
"terminal.integrated.enableImages": false
多行和範圍連結格式
現在支援新的連結格式,包括需要向上掃描以查詢檔案的連結以及具有範圍(行到行或字元到字元)的連結。
-
@@ git 範圍連結
-
OCAML 的 Dune 風格範圍連結
-
ESLint 風格的多行連結
-
Ripgrep 風格的多行連結
已刪除已棄用的 shell 和 shellArgs 設定
`terminal.integrated.shell.*` 和 `terminal.integrated.shellArgs.*` 設定在一年前已被終端配置檔案替換,並已刪除。如果您仍在使用舊的 `shell` 和 `shellArgs` 設定,這裡有一個示例,前後對比以幫助遷移
// 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 終端中顯示輸出。
主題:Codesong(在vscode.dev上預覽)
現在測試結果檢視功能齊全,顯示測試輸出命令已被重定向以開啟測試結果檢視,而不是建立臨時終端。
原始碼管理
關閉儲存庫改進
過去,使用者可以使用Git:關閉儲存庫命令或原始碼管理檢視中的關閉儲存庫操作來關閉儲存庫,但某些操作(例如,從已關閉的儲存庫中開啟檔案)會重新開啟已關閉的儲存庫。此里程碑我們進行了一些改進,因此儲存庫已關閉的事實現在按工作區持久化。使用者可以使用Git:重新開啟已關閉的儲存庫...命令重新開啟已關閉的儲存庫。
Notebook
遠端開發儲存效能改進
以前,在 VS Code 的遠端擴充套件中儲存筆記本需要將整個筆記本傳送到擴充套件主機,這對於大型筆記本或在啟用自動儲存的情況下網路連線緩慢時可能會很慢。我們透過僅將筆記本的更改傳送到擴充套件主機來提高效能,從而加快筆記本的儲存和執行速度。雖然此功能預設仍然停用,但我們相信很快就能啟用它。要試用它,請將 `"notebook.experimental.remoteSave": true` 新增到您的設定中。有關更多詳細資訊,您可以關注問題 #172345。
筆記本全域性工具欄重構
筆記本編輯器的全域性工具欄已重寫以採用工作臺工具欄,允許使用者更自由地自定義工具欄操作。使用者現在可以右鍵單擊並隱藏工具欄中的操作。右鍵單擊工具欄中的操作會顯示隱藏該操作的選項,以及重置選單並恢復隱藏操作的選項。
工具欄繼續支援所有三種標籤策略:`always`、`never` 和 `dynamic`。您可以透過設定 `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 編輯器中。複製影像時,預覽編輯器必須處於焦點狀態。
將貼上的 URL 格式化為 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。
主題:Codesong(在vscode.dev上預覽)
此功能現在在 VS Code 桌面和 vscode.dev 上都可用。如果您已經在 Windows 裝置上執行隧道,請務必將 VS Code 更新到最新版本以啟用此功能。
對擴充套件的貢獻
GitHub Copilot
我們已在聊天檢視中引入了僅預覽的斜槓命令,可幫助您建立專案和筆記本並在工作區中搜索文字。
注意:要訪問聊天檢視、內聯聊天和斜槓命令(例如 `/search`、`/createWorkspace`),您需要安裝 GitHub Copilot Chat 擴充套件。
建立工作區
您可以使用 `/createWorkspace` 斜槓命令,讓 Copilot 為流行的專案型別建立工作區。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 偵錯程式擴充套件,稱為 Debugpy。透過將偵錯程式與 Python 擴充套件分離,您最終將能夠使用最新版本的 Python 擴充套件,同時使用舊版本的偵錯程式(透過停用擴充套件自動更新)。此擴充套件作為預釋出版本提供預覽,使用最新版本的 debugpy。我們計劃在不久的將來支援舊版本的 debugpy。
試用一下,並告訴我們一切是否正常。我們的計劃是棄用內建除錯功能,轉而支援此單獨的擴充套件。
Pylance 本地化
Pylance 擴充套件現已本地化!這意味著如果您安裝了 語言包 並在 VS Code 中設定為活動狀態,則擴充套件中的設定、命令和其他文字將翻譯為您首選的語言。
測試發現和執行重寫
本月,我們將繼續推出測試重寫作為一項實驗。提醒一下,此重寫重新設計了擴充套件中 unittest 和 pytest 的測試發現和執行背後的架構。此重寫目前對 100% 的 VS Code Insiders 使用者處於活動狀態,並將於本月開始逐步推廣到穩定版本。此重寫將很快採用,但目前用於選擇加入和退出的設定 `pythonTestAdapter` 仍然存在。
pytest 和 unittest 的動態執行結果
隨著新實驗的推出,pytest 和 unittest 也將迎來動態執行結果。以前,我們的測試結果只有在所有測試執行完成後才會返回,但現在有了此功能,測試結果會單獨交付,讓您可以即時檢視測試的透過和失敗。
第三方庫的索引持久化
Pylance 對環境中安裝的第三方庫進行索引,以啟用 IntelliSense 功能,例如自動完成、自動匯入、程式碼導航等。以前,Pylance 會在每次您在 VS Code 中開啟工作區時索引這些庫。現在,Pylance 會持久化這些庫的索引,從而減少重複索引過程的需要。
Python 3.7 支援已棄用
Python 3.7 於 2023 年 6 月 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 拉取請求和議題
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 擴充套件。
新的差異編輯器
此迭代我們完成了差異編輯器的重寫。重寫使我們能夠新增幾個新功能,提高效能,並修復一些錯誤。
要試用新的差異編輯器,請將 `"diffEditor.experimental.useVersion2": true` 新增到您的設定中。新的差異編輯器仍處於實驗階段,但最終將在未來更新中取代當前的差異編輯器。
所有呈現的功能都需要新的差異編輯器。
摺疊未更改的區域
使用 `diffEditor.experimental.collapseUnchangedRegions` 在新差異編輯器中啟用隱藏未更改的區域。此功能在審查包含大量未更改程式碼的大型差異時非常有用。
可以拖動或單擊隱藏行塊的邊框以顯示底部或頂部的程式碼。
顯示插入/刪除標記
插入/刪除標記指示行中單詞插入或刪除的位置,這在行同時包含插入和刪除時特別有用。
使用 `diffEditor.experimental.showEmptyDecorations` 啟用/停用插入和刪除標記。
改進的裝飾
整行刪除/插入現在具有全寬背景色。這顯著減少了噪音。
這是新差異編輯器如何突出顯示更改的示例
這是舊差異編輯器如何呈現裝飾(請注意右側第 57 行沒有全寬背景色)
同步差異更新
在新差異編輯器中輸入時,更改會立即以啟發式方式應用,並在延遲一段時間後觸發非同步差異計算。在舊差異編輯器中,更改不會立即應用,導致輸入時出現可見的閃爍。
新 - 輸入時差異會立即更新
舊 - 有一些可見的閃爍
移動檢測
此實驗功能檢測檔案內移動的程式碼塊。使用 `diffEditor.experimental.showMoves` 開啟它。目前,只檢測簡單的移動,但我們計劃在未來改進此功能。一旦選擇了移動的程式碼塊,源位置和目標位置將對齊並顯示它們之間的差異。
由於移動檢測仍處於實驗階段,預計未來的更新中會有重大變化。
擴充套件創作
SecretStorage API 現在使用 Electron API 而不是 keytar
SecretStorage API 已被推薦用於儲存密碼、訪問令牌等機密資訊多年。其底層一直使用 keytar,一個用於在作業系統金鑰環中儲存機密資訊的抽象層。由於 keytar 的棄用和存檔,我們尋找了其他解決方案,特別是從我們的執行時 Electron 尋找解決方案。
此版本,我們已開始從 keytar 遷移到 Electron 的 safeStorage API。此切換對您應該是透明的,因為機密資訊是從 keytar 檢索並使用 Electron 的 `safeStorage` API 恢復的。將來,我們將移除此遷移,以便完全移除我們對 keytar 的依賴。
keytar 棄用計劃
一段時間以來,VS Code 對 keytar 有很大的依賴,keytar 是一個用於在作業系統金鑰環中儲存機密的抽象層。此外,在引入 SecretStorage API 之前,我們在 VS Code 中包含了一個 keytar shim,擴充套件依賴於此。keytar 本身已正式存檔且不再維護……為了透過不依賴於已存檔的軟體來儲存機密,我們正在制定一項計劃,以從 VS Code 中移除此 shim。
我們已經直接聯絡了仍在使用的 keytar shim 的流行擴充套件的作者,他們正在努力擺脫它。我們希望在此以及在我們的 GitHub 討論中也傳達此資訊,以便我們儘量減少由於此更改造成的中斷。我們知道這並不是最好的訊息,因為我們也有相當多的工作要移除我們對 keytar 的依賴,但我們相信這是確保擴充套件使用安全 API 的正確做法。
如果您在擴充套件中直接使用 keytar,有幾個選項可供您考慮
- (推薦)使用 VS Code 在 ExtensionContext 上提供的 SecretStorage API。此 API 是跨平臺的,適用於 VS Code 支援的所有平臺。它也由 VS Code 團隊維護,將繼續維護,並且已成為 VS Code API 的一部分多年。
- (不推薦)您可以將 keytar 模組與您的擴充套件捆綁在一起。請記住,keytar 是一個原生節點模組,這意味著您需要為您要支援的每個平臺釋出一個特定於平臺的擴充套件。
時間線:目前的計劃是在八月初從 VS Code Insiders 中移除此 shim,這意味著 2023 年 9 月的穩定版本將是第一個沒有此 shim 的版本。
此項工作的跟蹤在問題 #115215 中,如果您有任何疑問,請隨時在我們的 GitHub 討論中提出。
改進了本地檔案的 vscode.fs.writeFile 效能
當您使用 `vscode.fs.writeFile` API 將資料寫入檔案時(您應該這樣做!),寫入擴充套件主機本地檔案的操作現在會更快地解決。
以前,擴充套件主機將寫入操作委託給 VS Code 客戶端執行,但現在該操作直接在擴充套件主機內部執行,從而節省了往返時間。
樹複選框 API
`TreeItem` 的 `checkboxState` API 已最終確定。預設情況下,帶有複選框的樹項將由 VS Code 管理其選中狀態。此行為可以透過將 `TreeViewOptions` 屬性 `manageCheckboxStateManually` 設定為 `true` 來更改。當 `manageCheckboxStateManually` 設定為 `true` 時,擴充套件負責管理父級和子級複選框的選中和取消選中。
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 的實際應用,它現在描述了更改的作用
提議的 API
每個里程碑都會帶來新的提議 API,擴充套件作者可以嘗試這些 API。一如既往,我們希望得到您的反饋。以下是嘗試提議 API 的步驟
- 查詢您要嘗試的提議並將其名稱新增到
package.json#enabledApiProposals
。 - 使用最新的 @vscode/dts 並執行
npx @vscode/dts dev
。它會將相應的d.ts
檔案下載到您的工作區。 - 您現在可以根據該提議進行程式設計。
您不能釋出使用提議 API 的擴充套件。下個版本中可能會有破壞性更改,我們絕不希望破壞現有擴充套件。
檔案系統提供程式的只讀訊息
當您 `registerFileSystemProvider` 時,您可以提供只讀訊息,而不是簡單地將檔案系統標記為只讀。當用戶嘗試編輯來自該提供程式的檔案時,編輯器中會顯示以下訊息。
工程
匯出符號的名稱混淆
去年我們開始混淆私有屬性和方法的名稱以減小程式碼大小。我們現在還混淆匯出符號名稱,這使我們的主工作臺 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 上的啟動時間。
事件發射器最佳化
VS Code 在整個程式碼庫中廣泛使用事件發射器。我們在此迭代中優化了這些發射器,這略微改善了啟動時間和記憶體使用情況。
您可以在問題 #185789 中閱讀有關此改進的更多資訊。
終端 pty 主機改進
“Pty 主機”程序管理終端啟動的所有 shell 程序,並進行了一些改進
- 效能
- 現在有一個與 pty 主機程序的直接通訊通道。由此產生的最顯著變化是終端輸入延遲的減少。
- 透過減少不必要的呼叫和在恢復多個終端時並行化任務,改進了重新連線(重新載入視窗)和程序恢復(重新啟動)效能。
- 我們現在會收集終端啟動和重新連線時的效能指標,可以透過開發者:啟動效能命令檢視。
- 診斷
- 所有與終端相關的日誌已從視窗輸出通道移至新的終端輸出通道。
- 當跟蹤日誌級別處於Pty 主機輸出通道時,終端將記錄所有 RPC 呼叫,這將有助於診斷終端問題。
文件
新 C# 主題
您可以透過一套新的C# 文章瞭解如何使用 C# Dev Kit 擴充套件在 VS Code 中進行 C# 開發。您將找到解釋如何入門的主題,描述擴充套件的語言功能(程式碼導航、重構、除錯),以及幫助開發生命週期,例如專案和包管理。
Glob 模式參考
VS Code 有自己的 glob 模式實現,它用於搜尋檔案和資料夾過濾、自定義檔案資源管理器檢視等功能。要了解詳細資訊,您可以查閱新的Glob 模式參考。
值得注意的修復
感謝
最後但同樣重要的是,向 VS Code 的貢獻者們致以衷心的感謝。
問題跟蹤
對我們問題跟蹤的貢獻
- @gjsjohnmurray (John Murray)
- @starball5 (starball)
- @IllusionMH (Andrii Dieiev)
- @ArturoDent (ArturoDent)
拉取請求
對 vscode
的貢獻
- @AlbertHilb:將 `macros` 條目新增到 markdown-math 配置 PR #180458
- @antonioprudenzano (Antonio Prudenzano):功能:#132598 在 Windows 和 macOS 上執行翻譯構建時新增通知 PR #181191
- @cadinsl:編輯使用者和工作區選項卡以僅顯示名稱以提高輔助功能 #184530 PR #184627
- @CGNonofr (Loïc Mangeonjean):從 `array.some` 回撥中移除副作用 PR #184919
- @ChaseKnowlden:chore:更新 inno setup 中的最小可安裝版本 PR #175818
- @cmtm (Chris Morin):即使不在 git 倉庫中也遵守 gitignore 檔案 PR #183368
- @gjsjohnmurray (John Murray)
- 實現 `files.dialog.defaultPath` 設定 (修復 #115730) PR #182908
- 在面板標題欄中正確顯示終端圖示 (修復 #183679) PR #183680
- 允許從簡易瀏覽器中檢視的頁面下載 PR #185117
- @hermannloose (Hermann Loose):修復評論面板樹檢視圖示的顏色定義 PR #185654
- @hsfzxjy:修復 #185858:新增選項以啟用/停用雙擊選項卡標題時編輯器組最大化 PR #185966
- @iifawzi (Fawzi Abdulfattah):功能:新增自動播放和迴圈影片的可選支援 PR #184758
- @InigoMoreno (Iñigo Moreno):更新 argv.ts 以允許空類別 PR #181311
- @jacekkopecky (Jacek Kopecký):新增 tabSizingFixedMinWidth 設定 (#_185766) PR #186058
- @jeanp413 (Jean Pierre)
- 修復 `remote.autoForwardPortsSource` 有時未從機器設定中遵守 PR #184860
- 修復 vscode 在瀏覽器中 xterm 搜尋外掛載入兩次的問題 PR #184922
- @jhunt-scottlogic (Joshua Hunt):Test Explorer 過濾器 UI PR #183192
- @jjaeggli (Jacob Jaeggli):為編輯器查詢小部件新增對話方塊角色 PR #172979
- @joshaber (Josh Abernathy):修復當隧道工廠丟擲錯誤時移除隧道 PR #186566
- @kevalmiistry (Keval Mistry):修復:衝突操作欄重疊完整合並按鈕已修復 PR #184603
- @max06 (Flo):恢復 fish 的 ShellIntegration (#_184659) PR #184739
- @r3m0t (Tomer Chachamu):在 webview 中新增 vscode-context-menu-visible 類 PR #181433
- @russelldavis (Russell Davis):為 smartSelect 新增忽略子詞的選項 PR #182571
- @tisilent (xie jialong 努力鴨):更新 gutterOffsetX 範圍 (dirtydiff, fold) PR #184339
- @weartist (Hans)
- 調整到正確的連結 PR #184011
- 修復 #182013 PR #184677
- 修復 #185051 PR #185431
- 修復 #153590 PR #185467
- 修復:#185359 PR #185718
- @yshaojun
- 修復:mergeEditor 中游標在第 1 列不可見 (#_183736) PR #184604
- 修復:內聯完成不顯示 (#_184108) PR #185215
對 vscode-emmet-helper
的貢獻
- @iifawzi (Fawzi Abdulfattah):修復:將連續的點標記為噪音並使 jinja 語法縮寫無效 PR #80
對 `vscode-livepreview` 的貢獻
- @toyobayashi (Toyo Li):修復外部瀏覽器中的控制檯行號 PR #503
對 vscode-pull-request-github
的貢獻
- @SKPG-Tech (Salvijus K.):修復沒有使用者名稱時為空 PR #4892