2021 年 11 月 (版本 1.63)
更新 1.63.1:此更新解決了這些安全問題。
更新 1.63.2:此更新解決了這些問題。
下載:Windows:x64 Arm64 | Mac:通用版 Intel Apple 晶片 | Linux:deb rpm tarball Arm snap
歡迎使用 Visual Studio Code 2021 年 11 月版。此版本包含許多更新,我們希望您會喜歡,其中一些主要亮點包括:
- Marketplace 主題預覽 - 無需安裝即可試用顏色主題。
- 配置問題導航順序 - 按嚴重性或檔案位置轉到下一個錯誤或警告。
- 在截圖模式下顯示命令 - 顯示命令名稱和鍵盤快捷方式。
- 筆記本改進 - 調整 Markdown 字型大小,更好的檔案和 URL 連結支援。
- 不可見的 Unicode 高亮顯示 - 高亮顯示不可見或易混淆的 Unicode 字元。
- TypeScript 方法補全 - 快速填充介面和覆蓋方法。
- 預釋出擴充套件 - 提前試用擴充套件新功能和修復。
- 新的 Java 歡迎體驗 - 幫助您在 VS Code 中配置和學習 Java。
- 更多適用於 vscode.dev 的擴充套件 - 檢視 VS Code for Web 的最新新增功能。
- 在 SSH 伺服器上的容器中工作 - 新的遠端 - SSH 在容器中重新開啟命令。
如果您想線上閱讀這些發行說明,請訪問 code.visualstudio.com 上的更新頁面。
在 VS Code 團隊的釋出派對上觀看此版本新功能的亮點影片錄製,可在我們的 YouTube 頻道上找到。
內測版:想盡快嘗試新功能?您可以下載每晚的內測版構建,並儘快嘗試最新的更新。
工作臺
安裝前預覽主題
您現在可以在安裝前預覽 Marketplace 上可用的主題。從顏色主題下拉選單(⌘K ⌘T (Windows、Linux Ctrl+K Ctrl+T))中,選擇瀏覽附加顏色主題以列出 Marketplace 主題。當您在下拉選單中導航時,VS Code UI 將預覽顏色主題。
在主題條目上按Enter以安裝擴充套件。
配置問題導航順序
您現在可以定義轉到下一個問題(⌥F8 (Windows、Linux Alt+F8))和轉到上一個問題(⇧⌥F8 (Windows、Linux Shift+Alt+F8))導航的順序。在以前的版本中,導航順序基於嚴重性,先是錯誤,然後是警告,然後是其餘的。新的問題:排序順序 (problems.sortOrder
) 設定允許您按問題的severity
或position
導航。當使用"problems.sortOrder": "position"
時,第 5 行的警告將顯示在第 13 行的錯誤之前,等等。
多語言特定編輯器設定
您現在可以一次性配置多種語言的語言特定編輯器設定。以下示例展示瞭如何在settings.json
檔案中一起自定義javascript
和typescript
語言的設定。
"[javascript][typescript]": {
"editor.maxTokenizationLineLength": 2500
}
自動 2x2 編輯器網格
真正的 2x2 網格編輯器佈局只能使用檢視:網格編輯器佈局 (2x2) 命令實現。現在,您可以透過手動拆分編輯器直到達到 2x2 網格來獲得相同的佈局,並且該網格將自動鎖定為真正的 2x2 佈局。
列表中更好的 Escape 處理
現在,在列表和樹中按Escape將把選擇縮小到單個元素,然後再清除它。
Web 上啟用查詢
當 VS Code 在瀏覽器中執行(以下示例中為 github.dev)時,Web 檢視內現在支援查詢控制元件。
由於當前瀏覽器 API 的限制,查詢的行為與在桌面版上略有不同。例如,在 Web 上,VS Code 只能高亮顯示當前的查詢結果。在桌面版上,當前檔案中的所有結果都將高亮顯示。
截圖模式顯示命令名稱
您現在可以選擇在截圖模式下透過鍵盤快捷方式觸發命令時顯示命令名稱。使用截圖模式:鍵盤快捷方式格式 (screencastMode.keyboardShortcutsFormat
) 設定來配置此行為。
預釋出擴充套件
VS Code 現在支援擴充套件的預釋出版本,因此您可以選擇安裝它們並試用擴充套件的最新前沿功能。VS Code 在擴充套件安裝下拉選單中顯示一個額外的安裝預釋出版本選項,用於安裝預釋出版本。
安裝後,指示器會明確您是否正在使用擴充套件的預釋出版本。
如果您已安裝了某個擴充套件的預釋出版本,則可以輕鬆切換到它。
更新的查詢操作
搜尋檢視中的查詢操作現在使用與編輯器中查詢操作相同的樣式。
原始碼管理
在快速差異中忽略修剪空白
您現在可以使用scm.diffDecorationsIgnoreTrimWhitespace
設定來配置左側邊欄中顯示的 SCM 快速差異功能,以忽略修剪空白。
Notebook
調整筆記本中的字型大小
新的notebook.markup.fontSize
設定允許您控制筆記本 Markdown 內容的字型大小。此設定的預設值為當前編輯器字型大小的 120%。
Markdown 單元格中的語法高亮顯示
VS Code 現在支援 Markdown 單元格內圍欄程式碼塊的語法高亮顯示。
筆記本中的檔案連結
筆記本中的 Markdown 現在可以連結到當前工作區中的其他檔案。
以/
開頭的連結相對於工作區根目錄解析。以./
開頭或僅以檔名開頭的連結相對於當前筆記本解析。
裸 http(s) 連結筆記本
此外,包含http
或https
的 Markdown 文字現在會自動轉換為連結。
這與 JupyterLab 等其他筆記本渲染器的行為相匹配。
筆記本工具欄標籤的動態可見性
筆記本工具欄可以根據編輯器組的寬度決定是否顯示操作標籤,透過將notebook.globalToolbarShowLabel
設定為dynamic
。它將首先隱藏最右側操作組的標籤,然後是左側操作組的標籤。如果所有標籤都隱藏後編輯器組仍然太窄,操作將被移到溢位選單中。
notebook.globalToolbarShowLabel
的其他值現在是always
和never
。
編輯器
Unicode 高亮顯示
預設情況下,原始碼中所有不常見的不可見字元現在都將高亮顯示。
此外,與 ASCII 字元容易混淆的字元也會高亮顯示。
您可以閱讀“隱形 JavaScript 後門”部落格文章或這篇劍橋大學文章,瞭解隱形或易混淆的 Unicode 字元如何在 Unicode 欺騙攻擊中被使用。
請注意,此功能無法檢測所有可能的 Unicode 欺騙攻擊,因為這取決於您的字型和區域設定。此外,對模糊字元的檢測是啟發式完成的。為了安全起見,應使用 VS Code 的工作區信任受限模式來審查原始碼,因為在不受信任的工作區中,所有非 ASCII 字元都將高亮顯示。
可以將設定editor.unicodeHighlight.invisibleCharacters
、editor.unicodeHighlight.ambiguousCharacters
或editor.unicodeHighlight.nonBasicASCII
設定為false
以停用相應的功能。
可以使用以下設定從高亮顯示和註釋或文字中的字元中排除單個字元。
editor.unicodeHighlight.allowedCharacters
- 不高亮顯示的特定字元列表。editor.unicodeHighlight.includeComments
- 啟用註釋中字元的高亮顯示。
此外,Markdown 文件預設不會高亮顯示。
多個懸停提供程式
當文件有多個懸停提供程式時,只要其中一個提供程式返回結果,懸停就會顯示,並隨著其他提供程式的結果傳入而更新。
之前 | 之後 |
---|---|
任務
automationProfile 設定
舊的設定terminal.integrated.automationShell.*
已被棄用,並添加了新的terminal.integrated.automationProfile.*
設定。這允許在指定用於任務的終端屬性(包括 shell、圖示、顏色和 shell 引數)時擁有更大的自由度。
gulpfile.ts 支援
內建的 gulp 擴充套件現在支援從gulpfile.ts
檔案中檢測任務。
NPM 指令碼檢視改進
NPM 指令碼檢視顯示有關指令碼的更多詳細資訊。
還有一個新設定npm.scriptExplorerExclude
,允許您指定要從 NPM 指令碼檢視中排除的指令碼。
語言
TypeScript 4.5
VS Code 現在隨 TypeScript 4.5 一起提供。此更新帶來了許多新的語言功能,以及工具改進和錯誤修復。
您可以在TypeScript 部落格上閱讀有關 TypeScript 4.5 的更多資訊。
方法簽名補全
方法簽名補全讓您能夠快速覆蓋方法和實現介面方法。有了此功能,當您在類主體中時,對方法的建議(例如來自超類的方法)在接受時會插入方法的完整簽名。
如果您正在編寫 TypeScript,接受建議還會添加簽名中引用的型別所需的所有匯入。
此功能需要工作區中的 TypeScript 4.5,並且可以使用typescript.suggest.classMemberSnippets.enabled
和javascript.suggest.classMemberSnippets.enabled
啟用/停用。
JSX 屬性補全
在 JavaScript 和 TypeScript 中補全 JSX 屬性時,VS Code 現在將自動插入屬性值。
可以使用javascript.preferences.jsxAttributeCompletionStyle
和typescript.preferences.jsxAttributeCompletionStyle
配置這些補全的行為。
可能的設定值是
auto
- 根據其型別推斷屬性樣式。字串使用attr=""
,而其他型別使用attr={}
。braces
- 始終使用大括號。None
- 僅補全屬性名稱。
刪除舊 TS 版本的語義高亮顯示
此更新刪除了在工作區中使用 TypeScript 4.1 或更早版本時對語義高亮顯示的支援。
TypeScript 4.2 添加了對語義高亮顯示的原生支援。在舊版本上,語義高亮顯示是作為 VS Code 提供的 TypeScript 語言外掛實現的。刪除外掛可以減少維護和釋出的程式碼量。
Markdown 預覽自定義編輯器
您現在可以使用重新開啟方式命令將 Markdown 檔案顯示為 Markdown 預覽而不是文字。
與Markdown:開啟預覽命令不同,重新開啟方式不會開啟新的編輯器選項卡,而是更改已開啟的編輯器選項卡的顯示方式。再次使用重新開啟方式將檔案切換回預設文字檢視。
此外,您現在可以使用workbench.editorAssociations
設定配置 VS Code 自動將任何 Markdown 檔案作為預覽開啟。
"workbench.editorAssociations": {
"*.md": "vscode.markdown.preview.editor"
}
Markdown 預覽增量更新
內建的 Markdown 預覽現在會在您鍵入時更智慧地更新自身。預覽不再為每次更新替換整個 Markdown 預覽文件,而是使用 DOM 差異化僅替換預覽文件中已更改的元素。這減少了鍵入時有時會發生的抖動。
JSON 語言指示器
在 JSON 檔案中編輯時,現在有一個語言指示器{}
,顯示內容是否已針對一個或多個 JSON 架構進行了驗證。將滑鼠懸停在指示器上會顯示驗證狀態和開啟架構的連結。
JSON 架構快取
來自架構儲存 (json.schemastore.org) 的 JSON 架構現在已本地快取。這節省了網路頻寬,並有助於離線工作。
Emmet 刪除標籤命令改進
當標籤在刪除前單獨一行時,Emmet: 刪除標籤命令現在會刪除包含標籤的行,以及適用的多餘空行。當要刪除的標籤之間有空行時,它現在還會正確地重新縮排剩餘的行。
Web 版 VS Code
Azure Repos
在此里程碑中,我們與 Azure DevOps 工程團隊合作,在 Azure Repos 中的檔案中心添加了一個新的鍵盤快捷方式。在檔案中心瀏覽儲存庫時,您可以按.
以在https://vscode.dev中開啟儲存庫。
我們還為您的 Azure Repos 儲存庫添加了一個新的入口點。您現在可以使用遠端選擇器中開啟遠端儲存庫... 選單項下的新從 Azure Repos 開啟儲存庫... 選單項,從https://vscode.dev中連線到您的 Azure Repos 儲存庫。
此外,您現在可以使用舊版 Azure DevOps URL 格式(例如,https://
)在 vscode.dev 中開啟 Azure Repos 儲存庫,方法是在 URL 字首新增https://vscode.dev
。
改進的遠端選單
遠端選單中現在出現三個附加命令
- 關閉遠端工作區 - 將工作區更改為空白工作區。
- 下載 Visual Studio Code - 轉到https://vscode.com.tw/download。
- 轉到儲存庫 - 在原始碼管理主機網站上開啟儲存庫,例如 GitHub 儲存庫的https://github.com。
對擴充套件的貢獻
Java
Java 擴充套件包現在有一個產品內歡迎體驗,可幫助您在 VS Code 中配置和學習 Java。演練涵蓋安裝 Java 執行時和有用的框架、開啟和除錯專案以及直接在 VS Code 中執行測試。
您還可以檢視https://vscode.com.tw/docs/java上的 Java 教程和使用者指南,以幫助您入門。
Jupyter
效能改進
對 Jupyter 核心(特別是Python
)的啟動進行了多項效能改進。以前開啟過筆記本的使用者在啟動核心時會看到 2 倍的速度提升。重新啟動Python
核心也應該更快。
有關為提高效能而進行的更改的更多詳細資訊,您可以檢視以下問題:
- 支援預熱核心以改善筆記本的啟動體驗。 (#7903)
- 更快地啟用 Conda 等 Python 環境。 (#8342)
- 啟動 jupyter 時避免啟動預設核心。 (#8185)
- 一旦找到 IPyKernel,就避免再次查詢。 (#8196)
- 當不需要 Jupyter 執行時來啟動核心時,避免不必要地搜尋
Jupyter
包。 (#8350, #8352)
核心故障處理方面的改進
已新增診斷訊息和快速修復,以警告在使用!pip install
安裝 Python 包時使用該命令。快速修復將幫助使用者選擇正確的命令%pip install
。
已進行多項改進,以便在核心執行期間啟動或停止失敗時提供更好、更有意義的錯誤訊息。錯誤現在顯示在單元格輸出中,並附有如何解決問題的說明。這確保使用者知道問題並可以解決它,以防他們錯過 VS Code 右下角顯示的錯誤。
Python
對不受信任和虛擬工作區的有限支援
Python 擴充套件現在對不受信任的工作區(參見工作區信任)或虛擬檔案系統(例如,如果開啟遠端 GitHub 儲存庫)有有限的支援。在這種情況下只提供部分 IntelliSense,並且擴充套件的其他功能不可用。
- 懸停、相同檔案補全和內建函式(如 print)的補全可用,但擴充套件僅限於處理當前開啟的檔案。
- 對於不受信任的工作區,僅支援 Pylance 語言伺服器。
- 對於虛擬工作區,僅支援 Jedi 和 Pylance。
狀態列中的語言項已更新以指示這些情況。
模組重新命名重構
您現在可以使用 Python 和 Pylance 擴充套件更輕鬆地重新命名模組。重新命名 Python 模組後,系統會提示您選擇是否要更改程式碼中的所有匯入和引用。如果您不確定,可以先預覽更改的效果,然後再做出決定。一旦您確定,您可以選擇應用重構或放棄重構以不應用建議的更改。
遠端開發
遠端開發擴充套件的工作仍在繼續,它允許您使用容器、遠端機器或 適用於 Linux 的 Windows 子系統 (WSL) 作為功能齊全的開發環境。
1.63 版的主要功能包括:
- 現在,當在 SSH 伺服器上工作時,可以使用在容器中重新開啟命令在容器中開啟資料夾。
- 改進的轉發埠安全性可避免不安全的埠。
- 可配置的 WSL 連線方法允許您使用
wsl.exe
或套接字連線與伺服器通訊。 - 高階容器配置影片,涵蓋如何更改專案的預設位置和提高 Windows 上的效能。
您可以在遠端開發發行說明中瞭解新的擴充套件功能和錯誤修復。
GitHub 拉取請求和議題
對GitHub 拉取請求和問題擴充套件的開發仍在繼續,該擴充套件允許您處理、建立和管理拉取請求和問題。檢視該擴充套件 0.34.0 版本的更新日誌以瞭解亮點。
擴充套件創作
更新了 API 提案結構
我們更改了 API 提案的管理方式。以前,有一個包含所有提案的單一檔案vscode.proposed.d.ts
。這個檔案已經變得很大,很難判斷擴充套件使用了哪些提案,以及某個提案是否已在穩定 API 中。現在,每個提案都有一個檔案。
例如
vscode.proposed.languageStatus.d.ts
- 語言狀態項提案。vscode.proposed.tabs.d.ts
- 編輯器選項卡和選項卡組提案 API。
每個提案都有一個唯一的名稱,並且希望使用提案 API 的擴充套件需要在其package.json
中列出這些名稱。package.json
中的enableProposedApi
屬性被新的enabledApiProposals
替換,它是一個提案名稱的字串陣列,並支援 IntelliSense 和驗證。
API 提案的更新流程應如下所示:
- 查詢您想要嘗試的提案,並將其名稱新增到
package.json#enabledApiProposals
中。 - 使用最新的vscode-dts並執行
vscode-dts dev
。它會將相應的d.ts
檔案下載到您的工作區中。 - 您現在可以根據該提議進行程式設計。
詳細的遷移指南和示例遷移可在issue #136964中找到。另請注意,關於提案 API 使用的限制沒有改變。使用提案 API 的擴充套件不能釋出,也不能按原樣使用。
快速選擇 API 改進
在此迭代中,我們正在最終確定 VS Code 中 QuickPick 的幾個 API。
QuickPickItem 內聯按鈕
提供豐富的輸入體驗是我們的擴充套件 API 的一個目標,使用 VS Code Quick Pick 的熟悉性可以實現強大而簡單的 UI 流程。一個新增功能是,擴充套件現在可以向單個QuickPickItem
新增按鈕。
單擊按鈕會觸發QuickPick
物件上存在的onDidTriggerItemButton
事件。我們期待看到您在擴充套件中如何使用這些按鈕。
更新專案時保持滾動位置的能力
除了能夠向QuickPickItem
新增按鈕之外,您可能還希望在更新專案時保持滾動位置。這是擴充套件的常見用例,他們希望
- 實現“從列表中刪除此項”(例如,Ctrl/Cmd + P
x
QuickPickItemButton)。 - 以某種方式實現“切換此項”(例如“插入程式碼片段”命令)。
- 非同步載入快速選擇中的專案。
window.createQuickPick()
返回的QuickPick
物件上的keepScrollPosition
屬性允許您控制快速選擇中的滾動位置 (cursorTop
) 是否返回到列表頂部。
身份驗證 API 改進
在此迭代中,我們正在最終確定與 VS Code 中的身份驗證相關的幾個 API。
強制建立新會話
有時,當您使用authentication.getSession()
獲取會話時,它可能對某些資源有效,但對其他資源無效,透過再次進行登入流程,可以解決這種情況。
一個例子是 GitHub 單點登入的安全斷言標記語言 (SAML) 支援。預設情況下,為您生成的具有repo
範圍的令牌將能夠訪問您自己的個人儲存庫。但是,如果您在啟用了 GitHub 單點登入的組織中,則必須明確授予會話訪問該組織中儲存庫的許可權。
在此示例中,GitHub 身份驗證提供程式將無法區分正確 SAML 認證的令牌與非 SAML 認證的令牌,因此為了糾正此行為,您現在可以強制建立新會話。
AuthenticationGetSessionOptions
現在具有forceNewSession
屬性,允許您要求使用者再次登入。如果將其設定為true
,使用者將看到
您還可以指定一個帶有detail
字串的物件,如果您想向用戶顯示更具描述性的訊息。
如果擴充套件有會話,則靜默檢索會話
我們觀察到的一種常見模式是,一些擴充套件在啟用時會檢查它們是否有可用的身份驗證會話。如果存在,它們將使用它預載入資料並提前執行其他任務以加快後續效能。缺點是,如果使用者尚未授予該擴充套件訪問身份驗證會話的許可權,則帳戶選單上將顯示一個徽章,並且選單中會新增一個專案,要求使用者登入。
這在某些情況下是可行的,但在其他情況下則不可取,並且會使使用者的螢幕變得混亂。為了解決這個問題,AuthenticationGetSessionOptions
上有一個新屬性,名為silent
,它允許您請求會話而不顯示任何指示擴充套件請求了它的資訊。這樣,如果擴充套件能夠獲取會話,它就可以做它想做的事情,但如果不能,它就不會打擾使用者。
注意:此 API 僅在擴充套件過去已獲得會話訪問許可權(換句話說,它是“受信任的擴充套件”)時才返回已驗證的會話。擴充套件永遠不會獲得使用者未同意的會話。
設定編輯器改進
有序設定
現在可以使用order
欄位對單個設定進行排序。有序設定始終在同一類別中位於無序設定之前,並且排序是相對的。
未分組類別支援
設定也可以在主擴充套件標題下分組,而不是在特定類別下。為此,請將其中一個類別的類別標題設定為與擴充套件顯示名稱相同。
請注意,在下面的示例中,Conf > Language: Show Size 設定直接位於配置示例標題下。
支援數字和整數物件
設定編輯器中現在支援具有非空數字/整數值的物件。
executeCommand 的新型別簽名
在 VS Code 的早期版本中,vscode.commands.executeCommand
被型別化為始終返回一個可能未定義值的 Promise。
export function executeCommand<T>(command: string, ...rest: any[]): Thenable<T | undefined>;
但是,並非所有命令都能返回undefined
。例如,返回專案陣列的命令通常在沒有結果時返回空陣列,而不是undefined
。在這些情況下,您必須使用醜陋的型別轉換或新增不必要的檢查來編寫型別正確的程式碼。
為了解決這個問題,我們更新了executeCommand
的型別定義,使其更明確。
export function executeCommand<T = unknown>(command: string, ...rest: any[]): Thenable<T>;
這意味著如果命令可以返回undefined
,您必須顯式地將| undefined
作為型別引數的一部分傳遞。
vscode.commands.executeCommand<vscode.CallHierarchyItem | undefined>('vscode.prepareCallHierarchy', ...);
此更改僅影響executeCommand
的型別定義,不改變此函式的行為。
為 exactOptionalPropertyTypes 更新 vscode.d.ts
我們更新了vscode.d.ts
中的型別定義,以更好地支援 TypeScript 的exactOptionalPropertyTypes
嚴格選項。這項工作包括:
- 澄清哪些可選屬性可以被賦值為
undefined
。 - 在如何使用
?
與| undefined
方面更加一致。
如果您正在擴充套件中使用exactOptionalPropertyTypes
,如果您在使用vscode.d.ts
型別定義時遇到任何問題,請告訴我們。
來自 URI 的 HTML 自定義資料
自定義資料允許使用者和擴充套件透過新的 HTML 標籤和屬性擴充套件 HTML 語言支援。
在此版本中,HTML 自定義資料貢獻也接受文件 URI。您可以使用此功能透過TextDocumentContentProvider的文件在執行時提供自定義資料。
配置預設值覆蓋
您現在可以透過package.json
中的configurationDefaults
貢獻點覆蓋其他已註冊配置的預設值。例如,以下程式碼片段將files.autoSave
設定的預設行為覆蓋為在焦點更改時自動儲存檔案。
"configurationDefaults": {
"files.autoSave": "onFocusChange"
}
注意:具有application
或machine
作用域的配置無法被覆蓋。
替換輸出通道中的內容
在此里程碑中,OutputChannel
物件上的新replace
API 可以替換輸出通道中的內容。
/**
* Replaces all output from the channel with the given value.
*
* @param value A string, falsy values will not be printed.
*/
replace(value: string): void;
workspaceContains 超時
當使用帶有 glob 模式的workspaceContains:
啟用事件時,VS Code 會在工作區中啟動檔名搜尋,查詢與所提供的 glob 模式匹配的檔名。一旦找到匹配的檔名,擴充套件就會啟用。如果在 7 秒內未找到匹配的檔名,VS Code 現在將取消搜尋,並且擴充套件將不會被啟用。
釋出預釋出擴充套件
VS Code 現在支援擴充套件作者透過傳遞--pre-release
標誌使用vsce
釋出其擴充套件的預釋出版本。這意味著您可以將最新功能提供給選擇安裝預釋出版的使用者,並在正式擴充套件釋出之前獲得早期反饋。
vsce publish --pre-release
VS Code Marketplace 僅支援擴充套件版本的major.minor.patch
,尚不支援semver
預釋出標籤。因此,我們建議擴充套件使用major.EVEN_NUMBER.patch
作為釋出版本,使用major.ODD_NUMBER.patch
作為預釋出版本。例如:0.2.*
用於釋出,0.3.*
用於預釋出。VS Code 將自動將擴充套件更新到可用的最高版本,因此即使使用者選擇了預釋出版本,一旦有更高版本的擴充套件釋出,該使用者也將更新到釋出版本。
有關預釋出擴充套件的更多資訊,請參閱預釋出擴充套件主題。
語言伺服器協議
語言伺服器協議的新版本以及相應的 npm 模組已釋出。除了各種次要改進之外,新版本還包含行內值的提案實現。
除錯介面卡協議
輸出事件的新重要類別
除錯介面卡協議的Output
事件用於將除錯物件的 stdout 和 stderr 流以及偵錯程式發出的資訊性訊息傳送到除錯控制檯。這種訊息流對於使用者來說可能很多,關鍵事情可能會被忽略。因此,為Output
事件添加了一個新類別important
,除錯介面卡可以使用它來顯示需要突出顯示且不被使用者忽略的關鍵訊息。important
類別是客戶端在高度可見的 UI 中顯示重要資訊的提示,例如作為彈出通知。由於此類別是一個提示,客戶端可能會忽略該提示並假定為default
類別 (console
)。
執行控制請求的澄清和改進
此前,除錯介面卡協議規定所有“執行控制”請求(continue
、next
、stepIn
、stepOut
、stepBack
、reverseContinue
)都在單個執行緒上操作,但實現可以決定忽略執行緒引數並在所有執行緒上操作。由於這種模糊的“單執行緒”語義並沒有真正用處,除錯介面卡通常會實現更有用的功能:
- “步進”請求,它步進當前執行緒,同時允許其他執行緒透過恢復它們自由執行。
- “繼續”請求,它恢復所有執行緒。
由於當前規範對於執行控制請求不切實際,我們已更改了所有執行控制請求(continue
、next
、stepIn
、stepOut
、stepBack
、reverseContinue
)的規範,使其與通常的實現匹配。
此外,某些除錯介面卡需要“替代語義”,即step
或continue
僅在當前執行緒上操作,但保持所有其他執行緒處於掛起狀態。對於這種“替代行為”,已向所有執行控制請求添加了一個新的可選singleThread
屬性。除錯介面卡必須使用相應的新的supportsSingleThreadExecutionRequests
功能來指示客戶端執行控制請求支援singleThread
屬性。
建議的擴充套件 API
每個里程碑都會帶來新的提議 API,擴充套件作者可以嘗試這些 API。一如既往,我們希望得到您的反饋。以下是嘗試提議 API 的步驟
- 查詢您要嘗試的提議並將其名稱新增到
package.json#enabledApiProposals
。 - 使用最新的vscode-dts並執行
vscode-dts dev
。它會將相應的d.ts
檔案下載到您的工作區中。 - 您現在可以根據該提議進行程式設計。
您不能釋出使用提議 API 的擴充套件。下個版本中可能會有破壞性更改,我們絕不希望破壞現有擴充套件。
QuickPickItem 分隔符
在此迭代中,我們引入了擴充套件透過提案 API (vscode.proposed.quickPickSeparators.d.ts
) 向 Quick Pick 新增分隔符(也稱為“類別”)的功能。這對於分組專案或在專案之間留出一些空間非常有用。
要向現有 Quick Pick 新增分隔符,您可以向現有專案列表新增一個新的QuickPickItem
,但要指定QuickPickItem
上的kind
屬性並將其設定為QuickPickItemKind.Separator
。
在上面的示例中,您需要將以下物件新增到您的專案列表中:
{
label: 'APIs',
kind: QuickPickItemKind.Separator
}
如果您不指定kind
屬性,或者將其設定為QuickPickItemKind.Default
,則該項將被視為普通的QuickPickItem
。
您可以在issue #74967中提供有關此 API 的反饋。
值得注意的修復
- 5989 無法使用 openssh 在遠端 Windows 計算機上執行任何任務
- 45629 Mac 上的 Google 日語輸入法 (IME) - 建議與文字重疊
- 131345 預設設定棄用警告與
\n
破壞了 json - 133521 當 nvm 已安裝時卻要求安裝
- 133623 如果焦點執行緒不再存在,除錯工具欄不會更新
- 134254 無法輸入韓語。自身分裂或缺失
- 134429 Zlib 錯誤:距離過遠無效
- 135838 當有另一個檔名更長的檔案時,無法儲存檔案
- 136684 呼叫堆疊項未開啟具有正確內容的選項卡
- 137012 Emmet 在 VS Code 1.62.2 (Universal) 的 js/jsx 檔案中不起作用
- 138153 效能:_removePropertiesWithPossibleUserInfo 佔加載渲染器成本的約 10%
- 138302 效能:僅在擴充套件註冊後更新編輯器配置
- 138517 vscode.dev 無法在私有儲存庫中切換分支
感謝
最後但同樣重要的是,向 VS Code 的貢獻者們致以衷心的感謝。
Web 擴充套件
啟用作為Web 擴充套件執行程式碼的擴充套件的擴充套件作者(以下列表介於 11 月 2 日至 12 月 6 日之間)
- Material Icon Theme (lit fork) (abschill)
- Base64 Utils (Adrientoub)
- LS-Club (AdvantiSS)
- Apollo Workbench (Apollo GraphQL)
- A-SOUL 鼓勵師 (AS042971)
- Django (Baptiste Darthenay)
- TOML Language Support (be5invis)
- Simple React Snippets (Burke Holland)
- MASM/TASM (clcxsrolau)
- Tree (CTC)
- Tree (Insiders) (CTC)
- Structured Data Templates (Daniel G. Taylor)
- Notepad Notebook (Devon7925)
- Of course I still log you (Diego Perez)
- Hello, DotNetJS! (Elringus)
- Excel Viewer (GrapeCity)
- FTL XML (hahn-kev)
- ECL Language (HPCC Systems)
- Graphviz Previewer Web (IJMacD)
- ImJoy (ImJoy Team)
- InterSystems ObjectScript (InterSystems Developer Community)
- Shader Toy (Web) (Jackson Kearl)
- Dark Light (Jakka Prihatna)
- React Native Mockups Explorer (jamsch)
- Quote List (jmviz)
- Vue Language Features (Volar) (Johnson Chu)
- Code Runner for Web (Jun Han)
- GZDoom ZScript (kaptainmicila)
- nginx.conf hint (Liu Yue)
- Loadmill (Loadmill)
- UUID Generator (ludwhe)
- CSS Formatter (Martin Aeschlimann)
- SnowScript JS (Mauricio Rojas)
- HLASM Browser dev (mbali)
- Template String Converter (meganrogge)
- Micro Focus COBOL (Micro Focus)
- Micro Focus Enterprise (Micro Focus)
- Cursor Align (Mike Moore)
- Cursor Trim (Mike Moore)
- Multi-Cursor Search (Mike Moore)
- numeric (neal.bkn)
- Toast (Nick Bradley)
- steris (numso)
- N/A (Orta)
- Wurst language support (peterzeller)
- ShowFlags (PEW's Corner)
- Folder Archiver (Philip Damianik)
- ZIP archive type (Philip Damianik)
- Open In Webview Web Extension (Project μ)
- Replace On (rioj7)
- Select By (rioj7)
- Powercursor (Rishov Sarkar)
- BrightScript Language (RokuCommunity)
- Script Assets (Saige)
- LinkMe (saswatbh)
- Drawing Editor (Seflless)
- Azure ML Remote Web (sevillal)
- vscode-cml (sevillal)
- Reflow Paragraph (Stephen Sigwart)
- Neon Dark Theme (Sudhan)
- Japanese Word Handler (Suguru Yamamoto)
- tldraw (tldraw)
- vscodevim-sneak-fork (vscodevim-sneak-fork)
- Expression2-LS (Vurv78)
- Weigl WEM | Script (Weigl Control LLC)
- GreyScript (WyattL)
- mplstyle (Matplotlib) (yy0931)
- OverPy (Zezombye)
- COBOL Folding (zokugun)
- Explicit Folding (zokugun)
- Zokugun Themes (zokugun)
問題跟蹤
對我們問題跟蹤的貢獻
- John Murray (@gjsjohnmurray)
- Andrii Dieiev (@IllusionMH)
- CodeCrazy-ywt (@CodeCrazy-ywt)
- Simon Chan (@yume-chan)
- ArturoDent (@ArturoDent)
- Lemmingh (@Lemmingh)
拉取請求
對 vscode
的貢獻
- @adaex (Aex):更新到最新的 seti-ui 圖示主題 PR #136375
- @alex-brs:build/npm/preinstall:修復節點版本錯誤訊息 PR #136794
- @filiptronicek (Filip Troníček):將引數
connectionToken
重新命名為connection-token
PR #136620 - @gjsjohnmurray (John Murray)
- 在 QuickDiff 準備期間,為活動欄中的 SCM 新增進度指示器 PR #136969
- 設定描述中缺少單詞(修復 #137027) PR #137028
- 避免帳戶靜默登入中衝突的作用域和 commandId(修復 #137601) PR #137613
- @grandeljay (Jay):刪除 PHP 語句中的括號 PR #137447
- @Gvozd (Gvozd):133348 修復在編輯器中開啟搜尋時 OOM 問題 PR #136554
- @jeanp413 (Jean Pierre)
- 修復遠端終端錯誤:未找到命令 $setUnicodeVersion PR #136171
- 修復遠端終端標題在重新載入時不恢復的問題 PR #136176
- 修復錯誤:重新命名終端選項卡時無法執行遞迴拼接 PR #136177
- 修復手動構建 vscode 伺服器時缺少檔案的問題 PR #137570
- @jherchen (Johannes Herchen):修復預安裝指令碼 PR #136638
- @JustinGrote (Justin Grote):修正 booleanRegex 以正確僅匹配 'true' 和 'false' PR #137822
- @jzyrobert (Robert Jin):更新 html-language-features 文件和任務到 yarn PR #136543
- @laurentlb (Laurent Le Brun):使 'expandLineSelection' 成為一個正確的動作。 PR #135917
- @MalikIdreesHasanKhan (Malik Idrees Hasan Khan):修復了拼寫錯誤。 PR #135729
- @mamphis (Mattis Wacker):修復缺少活動除錯行 + 斷點字形 PR #137471
- @mkantor (Matt Kantor):修復文件註釋中的幾個拼寫錯誤 PR #137810
- @orange4glace:#fix: 108459 PR #108666
- @parched (James Duley):修復任務配置錯誤訊息中的語法。 PR #137898
- @pdrgds (Pedro Guedes):修復 #131458 PR #136625
- @PEZ (Peter Strömberg)
- 新增選項:在截圖疊加層中包含命令 PR #126742
- 遵守設定只顯示快捷鍵 PR #136251
- @pohzipohzi (Zi How Poh):為跳轉到下一個/上一個問題新增選項 PR #135736
- @Pranomvignesh (Pranom Vignesh):修復鍵繫結標題 PR #123071
- @rudavko (Andrii):使用現有工具函式消除程式碼重複 PR #137016
- @RyanAfrish7 (Afrish Khan S):將 markdown 中的 img href 從 file 更改為 vscode-file PR #136687
- @SeriousBug (Kaan Genç):允許擴充套件停用內建 markdown 預覽按鈕 PR #136273
- @sijakret:html-language-features:對 customData.html 的文字文件提供程式支援 PR #137557
- @smcenlly (Simon McEnlly):輸出通道:新的 replaceAll API,用於改善輸出通道渲染 PR #136402
- @suzmue (Suzy Mueller):如果焦點執行緒不存在,則清除它 PR #133637
對vscode-codicons
的貢獻
- @Profesor08:添加了
newline
圖示 PR #91
對 vscode-css-languageservice
的貢獻
- @avigoldman (Avi Goldman):尊重
kind
屬性 PR #254
對 vscode-eslint
的貢獻
- @asingh04 (Abhishek Singh):處理預先存在的停用規則註釋 PR #1261
對 vscode-extension-samples
的貢獻
對 vscode-html-languageservice
的貢獻
- @gustavnikolaj (Gustav Nikolaj):在所有 src 和 href 屬性中觸發補全 PR #117
- @jzyrobert (Robert Jin):為屬性標籤新增自動補全 PR #116
對 vscode-json-languageservice
的貢獻
- @gjsjohnmurray (John Murray):驗證主機名、ipv4 和 ipv6 格式 (#_100) PR #118
- @mati-o (Mati O):修復 $ref 到 $id PR #107
- @Relequestual (Ben Hutton):表示 JSON Schema draft 2020-12 尚未支援 PR #117
對 vscode-languageserver-node
的貢獻
- @CodingDoll:糾正 engines 欄位 node 14+ PR #862
- @fvclaus:當未定義範圍時,SymbolInformation 的位置會丟失 PR #849
- @hamirmahal (Hamir Mahal)
- @robertoaloi (Roberto Aloi):修復錯誤訊息中的拼寫錯誤 PR #866
對 vscode-pull-request-github
的貢獻
- @38elements (38elements)
- @burkeholland (Burke Holland):開啟 gist 儲存庫時出現抓取錯誤 PR #2933
- @emtei (Mateusz Stopka):不要為已關閉或已合併的 PR 啟用評審模式 PR #3021
- @taisph (Tais P. Hansen):修復在 bash 中需要引號的生成分支名稱 PR #3084
對 vscode-vsce
的貢獻
- @microhobby (Matheus Castello):將
libsecret
新增到Dockerfile
並在README
中提及依賴項 PR #646
對 language-server-protocol
的貢獻
- @doriath (Tomasz Zurkowski):澄清對重新命名請求的響應。 PR #616
- @yxrkt:ResponseMessage.result 可以是陣列型別 PR #1012
對 monaco-editor
的貢獻
- @activeguild (j1ngzoue):新增 'browser-ems-vite-react' 示例 PR #2767
- @emojiiii (C.Y.Kun):修復網站 playground 上的一些錯誤 PR #2779
- @MasterOdin (Matthew Peveler)
- @milahu:修復 monaco.d.ts 的連結 PR #2769
- @Pranomvignesh (Pranom Vignesh):語義令牌提供程式示例在文件中損壞 PR #2764
- @rramo012 (Rafael Ramos):修復文件連結 PR #2748