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

2022 年 2 月(版本 1.65)

更新 1.65.1:此更新解決了這些安全問題

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

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


歡迎使用 Visual Studio Code 2022 年 2 月版。

如果您想線上閱讀這些發行說明,請訪問 code.visualstudio.com 上的更新頁面。

工作臺

新的編輯器歷史記錄導航

VS Code 中的編輯器歷史記錄導航功能驅動著一些常用命令,例如後退前進。隨著時間的推移,積累了許多功能請求來改進此功能並增加更多功能。此里程碑從頭開始重寫了編輯器歷史記錄導航,以解決大多數這些請求。

瞭解編輯器組的導航

現在,在編輯器歷史記錄中導航時會考慮編輯器組。在編輯器歷史記錄中向後和向前導航將啟用並聚焦編輯器組中的編輯器,就像它們以前一樣。刪除編輯器組時,所有相關的歷史記錄條目都會被丟棄。

在下面的短片中,第一次後退將游標放在新的編輯器組中,然後第二次後退導航返回到原始編輯器組。

主題:GitHub Light

新的設定以將導航範圍限定為編輯器組或編輯器

新的設定 workbench.editor.navigationScope 可以將編輯器歷史記錄導航範圍限定為僅活動編輯器組甚至編輯器。支援的值為:

  • default:編輯器導航在所有開啟的編輯器組和編輯器中均有效。
  • editorGroup:編輯器導航僅限於活動編輯器組的已開啟編輯器。
  • editor:編輯器導航僅限於活動編輯器。

如果將範圍配置為 editorGroupeditor,則每個編輯器組或編輯器都將有自己的導航堆疊,可以單獨導航。

Notebook 支援

您現在可以在任何 notebook 中導航您選擇的單元格。導航在編輯器之間工作,就像您可以在文字編輯器中在游標位置之間導航一樣。

主題:GitHub Light

導航編輯或導航位置的新命令

預設情況下,每當您跨編輯器導航時,都會新增編輯器導航位置,但也會在編輯器內導航時新增(例如,切換 notebook 單元格或更改文字編輯器中的選擇)。如果您覺得記錄的位置太多,則添加了新命令以將位置減少到以下任一位置:

  • 導航位置 - 例如,使用轉到定義時。
  • 編輯位置 - 每當編輯器更改時。例如,在文字編輯器中打字時。

您可以將自己喜歡的鍵繫結分配給這些命令,以相應地更改導航。

編輯位置命令

  • workbench.action.navigateForwardInEditLocations - 在編輯位置中向前導航。
  • workbench.action.navigateBackInEditLocations - 在編輯位置中向後導航。
  • workbench.action.navigatePreviousInEditLocations - 在編輯位置中導航到上一個。
  • workbench.action.navigateToLastEditLocation - 轉到最後一個編輯位置(此命令以前就存在)。

導航位置命令

  • workbench.action.navigateForwardInNavigationLocations - 在導航位置中向前導航。
  • workbench.action.navigateBackInNavigationLocations - 在導航位置中向後導航。
  • workbench.action.navigatePreviousInNavigationLocations - 在導航位置中導航到上一個。
  • workbench.action.navigateToLastNavigationLocation' - 轉到最後一個導航位置。

已新增關聯的上下文鍵,以使分配鍵繫結更加強大。

編輯位置上下文鍵

  • canNavigateBackInEditLocations - 是否可以在編輯位置中向後導航。
  • canNavigateForwardInEditLocations - 是否可以在編輯位置中向前導航。
  • canNavigateToLastEditLocation - 是否可以轉到最後一個編輯位置。

導航位置上下文鍵

  • canNavigateBackInNavigationLocations - 是否可以在導航位置中向後導航。
  • canNavigateForwardInNavigationLocations - 是否可以在導航位置中向前導航。
  • canNavigateToLastNavigationLocation - 是否可以轉到最後一個導航位置。

新的佈局控制選項

上一個里程碑中,我們在標題欄中引入了實驗性的佈局控制(透過將 workbench.experimental.layoutControl.enabled 設定為 true 啟用)。我們聽到了反饋,雖然控制中的操作很有用,但它們需要太多的點選。因此,我們添加了幾個 UI 選項供所有人試用,使用設定 workbench.experimental.layoutControl.type。此設定具有以下選項:

  • menu:以前的行為,帶有一個開啟選單的按鈕(預設)。
  • toggles:一個新的選項,顯示三個按鈕來切換面板、側邊欄和側面板。
  • both:一個新的選項,顯示切換按鈕,然後是選單按鈕,這仍然允許您相當快地訪問自定義佈局快速選擇。

下圖顯示了 layoutControl.type 設定為 both 以顯示三個切換按鈕以及選單下拉列表。

Layout control with type set to both to show toggle buttons and menu dropdown

淺色高對比度主題

添加了一個新的淺色高對比度主題,以提高編輯器的易讀性和可讀性。

VS Code using Light High Contrast theme

音訊提示

此版本添加了新的音訊提示,包括警告、內聯建議和偵錯程式斷點命中的音訊提示。聲音已調整,並且常規設定 audioCues.enabled 已棄用,取而代之的是各個 audioCues.* 設定

A screenshot of all available audio cue enablement settings

除了 lineHasWarning 之外的所有音訊提示都預設對螢幕閱讀器使用者啟用(設定值 auto)。

一個新的音訊提示命令幫助:列出音訊提示列出了所有可用的音訊提示,允許您在列表中移動時聽到每個音訊提示,並檢視當前啟用了哪些提示。

Audio cue help command dropdown with the warning and breakpoint audio cues enabled

拖放“問題”和“搜尋”結果

您現在可以將“問題”、“搜尋”或“引用”結果拖放到編輯器中,開啟檔案並顯示結果位置。如果您想啟動新的編輯器組或將結果放到現有的編輯器組中,這會很有用。

設定編輯器拆分檢視

“設定”編輯器現在使用可調節的拆分檢視將目錄與設定列表分開。

改進的自動語言檢測

啟用新設定 workbench.editor.historyBasedLanguageDetection 後,無標題編輯器將使用改進的自動語言檢測演算法,該演算法會考慮您的編輯器歷史記錄和當前工作空間的內容。與以前相比,新演算法需要更少的文字輸入即可提供檢測結果。

下面是在 JavaScript、TypeScript、Markdown、Python、PHP 和 C++ 中使用此功能的示例(支援更多語言)

主題:GitHub Light + HC Customizations

改進的語言擴充套件建議

語言功能擴充套件建議現在會在推薦時考慮 Marketplace 中的其他重要語言擴充套件。例如,如果您安裝了 Apache NetBeans Java 擴充套件,VS Code 就不會推薦 Java Extension Pack

擴充套件樹懸停的鍵盤快捷鍵

您可以使用鍵盤快捷鍵 Ctrl/Cmd+K, Ctrl/Cmd+I 觸發懸停,以在擴充套件貢獻的自定義樹檢視中顯示。

編輯器

用程式碼片段包圍

有一個新命令可以用程式碼片段包圍當前選擇。選擇一些文字,從命令面板 (⇧⌘P (Windows, Linux Ctrl+Shift+P)) 呼叫用程式碼片段包圍命令,然後從下拉列表中選擇一個程式碼片段。

在下面的短片中,選定的方法被 try/catch 程式碼片段包圍。

任何使用 TM_SELECTED_TEXTSELECTION 變數的適用程式碼片段都將在用程式碼片段包圍快速選擇下拉列表中提供。自定義使用者或專案程式碼片段也包括在內。

可訪問的內聯提示

內聯提示在原始碼中顯示附加資訊,例如變數的推斷型別。對於螢幕閱讀器使用者,有一個新命令可幫助實現此功能。從命令面板中選擇讀取帶有內聯提示的行,編輯器將讀取當前行並穿插其提示。

上下文 Unicode 突出顯示

為了報告更少的誤報,如果周圍的字元在視覺上表示非 ASCII 指令碼,則不再突出顯示模糊和不可見的 Unicode 字元。因此,在受信任的工作空間中,僅突出顯示不可見或可能與 ASCII 字元混淆的字元。例外情況是那些包含在非 ASCII 字元單詞中的字元,其中至少有一個字元不能與 ASCII 字元混淆。

以前您可以在 const 字串中看到多個誤報

Screenshot of text with many false positives and one true positive

之後只突出顯示令人困惑的字元

Screenshot of text with only one true positive

終端

多行貼上警告

當 shell 不支援多行時,在終端中貼上多行時,預設情況下會顯示一個對話方塊。此警告會顯示在帶括號的貼上模式和 PowerShell 中,當我們直接將 Ctrl+V 交給 shell 時。對話方塊上有一個不再詢問我複選框,可輕鬆停用該功能。

此版本中對終端連結的實現進行了重大重構。這簡化並改進了功能的可維護性,但也帶來了

  • 連結突出顯示再次起作用。
  • 已解析連結的快取,減少某些連結顯示的延遲。
  • 工作空間搜尋連結現在由與已驗證連結相同的程式碼處理,以提高一致性並改進行/列識別。
  • 一些 bug 修復。

上一個版本引入的開啟最後一個檔案連結開啟檢測到的連結...命令現在排除了資料夾,這應該使它們更有用。

原始碼管理

差異編輯器管理

在此里程碑中,我們進行了一些更改,有助於管理差異編輯器。命令面板中有一個新命令Git:關閉所有差異編輯器,可用於關閉所有開啟的差異編輯器。還有一個新設定 git.closeDiffOnOperation,用於在暫存、提交、丟棄、暫存或取消暫存更改時自動關閉差異編輯器。

Git 命令輸出日誌記錄

執行 Git 命令時,stderr 的內容會記錄在Git 輸出視窗中。有一個新設定 git.commandsToLog,用於指定將 stdout 的內容記錄到Git 輸出視窗中的 Git 命令列表。

除錯

延遲變數

訪問變數的值可能會產生副作用或開銷很大。VS Code 的通用偵錯程式現在可以顯示一個按鈕,供使用者按需獲取變數值。這適用於支援新“lazy”變數功能的除錯擴充套件。目前,這僅由內建的 JavaScript 偵錯程式針對屬性 getter 實現,但我們預計其他偵錯程式擴充套件將很快跟進。

任務

有一個新的與平臺無關的 userHome 變數,您可以在任務中使用它。

{
  "label": "Test Home",
  "type": "shell",
  "command": "ls ${userHome}"
}

Notebook

內建輸出渲染器更新

我們將文字、影像、HTML 和程式碼渲染器從 VS Code 核心移動到內建的輸出渲染器擴充套件。透過此更改,VS Code 現在可以在這些輸出型別上搜索文字。

在下面的短片中,搜尋 item 最初有 3 個程式碼單元格結果,但可以過濾以包括單元格輸出。

Sticky scrolling notebook cell buttons

向下滾動程式碼單元格時,執行按鈕和單元格工具欄現在將貼上到螢幕頂部。這使得在長程式碼單元格中工作時更容易訪問它們。

主題:Dracula

語言

TypeScript 4.6

VS Code 現在附帶 TypeScript 4.6。此更新帶來了一些新的語言功能,以及工具改進和錯誤修復。您可以在 TypeScript 部落格上閱讀有關 TypeScript 4.6 的更多資訊。

JavaScript 檔案中的語法錯誤報告

由於 TypeScript 4.6,VS Code 現在會在 JavaScript 檔案中報告一些常見的語法錯誤。這包括解析錯誤,以及塊作用域變數的無效重新宣告

Detecting a redeclaration of a const variable in a JavaScript file

以前,這些錯誤只有在您在 JavaScript 中啟用語義檢查時才會報告。

您可以透過設定停用此錯誤報告

"javascript.validate.enable": false

可以按語言配置更多 JS/TS 設定

現在可以將更多 JavaScript 和 TypeScript 設定配置為特定於語言的設定。特定於語言的設定很有用,例如,如果您想為 javascriptjavascriptreact 設定不同的設定。

新的特定於語言的啟用設定包括

  • javascript.preferences.quoteStyle, typescript.preferences.quoteStyle
  • javascript.preferences.importModuleSpecifier, typescript.preferences.importModuleSpecifier
  • javascript.preferences.importModuleSpecifierEnding, typescript.preferences.importModuleSpecifierEnding
  • javascript.preferences.jsxAttributeCompletionStyle, typescript.preferences.jsxAttributeCompletionStyle
  • javascript.preferences.renameShorthandProperties, typescript.preferences.renameShorthandProperties
  • javascript.preferences.useAliasesForRenames, typescript.preferences.useAliasesForRenames
  • javascript.suggest.enabled, typescript.suggest.enabled
  • javascript.suggest.completeJSDocs, typescript.suggest.completeJSDocs
  • javascript.suggest.jsdoc.generateReturns, typescript.suggest.jsdoc.generateReturns
  • javascript.autoClosingTags, typescript.autoClosingTags

新的 Lua 語法突出顯示語法

VS Code 有一個新的、維護更好的 Lua 語法,用於 Lua 檔案的語法突出顯示。新語法得到積極維護,修復了舊語法中存在的問題,並支援較新的 Lua 標記。

Web 版 VS Code

重新開啟本地檔案和資料夾

當您使用支援Web 檔案系統訪問 API的瀏覽器訪問 vscode.devinsiders.vscode.dev 時,現在可以使用最近開啟的本地檔案和資料夾列表。選擇本地檔案將在編輯器中開啟它,選擇本地資料夾將更新檔案資源管理器以顯示其內容。在顯示內容之前,瀏覽器可能會要求您確認本地檔案訪問許可權。

遠端倉庫

GitHub 儲存庫

在此里程碑中,在 vscode.devgithub.dev 上編輯 GitHub 儲存庫時,合併衝突解決方案得到了改進。您的編輯器中現在有合併衝突裝飾,其中包含接受當前更改接受傳入更改接受兩者更改的選項。

原始碼管理檢視中還有用於包含合併衝突的檔案的暫存更改操作。

此外,您現在可以輕鬆地在 vscode.devgithub.dev 上的 GitHub 儲存庫中暫存和取消暫存特定資料夾下的所有更改。為此,請右鍵單擊原始碼管理檢視並選擇以樹形式檢視

主題:One Monokai

工作空間搜尋和查詢所有引用現在預設下載並索引儲存庫的完整副本,而不是像以前那樣預設為提供部分結果。

有幾個設定可以配置此索引功能

  • remoteHub.indexing.verboseDownloadNotification - 控制下載通知是顯示為彈出視窗(預設)還是顯示在狀態列中。
  • remoteHub.indexing.maxIndexSize - 控制要下載的索引大小限制。如果超過此限制,下載將取消,並將提供部分結果。您可以將此設定留空以從不下載儲存庫並始終使用部分結果。

Azure Repos

在此里程碑中,我們將 Azure Repos 支援從使用特定的 Azure DevOps 身份驗證提供程式切換到使用通用的 Microsoft 身份驗證提供程式(Settings Sync 使用)。當您訪問 Azure Repo 時,系統會提示您再次登入,但您所有儲存的更改都將保留。

對擴充套件的貢獻

十六進位制編輯器資料檢查器改進

以前,十六進位制編輯器擴充套件始終在側邊欄中顯示其資料檢查器,並在顯示十六進位制編輯器時顯示它。然而,一些使用者發現這很煩人,並且它導致了其整合的用於偵錯程式的記憶體檢查器的特別具有破壞性的體驗。現在,資料檢查器將顯示在被檢查位元組的右側。如果編輯器太窄,資料檢查器將顯示在懸停小部件中。

Image showing the Data Inspector to the right side of the hex bytes

主題:Codesong

這可以透過 hexeditor.inspectorType 設定進行配置,該設定可以採用以下三個值之一

  • aside - 在側面顯示資料檢查器。
  • hover - 僅在懸停時顯示資料檢查器,無論編輯器寬度如何。
  • sidebar - 像以前一樣在側邊欄中顯示資料檢查器。

GitHub 拉取請求和議題

我們繼續開發 GitHub Pull Requests and Issues 擴充套件,它允許您處理、建立和管理拉取請求和問題。檢視擴充套件的 0.38.0 更改日誌以檢視亮點。

預覽功能

終端 Shell 整合

終端中的 shell 整合最初是在上一個版本中引入的,本月有許多改進。作為回顧,此功能允許 VS Code 對終端中發生的事情獲得額外的見解,而這在以前是 largely 未知的。該功能仍被認為是實驗性的,您可以透過 terminal.integrated.shellIntegration.enabled 設定選擇啟用。

此版本中最大的變化是 shell 整合檢測到的命令現在在左側的“gutter”中具有裝飾。命令裝飾在視覺上分解了緩衝區,並提供了對使用 shell 整合功能的資訊和操作的訪問。有三種類型的命令裝飾:錯誤、成功和預設,由命令的退出程式碼決定。

A command succeeds and a success decoration is placed to the left of the prompt. A command fails and an error decoration is placed to the left of the prompt. A placeholder decoration is to the left of no-op commands and the current command before it's been executed.

單擊裝飾會在選單中顯示特定於該命令的操作,目前包括重新執行命令複製輸出

Command decoration context menu showing Re-run Command and Copy Output actions

將滑鼠懸停在裝飾上會顯示有關命令的資訊,例如自執行以來的時間以及相關的退出程式碼。

Command decoration hover displaying Show Command Actions option and information that the command executed 3 minutes ago and returned failed exit code 127

可以透過將 terminal.integrated.shellIntegration.decorationsEnabled 設定為 false 來停用裝飾。可以透過 terminal.integrated.shellIntegration.decorationIcon* 設定配置單個圖示,並且這些新主題鍵設定顏色

  • terminalCommandDecoration.successBackground
  • terminalCommandDecoration.errorBackground
  • terminalCommandDecoration.defaultBackground

以下是其他主要更改

  • 啟用設定已重新命名為 terminal.integrated.shellIntegration.enabled
  • 在所有受支援的 shell 中啟用 shell 整合的機制現在更加可靠。
  • 使用遠端連線視窗(SSH、WSL、容器)時,shell 整合現在應該可以工作。
  • 行繼續符(例如,$PS2)現在應該在所有受支援的 shell 上工作。
  • “跳過”的命令現在被特別標記。例如,在使用 Ctrl+C 或執行空命令之後。
  • 執行最近的命令轉到最近的目錄命令現在會在會話之間儲存歷史記錄。可以透過 terminal.integrated.shellIntegration.history 設定配置儲存歷史記錄。

ESLint

ESLint 擴充套件初步支援包含可以使用 ESLint 驗證的單元格的 notebook 文件。此支援僅在擴充套件的預釋出版本中可用。

擴充套件創作

語言狀態項

我們已經最終確定了語言狀態項的 API。此 API 顯示活動編輯器的特定於語言的資訊。這可以是有關專案或工具集版本的常規資訊,也可以顯示錯誤和警告。

JSON language status item linking to schema used for validation

該 API 類似於狀態列 API,可以透過 vscode.languages.createLanguageStatusItem(...) 訪問。應使用文件選擇器建立語言狀態項,以便 VS Code 可以在活動編輯器更改時顯示和隱藏它。

內聯提示

內聯提示提供程式 API 現已最終確定。它允許在原始碼中嵌入附加資訊。下圖顯示了 TypeScript 如何為推斷型別新增內聯提示。

TypeScript inferred variable type  shown as inlay hint

API 是圍繞 InlayHintsProvider 構建的。它提供 InlayHint 物件,這些物件具有一些有趣的特性

  • 內聯提示可以有工具提示和命令。
  • 提示的標籤可以由多個部分組成,每個部分又可以有工具提示和命令。
  • 標籤部分還可以具有關聯的源位置,從而為該部分啟用轉到定義等語言功能。

狀態列焦點邊框

我們透過為狀態列和狀態列專案新增焦點邊框,使狀態列導航更輕鬆、更易於訪問。

主題作者可以透過配置兩個新主題顏色來自定義邊框顏色

  • statusBar.focusBorder:聚焦時整個狀態列的邊框顏色。
  • statusBarItem.focusBorder:聚焦時狀態列專案的邊框顏色。

測試重新整理操作和 sortText

我們已經最終確定了我們的提案,將標準重新整理處理程式新增到 TestController 介面。如果擴充套件將方法分配給此屬性,VS Code 將在“測試資源管理器”檢視中顯示“重新整理”圖示。

此外,TestItem 現在可以具有 sortText 屬性,該屬性控制沒有特定檔案位置的專案的排序順序。

評論時間戳

Comments API 現在允許您為每個 Comment 新增一個 timestamp。此時間戳顯示在“評論”小部件和“評論”檢視中。預設情況下,時間戳顯示為相對時間(例如,“2 周前”),但可以使用使用者設定 comments.useRelativeTime 來顯示確切時間。時間戳的懸停將始終顯示確切時間。

vscode-test 包重新命名為 @vscode/test-electron

vscode-test 包已重新命名為 @vscode/test-electron。如果擴充套件作者包含該包,則應更新其擴充套件的 package.json 檔案 devDependencies 中的條目。@vscode/test-electron 包有助於執行 VS Code 擴充套件的整合測試。您可以在 vscode-test 儲存庫中瞭解更多資訊。

更新的 codicons

以下新圖示已新增到我們的 codicon 庫中:

  • arrow-circle-down
  • arrow-circle-left
  • arrow-circle-right
  • arrow-circle-up
  • error-small
  • indent
  • layout-activitybar-left
  • layout-activitybar-right
  • layout-centered
  • layout-menubar
  • layout-panel-center
  • layout-panel-justify
  • layout-panel-left
  • layout-panel-right
  • layout-panel
  • layout-sidebar-left
  • layout-sidebar-right
  • layout-statusbar
  • layout
  • newline
  • record-small
  • target

Preview of updated icons

圖示貢獻點現已最終確定

圖示貢獻點允許擴充套件定義一個新圖示(按 ID),以及一個預設圖示。然後,該圖示 ID 可以由擴充套件(或依賴於該擴充套件的任何其他擴充套件)在任何可以使用 ThemeIcon 的地方使用 new ThemeIcon("iconId"),在 Markdown 字串中 ($(iconId)),以及作為某些貢獻點中的圖示。

產品圖示主題可以重新定義圖示(如果它們知道圖示 ID)。

"contributes": {
  "icons": {
    "distro-ubuntu": {
      "description": "Ubuntu icon",
      "default": {
        "fontPath": "./distroicons.woff",
        "fontCharacter": "\\E001"
      }
    },
    "distro-fedora": {
      "description": "Ubuntu icon",
      "default": {
        "fontPath": "./distroicons.woff",
        "fontCharacter": "\\E002"
      }
    }
  }
}

在上面的示例中,一個擴充套件定義了兩個新圖示 ID distro-ubuntudistro-fedora,以及預設圖示定義。圖示在給定字型字元處的圖示字型中定義。

檔案圖示主題:支援檔案關聯中的資料夾名稱

檔案圖示主題中,folderNamesfolderNamesExpandedfileNamesfileExtensions 中的關聯現在也可以包含資料夾名稱

  "fileNames": {
    "system/win.ini": "_win_ini_file"
  },

system/win.ini 意味著關聯匹配資料夾 system 中的名為 win.ini 的檔案。

  "fileExtensions": {
    "system/ini": "_ini_file"
  },

system/ini 意味著關聯匹配資料夾 system 中的名為 *.ini 的檔案。

  "folderNames": {
    ".vscode/extensions": "_vscode_folder"
  },

在 Web 版 VS Code 中執行遠端安裝的 Web 擴充套件(使用 Codespaces)

Web 版 VS Code 和 Codespaces 現在支援在 Web 擴充套件主機中執行遠端安裝的Web 擴充套件。例如,如果您在 GitHub Codespace 中安裝了 Vim 擴充套件(透過 devcontainer.json 檔案中的配置),那麼當您在瀏覽器中開啟 codespace 時,Vim 將載入到 Web 擴充套件主機中。請閱讀我們的擴充套件主機文件以獲取更多資訊。

注意:目前已知此類擴充套件載入 Web worker 的限制。有關詳細資訊,請參閱問題

偵錯程式擴充套件創作

支援“重要”輸出事件

最近,除錯介面卡協議添加了 Output 事件的 important 類別。此類別標記應突出顯示且不應被使用者忽略的事件。VS Code 現在將為帶有 important 類別的訊息顯示通知彈出視窗。它們仍將記錄到“除錯控制檯”。

支援“lazy”變數

某些變數是動態的,需要執行程式碼才能獲取值。除錯介面卡可能不想自動檢索它們的完整值,因為這樣做可能會產生副作用或開銷很大。

一些除錯介面卡透過將“昂貴的變數”表示為佔位符物件來解決此問題,使用者需要顯式“展開”該物件才能獲取值。VS Code 的內建 js-debug 對 JS/TS getter 使用此方法

class Person {
  name = 'Danny';
  get email(): string {
    return 'foo@example.bar';
  }
  get address(): Address {
    return new Address();
  }
}
class Address {
  street = 'Main Street';
  city = 'Zurich';
}

以下螢幕截圖顯示,中間物件使得難以理解有效的資料結構

在此版本中,我們改進了 VS Code,以緊湊的形式渲染中間物件,帶有一個 (...) 按鈕用於請求完整值。

除錯介面卡可以透過新增具有 lazy 屬性的 VariablePresentationHint請參閱 DAP 新增)來請求變數的這種新表示樣式。如果客戶端不支援 lazy 標誌,則變數將像以前一樣顯示。

語言伺服器協議

下一版本的 語言伺服器協議以及相應的 npm 模組已釋出。新版本包含以下更改

  • LSP 型別到 VS Code 型別以及反之亦然的轉換現在是完全非同步的。此更改避免了大型資料流的轉換,這可能會阻塞擴充套件主機。請注意,這是庫中的重大 API 更改(有關詳細資訊,請參閱 README.md)。它不會影響協議本身的向後相容性。
  • notebook 文件的擬議實現得到了增強。它現在具有完整的中介軟體和提供程式支援。

除錯介面卡協議

已向 除錯介面卡協議添加了幾個新屬性。

  • 新的布林屬性 lazy 已新增到 VariablePresentationHint。客戶端可以使用可選標誌來呈現具有支援特定手勢以獲取其值的 UI 的變數。
  • 新的可選字串屬性 detail 已新增到 CompletionItem。使用此人類可讀的字串,客戶端可以顯示有關專案的附加資訊,例如型別或符號資訊。請注意,VS Code 尚不支援此屬性。

建議的擴充套件 API

每個里程碑都會帶來新的提議 API,擴充套件作者可以嘗試這些 API。一如既往,我們希望得到您的反饋。以下是嘗試提議 API 的步驟

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

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

時間線專案中的 Markdown 懸停

TimelineProvider 提供的專案現在可以支援 detail 屬性中的 Markdown,該屬性用於為其工具提示提供內容。

瞭解 Notebook 的文件選擇器

vscode.DocumentSelector 型別允許您將轉到定義等語言功能與特定文件相關聯。這會驅動 UI,並決定是否要求相應的提供程式提供結果。我們添加了一個新的 API 提案,允許擴充套件也選擇 notebook 型別。例如,{ language: 'python', notebookType: 'jupyter-notebook'} 針對嵌入在 Jupyter notebook 中的所有 python 文件。這是當前提案 - 試一試,讓我們知道您的想法。

具有自定義語言 ID 的輸出通道

有一些擴充套件能夠在其輸出通道中定義標記或語法著色和 CodeLens 功能,前提是它們本身是文字文件(只讀)。由於所有輸出通道共享相同的語言 ID,這些自定義項可能會錯誤地應用於其他輸出通道。有一個功能請求是建立具有自定義語言 ID 的輸出通道,以便擴充套件作者可以按語言定義自定義項。因此,在此里程碑中,我們引入了提案來建立具有自定義語言 ID 的輸出通道。請試一試並向我們提供反饋。

MarkdownString.baseUri

MarkdownString 上擬議的 baseUri 屬性允許您指定一個基本 URI,Markdown 中的相對連結和影像相對於該 URI 解析。此屬性的行為很像 HTML 中的 <base> 元素

如果 baseUri/ 結尾,則將其視為目錄,Markdown 中的相對路徑相對於該目錄解析

const md = new vscode.MarkdownString(`[link](./file.js)`);
md.baseUri = vscode.Uri.file('/path/to/dir/');
// Here 'link' in the rendered Markdown resolves to '/path/to/dir/file.js'

如果 baseUri 是一個檔案,則 Markdown 中的相對路徑相對於該檔案的父目錄解析

const md = new vscode.MarkdownString(`[link](./file.js)`);
md.baseUri = vscode.Uri.file('/path/to/otherFile.js');
// Here 'link' in the rendered Markdown resolves to '/path/to/file.js'

新文件

Java GUI 應用程式

新的Java GUI 應用程式主題解釋瞭如何使用 Java Extension Pack 在 VS Code 中開發 JavaFX、AWT 和 Swing 應用程式。

值得注意的修復

  • 107748 旁白不讀取設定被忽略以進行同步
  • 123399 Emmet 不會在 jsx 和 html 檔案中新增帶有標籤 A 的類。
  • 141680 搜尋設定中的 @tags 很慢
  • 141977 設定編輯器:資料夾操作項未正確處理 keyup
  • 142040 改進支援預釋出的擴充套件的“安裝另一個版本”操作。
  • 142462 當寫入鎖未清除時,檔案寫入可能會掛起
  • 142641 ts-node 偵錯程式在 v1.64 中無法正常工作

感謝

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

Web 擴充套件

用於啟用作為Web 擴充套件執行的程式碼的擴充套件作者(以下列表介於 2022 年 2 月 1 日至 2022 年 2 月 28 日之間)

問題跟蹤

對我們問題跟蹤的貢獻

拉取請求

vscode 的貢獻

vscode-css-languageservice 的貢獻

vscode-languageserver-node 的貢獻

debug-adapter-protocol 的貢獻

language-server-protocol 的貢獻

monaco-editor 的貢獻

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