2022 年 2 月 (版本 1.65)
更新 1.65.1:此更新解決了這些安全性問題。
更新 1.65.2:此更新解決了這些問題。
下載:Windows: x64 Arm64 | Mac: Universal Intel silicon | Linux: deb rpm tarball Arm snap
歡迎使用 Visual Studio Code 2022 年 2 月發行版本。
- 新的編輯器歷史記錄導覽 - 將返回/前進歷史記錄範圍設定為編輯器群組或單一編輯器。
- 淺色高對比主題 - 淺色主題,可增強 VS Code 編輯器的可見性。
- 新的音訊提示 - 警告、內嵌建議和中斷點命中的音訊提示。
- 拖放問題和搜尋結果 - 將結果拖曳到新的或現有的編輯器群組。
- 原始碼控制差異編輯器管理 - 在 Git 作業後自動關閉差異編輯器。
- 偵錯工具延遲變數評估 - JavaScript/TypeScript 屬性 getter 的延遲評估。
- 預覽:終端機 Shell 整合 - 重新執行終端機命令、命令狀態裝飾。
- 適用於 Web 的 VS Code - 重新開啟最近的本機檔案和資料夾,改進的 Git 整合。
如果您想在線上閱讀這些版本資訊,請前往 Updates 上的 code.visualstudio.com。
工作台
新的編輯器歷史記錄導覽
VS Code 中的編輯器歷史記錄導覽功能驅動了一些常用的命令,例如返回和前進。隨著時間的推移,累積了許多功能請求,以改進此功能並新增更多功能。此里程碑編輯器歷史記錄導覽已從頭開始重寫,以解決大多數這些請求。
編輯器群組感知導覽
在編輯器歷史記錄中導覽時,現在會考慮編輯器群組。在編輯器歷史記錄中向後和向前導覽將啟動並聚焦於與編輯器群組完全相同的編輯器。當編輯器群組被移除時,所有相關的歷史記錄項目都會被捨棄。
在下面的短片中,第一個返回將游標放置在新的編輯器群組中,然後第二個返回導覽返回到原始編輯器群組。
主題:GitHub 淺色
將導覽範圍設定為編輯器群組或編輯器的新設定
新的設定 workbench.editor.navigationScope
可以將編輯器歷史記錄導覽的範圍設定為僅限於活動編輯器群組甚至是編輯器。支援的值為
default
:編輯器導覽適用於所有已開啟的編輯器群組和編輯器。editorGroup
:編輯器導覽僅限於活動編輯器群組的已開啟編輯器。editor
:編輯器導覽僅限於活動編輯器。
如果您將範圍設定為 editorGroup
或 editor
,則每個編輯器群組或編輯器都將有自己的導覽堆疊,可以單獨導覽。
筆記本支援
您現在可以在任何筆記本中已選取的儲存格之間導覽。導覽跨編輯器運作,就像您可以在文字編輯器中的游標位置之間導覽一樣。
主題:GitHub 淺色
導覽編輯或導覽位置的新命令
預設情況下,每當您跨編輯器導覽時,以及在編輯器內導覽時(例如,當切換筆記本儲存格或變更文字編輯器中的選取範圍時),都會新增編輯器導覽位置。如果您覺得記錄的位置太多,則新增了新命令,可將位置減少到以下任一項
- 導覽位置 - 例如,當使用前往定義時。
- 編輯位置 - 每當編輯器變更時。例如,在文字編輯器中輸入時。
您可以將您最愛的快速鍵指派給這些命令,以據此變更您的導覽。
編輯位置的命令
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
,以顯示三個切換按鈕以及功能表下拉式清單。
淺色高對比主題
新增了新的淺色高對比主題,以改善編輯器的易讀性和可讀性。
音訊提示
此版本新增了新的音訊提示,包括警告、內嵌建議和偵錯工具中斷點命中的音訊提示。已調整聲音,並且通用的設定 audioCues.enabled
已被取代,改為使用個別的 audioCues.*
設定
除了 lineHasWarning
之外的所有音訊提示,預設都為螢幕閱讀器使用者啟用(設定值 auto
)。
新的音訊提示命令說明:列出音訊提示列出所有可用的音訊提示,讓您在清單中移動時聽到每個音訊提示,並檢閱目前啟用的提示。
拖放問題和搜尋結果
您現在可以將問題、搜尋或參考結果拖放到編輯器中,以開啟檔案並顯示結果位置。如果您想要啟動新的編輯器群組或將結果放到現有的編輯器群組中,這會很有用。
設定編輯器分割檢視
設定編輯器現在使用可調整的分割檢視,將目錄表與設定清單分開。
改進的自動語言偵測
當啟用新的設定 workbench.editor.historyBasedLanguageDetection
時,未命名的編輯器將使用改進的自動語言偵測演算法,該演算法會考量您的編輯器歷史記錄和目前工作區的內容。新的演算法只需要比以前少得多的文字輸入即可提供偵測結果。
以下是在 JavaScript、TypeScript、Markdown、Python、PHP 和 C++ 中使用此功能的範例(支援更多語言)
改進的語言擴充功能建議
語言功能擴充功能建議現在會考量 Marketplace 中其他重要的語言擴充功能,同時提出建議。例如,如果您已安裝 Apache NetBeans Java 擴充功能,則 VS Code 不會建議 Java 擴充功能套件。
擴充功能樹狀檢視浮動提示的鍵盤快速鍵
您可以透過使用鍵盤快速鍵 Ctrl/Cmd+K, Ctrl/Cmd+I
,觸發浮動提示以顯示在擴充功能貢獻的自訂樹狀檢視中。
編輯器
以程式碼片段包圍
有一個新命令可以程式碼片段包圍目前的選取範圍。選取一些文字,從命令面板(⇧⌘P (Windows、Linux Ctrl+Shift+P))叫用以程式碼片段包圍命令,然後從下拉式清單中選取程式碼片段。
在下面的短片中,選取的方法會以 try/catch 程式碼片段包圍。
任何使用 TM_SELECTED_TEXT
或 SELECTION
變數的適用程式碼片段都將在以程式碼片段包圍快速選取下拉式清單中提供。也包含自訂使用者或專案程式碼片段。
可存取的內嵌提示
內嵌提示會在原始碼中顯示額外資訊,例如變數的推斷型別。對於螢幕閱讀器使用者,有一個新命令可協助使用此功能。從命令面板中選取朗讀具有內嵌提示的行,編輯器將會讀取目前的行,並與其提示交錯。
內容相關的 Unicode 醒目提示
為了報告較少的誤判,如果周圍的字元在視覺上指示非 ASCII 腳本,則不再醒目提示不明確和不可見的 Unicode 字元。因此,在受信任的工作區中,僅醒目提示不可見或可能與 ASCII 字元混淆的字元。此規則的例外情況是那些包含在非 ASCII 字元單字中的字元,其中至少有一個字元不會與 ASCII 字元混淆。
在之前,您可以在 const 字串中看到多個誤判
之後,僅醒目提示混淆字元
終端機
多行貼上警告
預設情況下,當在終端機中貼上多行時,如果 Shell 不支援多行,則現在會顯示對話方塊。當使用括號括住的貼上模式以及當我們將 Ctrl+V
直接交給 Shell 時,會顯示此警告。對話方塊上有一個不再詢問我核取方塊,可輕鬆停用此功能。
終端機連結改進
此版本對終端機連結的實作進行了大規模重構。這簡化並改進了此功能的可維護性,但也帶來了
- 連結醒目提示再次運作。
- 已解析連結的快取,減少了某些連結顯示的延遲。
- 工作區搜尋連結現在由與已驗證連結相同的程式碼處理,以提高一致性並改進行/欄辨識。
- 數個錯誤修正。
開啟檔案連結命令改進
上次版本中引入的開啟最後一個檔案連結和開啟偵測到的連結...命令現在排除資料夾,這應該會使它們更有用。
原始碼控制
差異編輯器管理
在此里程碑中,我們進行了變更,應有助於管理差異編輯器。命令面板中有一個新的命令Git:關閉所有差異編輯器,可用於關閉所有開啟的差異編輯器。還有一個新的設定 git.closeDiffOnOperation
,可在變更被暫存、認可、捨棄、分階段或取消分階段時自動關閉差異編輯器。
Git 命令輸出記錄
執行 git 命令時,stderr
的內容會記錄在 Git 輸出視窗中。有一個新的設定 git.commandsToLog
,可指定 Git 命令的清單,這些命令的 stdout
內容將記錄在 Git 輸出視窗中。
偵錯
延遲變數
存取變數的值可能會產生副作用或成本高昂。VS Code 的通用偵錯工具現在可以顯示一個按鈕,供使用者按需擷取變數值。這適用於支援新的「延遲」變數功能的偵錯擴充功能。目前,這僅由內建的 JavaScript 偵錯工具針對屬性 getter 實作,但我們預期其他偵錯工具擴充功能將很快跟進。
工作
有一個新的平台獨立 userHome
變數,您可以在工作中使用。
{
"label": "Test Home",
"type": "shell",
"command": "ls ${userHome}"
}
筆記本
內建輸出轉譯器更新
我們將文字、影像、HTML 和程式碼轉譯器從 VS Code 核心移至內建輸出轉譯器擴充功能。透過此變更,VS Code 現在可以在這些輸出類型上搜尋文字。
在下面的短片中,搜尋 item
最初有 3 個程式碼儲存格的結果,但可以篩選為也包含儲存格輸出。
固定捲動筆記本儲存格按鈕
當向下捲動程式碼儲存格時,執行按鈕和儲存格工具列現在會固定在螢幕頂端。這使得在長程式碼儲存格中工作時更容易存取它們。
主題:Dracula
語言
TypeScript 4.6
VS Code 現在隨附 TypeScript 4.6。此更新帶來了許多新的語言功能,以及工具改進和錯誤修正。您可以在 TypeScript 部落格上閱讀有關 TypeScript 4.6 的更多資訊。
JavaScript 檔案中的語法錯誤報告
由於 TypeScript 4.6,VS Code 現在會在 JavaScript 檔案中報告一些常見的語法錯誤。這包括剖析錯誤,以及區塊範圍變數的無效重新宣告
先前,只有當您在 JavaScript 中啟用語意檢查時,才會報告這些錯誤。
您可以透過設定停用此錯誤報告
"javascript.validate.enable": false
可以針對每種語言設定更多 JS/TS 設定
現在可以將更多 JavaScript 和 TypeScript 設定設定為語言特定設定。如果您想要針對 javascript
與 javascriptreact
使用不同的設定,語言特定設定會很有用,例如。
新的語言特定啟用設定包括
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.dev 或 insiders.vscode.dev 時,最近開啟的本機檔案和資料夾清單現在可用。選取本機檔案將在編輯器中開啟它,而選取本機資料夾將更新檔案總管以顯示其內容。瀏覽器可能會要求您先確認本機檔案存取,然後才會顯示內容。
遠端存放庫
GitHub 存放庫
在此里程碑中,當在 vscode.dev 和 github.dev 上編輯 GitHub 存放庫時,合併衝突解決已得到改進。您的編輯器中現在有合併衝突裝飾,選項包括接受目前變更、接受傳入變更或接受兩者變更。
原始碼控制檢視中也有一個暫存變更動作,適用於包含合併衝突的檔案。
此外,您現在可以輕鬆地在 vscode.dev 和 github.dev 上暫存和取消暫存 GitHub 存放庫中特定資料夾下的所有變更。若要執行此操作,請在原始碼控制檢視中按一下滑鼠右鍵,然後選取以樹狀結構檢視。
主題:One Monokai
工作區搜尋和尋找所有參考現在預設會下載並索引存放庫的完整副本,而不是像以前那樣預設為提供部分結果。
有數個設定可以設定此索引功能
remoteHub.indexing.verboseDownloadNotification
- 控制下載通知是顯示為快顯視窗(預設)還是顯示在狀態列中。remoteHub.indexing.maxIndexSize
- 控制要下載的索引大小限制。如果超過此限制,下載將會取消,並提供部分結果。您可以將此設定留空,永遠不要下載存放庫,並始終使用部分結果。
Azure Repos
在此里程碑中,我們將 Azure Repos 支援從使用特定的 Azure DevOps 驗證提供者切換為使用通用的 Microsoft 驗證提供者(由設定同步使用)。當您造訪 Azure Repos 時,系統會提示您再次登入,但您所有已儲存的變更都會持續存在。
擴充功能貢獻
十六進位編輯器資料檢查器改進
先前,十六進位編輯器擴充功能始終在其側邊欄中顯示資料檢查器,並在顯示十六進位編輯器時顯示它。但是,有些使用者發現這很煩人,並且導致其與偵錯工具的記憶體檢查器整合時,產生特別破壞性的體驗。現在,資料檢查器將顯示在受檢查位元組的右側。如果編輯器太窄,則資料檢查器將改為顯示在浮動提示小工具中。
主題:Codesong
可以透過 hexeditor.inspectorType
設定進行設定,該設定可以採用三個值之一
aside
- 將資料檢查器顯示在側邊。hover
- 僅在浮動提示時顯示資料檢查器,無論編輯器寬度為何。sidebar
- 如先前一樣在側邊欄中顯示資料檢查器。
GitHub Pull Requests and Issues
持續開發 GitHub Pull Requests and Issues 擴充功能,可讓您處理、建立和管理提取要求和問題。查看擴充功能 0.38.0 版本的變更記錄,以查看重點。
預覽功能
終端機 Shell 整合
終端機中的 Shell 整合最初在上一個版本中引入,並且在本月看到了許多改進。作為複習,此功能允許 VS Code 深入瞭解終端機內發生的情況,而先前這些情況在很大程度上是未知的。此功能仍被視為實驗性功能,您可以透過 terminal.integrated.shellIntegration.enabled
設定選擇加入。
此版本中最大的變更是 Shell 整合偵測到的命令現在在左側的「裝訂線」中具有裝飾。命令裝飾會在視覺上分隔緩衝區,並提供對使用 Shell 整合功能之資訊和動作的存取。命令裝飾有三種類型:錯誤、成功和預設,由命令的結束代碼決定。
按一下裝飾會在功能表中顯示特定於該命令的動作,目前包括重新執行命令和複製輸出。
將滑鼠游標停留在裝飾上方會顯示有關命令的資訊,例如自命令執行以來的時間和相關的結束代碼。
可以透過將 terminal.integrated.shellIntegration.decorationsEnabled
設定為 false
來停用裝飾。個別圖示可以透過 terminal.integrated.shellIntegration.decorationIcon*
設定進行設定,而這些新的主題索引鍵設定色彩
terminalCommandDecoration.successBackground
terminalCommandDecoration.errorBackground
terminalCommandDecoration.defaultBackground
以下是其他主要變更
- 啟用設定已重新命名為
terminal.integrated.shellIntegration.enabled
。 - 在所有支援的 Shell 中啟用 Shell 整合的機制現在更可靠。
- Shell 整合現在應在使用遠端連線視窗(SSH、WSL、容器)時運作。
- 行接續(例如,
$PS2
)現在應在所有支援的 Shell 上運作。 - 「略過」的命令現在會特別標記。例如,在使用
Ctrl+C
或執行空命令後。 - 執行最近的命令和前往最近的目錄命令現在會在工作階段之間儲存歷史記錄。儲存歷史記錄可以透過
terminal.integrated.shellIntegration.history
設定進行設定。
ESLint
ESLint 擴充功能初步支援包含可以使用 ESLint 驗證之儲存格的筆記本文件。此支援僅適用於擴充功能的預先發行版本。
擴充功能撰寫
語言狀態項目
我們已完成語言狀態項目的 API。此 API 顯示活動編輯器的語言特定資訊。這可以是關於專案或工具集版本的一般資訊,但也可以顯示錯誤和警告。
API 類似於狀態列 API,可以透過 vscode.languages.createLanguageStatusItem(...)
存取。應使用文件選取器建立語言狀態項目,以便 VS Code 可以在活動編輯器變更時顯示和隱藏它。
內嵌提示
內嵌提示提供者 API 現在已完成。它允許使用原始碼內嵌額外資訊。下圖顯示 TypeScript 如何新增推斷型別的內嵌提示。
API 是圍繞 InlayHintsProvider
建置的。它提供 InlayHint
物件,這些物件具有一些有趣的功能
- 內嵌提示可以具有工具提示和命令。
- 提示的標籤可以由多個部分組成,這些部分又可以具有工具提示和命令。
- 標籤部分也可以具有相關的原始碼位置,這允許語言功能,例如此部分的前往定義。
狀態列焦點邊框
我們透過在狀態列和狀態列項目中新增焦點邊框,使導覽狀態列變得更輕鬆且更易於存取。
主題作者可以透過設定兩個新的主題色彩來自訂邊框色彩
statusBar.focusBorder
:焦點位於整個狀態列時的邊框色彩。statusBarItem.focusBorder
:焦點位於狀態列項目時的邊框色彩。
測試重新整理動作和 sortText
我們已完成我們的建議,以將標準重新整理處理常式新增至 TestController
介面。如果擴充功能將方法指派給此屬性,VS Code 將在測試總管檢視中顯示「重新整理」圖示。
此外,TestItem
現在可以具有 sortText
屬性,該屬性控制沒有檔案中特定位置之項目的排序順序。
註解時間戳記
註解 API 現在可讓您將 timestamp
新增至每個 Comment
。此時間戳記會顯示在註解小工具和註解檢視中。預設情況下,時間戳記會顯示為相對時間(例如,「2 週前」),但使用者設定 comments.useRelativeTime
可用於改為顯示確切時間。時間戳記的浮動提示將始終是確切時間。
vscode-test 套件已重新命名為 @vscode/test-electron
vscode-test
套件已重新命名為 @vscode/test-electron
。擴充功能作者應更新其擴充功能的 package.json
檔案 devDependencies
中的項目(如果他們包含該套件)。@vscode/test-electron 套件有助於執行 VS Code 擴充功能的整合測試。您可以在 vscode-test 存放庫中瞭解更多資訊。
更新的 codicon
以下新圖示已新增至我們的 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
圖示貢獻點現在已完成
圖示貢獻點允許擴充功能依 ID 定義新圖示,以及預設圖示。然後,擴充功能(或任何其他依賴於擴充功能的擴充功能)可以在任何可以使用 ThemeIcon
的地方使用圖示 ID 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-ubuntu
和 distro-fedora
,以及預設圖示定義。圖示定義在給定字型字元的字型中。
檔案圖示主題:支援檔案關聯中的資料夾名稱
在檔案圖示主題中,folderNames
、folderNamesExpanded
、fileNames
和 fileExtensions
中的關聯現在也可以包含資料夾名稱
"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 中使用 Codespaces 遠端執行的 Web 擴充功能
適用於 Web 的 VS Code 與 Codespaces 現在支援在 Web 擴充功能主機中執行遠端安裝的Web 擴充功能。例如,如果您在 GitHub Codespace 中安裝了 Vim 擴充功能(透過 devcontainer.json
檔案中的設定),則當您在瀏覽器中開啟 codespace 時,Vim 將會載入 Web 擴充功能主機中。請閱讀我們的擴充功能主機文件以取得更多資訊。
注意:目前關於此類擴充功能載入 Web Worker 存在已知限制。請參閱問題以取得更多詳細資料。
偵錯工具擴充功能撰寫
支援「重要」輸出事件
最近,偵錯介面卡協定新增了 Output
事件的 important
類別。此類別標記應突出顯示且不應被使用者忽略的事件。VS Code 現在將針對具有 important
類別的訊息顯示通知快顯視窗。它們仍將記錄到偵錯主控台中。
支援「延遲」變數
某些變數是動態的,需要執行程式碼才能取得值。偵錯介面卡可能不想自動擷取其完整值,因為這樣做可能會產生副作用或成本高昂。
某些偵錯介面卡已透過將「昂貴變數」表示為預留位置物件來解決此問題,使用者需要明確「展開」該物件才能擷取值。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)。它不影響協定本身的向後相容性。
- 筆記本文件的建議實作已增強。它現在具有完整的中介軟體和提供者支援。
偵錯介面卡協定
已將數個新屬性新增至 偵錯介面卡協定。
- 新的布林屬性
lazy
已新增至VariablePresentationHint
。用戶端可以使用選用旗標來呈現具有 UI 的變數,該 UI 支援特定手勢以擷取其值。 - 新的選用字串屬性
detail
已新增至CompletionItem
。透過這個人類可讀的字串,用戶端可以顯示關於項目的額外資訊,例如類型或符號資訊。請注意,VS Code 尚不支援此屬性。
建議的擴充功能 API
每個里程碑都伴隨著新的提議 API,擴充功能作者可以試用它們。與往常一樣,我們希望收到您的回饋。以下是試用提議 API 的步驟
- 尋找您想要試用的提案,並將其名稱新增至
package.json#enabledApiProposals
。 - 使用最新的 vscode-dts 並執行
vscode-dts dev
。它會將對應的d.ts
檔案下載到您的工作區中。 - 您現在可以針對該提案進行程式設計。
您不能發佈使用提議 API 的擴充功能。下一個版本中可能會出現重大變更,而我們絕不希望破壞現有的擴充功能。
時間軸項目中的 Markdown 懸停
由 TimelineProvider
提供的項目現在可以在 detail
屬性中支援 Markdown,該屬性用於為其工具提示提供內容。
筆記本感知文件選取器
vscode.DocumentSelector
類型允許您將語言功能(如跳到定義)與特定文件建立關聯。這驅動了 UI,並決定是否向對應的提供者請求結果。我們新增了一個新的 API 提案,允許擴充功能也選取筆記本類型。例如,{ language: 'python', notebookType: 'jupyter-notebook'}
目標是所有嵌入在 Jupyter 筆記本中的 Python 文件。這是目前的提案 - 試用看看並告訴我們您的想法。
具有自訂語言 ID 的輸出通道
有些擴充功能能夠在其輸出通道中定義語法標記或語法著色和 CodeLens 功能,前提是它們本身是文字文件(唯讀)。由於所有輸出通道都共用相同的語言 ID,因此這些自訂設定可能會錯誤地應用於其他輸出通道。之前有一個功能請求,希望建立具有自訂語言 ID 的輸出通道,以便擴充功能作者可以按語言定義自訂設定。因此,在這個里程碑中,我們推出了提案,以建立具有自訂語言 ID 的輸出通道。請試用看看並給我們回饋。
MarkdownString.baseUri
提議的 baseUri
屬性在 MarkdownString
上,可讓您指定一個基礎 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 應用程式主題說明如何在 VS Code 中使用 Extension Pack for Java 開發 JavaFX、AWT 和 Swing 應用程式。
值得注意的修正
- 107748 語音朗讀不會讀取設定被忽略以進行同步
- 123399 Emmet 在 jsx 和 html 檔案中沒有為標籤 A 新增 class。
- 141680 在設定中搜尋 @tags 很慢
- 141977 設定編輯器:資料夾動作項目未正確處理 keyup
- 142040 改善對支援預先發佈的擴充功能執行「安裝另一個版本」動作。
- 142462 當寫入鎖定未清除時,檔案寫入可能會掛起
- 142641 ts-node 除錯工具在 v1.64 中無法正常運作
感謝
最後但同樣重要的是,衷心感謝 VS Code 的貢獻者。
網頁擴充功能
為了啟用作為網頁擴充功能執行程式碼的擴充功能,向擴充功能作者們致謝(以下列表為 2022 年 2 月 1 日至 2022 年 2 月 28 日之間)
- Var Style (allen)
- helloworld-web-sample (Andrey Belym)
- asciidoctor.asciidoctor-vscode (asciidoctor)
- Gitignore Adder (beatrix)
- gkauthentication-test (BranchCreation SLU)
- Racket Helpers (Calvin-LL)
- PHP Tools (DEVSENSE)
- Naninovel (Elringus)
- Pitoco Extension (Feodrippe)
- feodrippe.feodrippe-helloworld-minimal-sample-test-web (Feodrippe)
- Simple React Snippets for Typescript (Giovanni Fu Lin)
- GitKraken Authentication (GitKraken)
- groog (groogle)
- ModalKeys (haberdashPI)
- VDM VSCode (Jonas Rask)
- cis-algorithm (kimjihu)
- Markdown (Pandoc Flavored) (Kolen Cheung)
- zyname - this is for testing and will be deleted soon (leodevbro)
- Snippet Copy (Lukas Spieß)
- PHP import checker (Marabesi)
- VSCode Language JSONata (Markus Gutbrod)
- Babel JavaScript (Michael McDermott)
- Create Project (Public Theta)
- Dynamic Theme (Rody Davis)
- Router Generator (Rody Davis)
- Chimera Theme (roydukkey)
- Qiita Markdown Preview (Ryoji Kato)
- Kestrel (SenseTime)
- Test token (sevillal)
- Sourcegraph (Sourcegraph)
- Rewrap (stkb)
- wav-preview (sukumo28)
- Pandoc (TANIGUCHI Masaya)
- Hex Viewer (Tao Cumplido)
- Time Link Bundle (Web version) (Time Link)
- DCC Websocket (virgilsisoe)
- VSC+ (Vrej)
Issue tracking
對我們的 issue tracking 的貢獻
- John Murray (@gjsjohnmurray)
- Andrii Dieiev (@IllusionMH)
- ArturoDent (@ArturoDent)
- Simon Chan (@yume-chan)
Pull requests
對 vscode
的貢獻
- @aminya (Amin Yahyaabadi):修正:簡化 tasks/common 中的 regex 運算式 PR #142899
- @Balastrong (Leonardo)
- 增加過載計數器工具提示中的不透明度 PR #141828
- 透過在必要時檢查解碼前後的片段來修正元素偵測 PR #141848
- @BMBurstein (Baruch):更正括號導引設定的描述 PR #143722
- @Bruce-Hopkins (Bruce Hopkins):新增使用者主目錄變數 PR #141902
- @caioagiani (Caio Agiani):修正錯字 PR #141959
- @CGNonofr (Loïc Mangeonjean)
- 在所有語言功能註冊函式中將 languageId 替換為 languageSelector PR #143610
- 允許 getWorker 函式傳回 Promise PR #143611
- @ChaseKnowlden:更新 Lua 文法 PR #142107
- @divinity76:似乎 root 需要 --no-sandbox PR #137125
- @efcoyote (coyote):更新至最新的 seti-ui 版本 PR #141931
- @enticies (enticies):修正錯誤訊息錯字 PR #142054
- @g-plane (Pig Fang):將 "pnpm-lock.yaml" 新增至預設檔案巢狀模式 PR #142375
- @gjsjohnmurray (John Murray)
- 將選用 languageId 新增至 window.createOutputChannel API (#_19561) PR #140876
- 修正
testing.openTesting
設定文字 (#_142306) PR #142314
- @haykam821:防止影像預覽透明背景受到縮放影響 PR #141667
- @heartacker:新增數學片段 PR #142697
- @icepaq (Anton):在 WebviewPanel 上自動完成啟動事件 PR #141752
- @jeanp413 (Jean Pierre)
- 修正 WebviewElement::streamToBuffer PR #142288
- 修正在擴充功能檢視中依 ID 查詢擴充功能時,始終在擴充功能編輯器中呈現穩定版本的問題 PR #143481
- @JJRcop (Jonathan Rubenstein):將 VS 2022 新增至支援的版本 PR #142667
- @LuanVSO (Luan Vitor Simião Oliveira)
- 修正 psreadline 無法與 shell integration 搭配運作的問題 PR #142211
- 修正 shellintegration.ps1 PR #142217
- @michaelkuhn (Michael Kuhn):修正一些 Solarized 色彩 PR #142670
- @neeleshb (Neelesh Bodas):修正「前往上一個問題」的不正確標籤 PR #143823
- @satokaz (Kazuyuki Sato):解碼 Markdown 路徑 IntelliSense 中的標頭建議 PR #142392
- @SNDST00M (M.U.N.I.N):在檔案圖示主題中新增選用目錄語法 PR #140079
- @stefanhaller (Stefan Haller):修正 #142028 PR #142930
- @surajteggi:修正錯字 PR #142185
- @thebinarysearchtree (Andrew Jones):修正縮排 PR #141997
- @weartist (Han):在 VSCode 終端機中實作 multiLinePasteWarning,修正 #122683 PR #141822
- @y-tsutsu (y-tsutsu)
- 命令面板中同時顯示翻譯名稱和原始名稱。 PR #142524
- 修正動作類別 PR #142911
- @Yash621 (Yash Goel):修正設定同步有重複登入的問題 PR #142340
- @zardoy (Vitaly):為 tsconfig.extends 解析正確的連結路徑 PR #141062
對 vscode-css-languageservice
的貢獻
對 vscode-languageserver-node
的貢獻
- @dsherret (David Sherret):功能:childProcess.spawn 失敗時提供更具描述性的錯誤訊息 PR #888
對 debug-adapter-protocol
的貢獻
- @apupier (Aurélien Pupier):為 Apache Camel 新增除錯介面卡 PR #245
- @eshelyaron (Eshel Yaron):將 SWI-Prolog DAP 實作新增至 adapters.md PR #248
- @hyangah (Hyang-Ah Hana Kim):更新 sdks.md * 包含 go-dap PR #241
- @lukaszsamson (Łukasz Samson):新增 Elixir DAP 實作的連結 PR #243
- @Ricbet (John):將 OpenSumi 新增至實作工具 PR #247
對 language-server-protocol
的貢獻
- @zwpaper (Wei Zhang):使用語言 ID 以保持一致性 PR #1409
對 monaco-editor
的貢獻
- @Dan1ve (Daniel Veihelmann):使 Vite 範例程式碼與 Firefox 相容 PR #2991
- @philipturner (Philip Turner):將
@noDerivative
修飾詞新增至 Swift PR #2957