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

2019 年 11 月(版本 1.41)

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

下載:Windows: x64 | Mac: Intel | Linux: deb rpm tarball snap


歡迎使用 Visual Studio Code 2019 年 11 月版。此版本中有許多更新,希望您會喜歡。以下是其中一些主要亮點:

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

Insiders:想盡快看到新功能嗎?您可以下載每夜更新的 Insiders 構建版本,並第一時間嘗試最新的更新。有關最新的 Visual Studio Code 新聞、更新和內容,請在 Twitter 上關注我們 @code

工作臺

資源管理器中的緊湊資料夾

在檔案資源管理器中,我們現在以緊湊形式渲染單個子資料夾。在這種形式下,單個子資料夾將壓縮在一個組合的樹元素中。例如,這對於 Java 包結構很有用。

設定 explorer.compactFolders 控制此行為。預設情況下,此設定處於開啟狀態。

File Explorer compact folders

編輯差異檢視的左側

如果您比較兩個可編輯的編輯器(例如,透過檔案資源管理器比較兩個檔案或執行全域性搜尋和替換),左側現在也可以編輯並儲存(⌘S (Windows, Linux Ctrl+S))。

Diff view left hand side edit

注意: 如果您厭倦了按 ⌘S (Windows, Linux Ctrl+S),可以啟用自動儲存(檔案 > 自動儲存)。

從速覽編輯器中儲存

如果您調出速覽檢視並在其中輸入,並且焦點位於該嵌入式編輯器內,您現在可以透過 ⌘S (Windows, Linux Ctrl+S) 儲存更改。

Saving in a Peek view

問題面板

更多篩選器

問題面板中添加了更多預定義篩選器。您現在可以按型別(錯誤、警告和資訊)篩選問題,也可以檢視範圍限定為當前活動檔案的問題。

Problems panel filters

主題:GitHub Sharp Dark,字型:FiraCode

在狀態列中顯示當前問題

您現在可以配置 VS Code 在狀態列中顯示當前問題訊息。這使您無需額外的鍵盤或滑鼠手勢即可檢視活動檔案中所選問題的摘要。

注意: 啟用此功能需要啟用設定 problems.showCurrentInStatus

Current problem displayed in the Status bar

主題:GitHub Sharp Dark,字型:FiraCode

靈活的篩選框佈局

問題面板中的篩選框現在會根據面板的位置和大小調整其位置。

Problems panel filter box adjustable layout

主題:GitHub Sharp Dark,字型:FiraCode

改進的字型渲染(Windows、Linux)

在上一個里程碑中更新到 Electron 6 時,許多使用者報告說他們的字型渲染有所倒退。具體來說,字型渲染不如以前平滑。我們立即在編輯器中解決了此問題,並在 1.40 恢復版本中提供了修復。然而,工作臺的其他區域仍然存在不理想的字型渲染問題。

在此版本中,我們改進了工作臺更多部分的字型渲染(適用於 Windows 和 Linux)。下面的螢幕截圖顯示了前後對比(放大以顯示差異)。特別是,工作臺的許多樹和列表元素以前使用灰度抗鋸齒渲染,現在使用子畫素抗鋸齒渲染。

之前(左)和之後(右)

Improved font rendering before and after

我們計劃改進工作臺更多部分的字型渲染。您可以檢視此文字渲染問題查詢以檢視進度。

遠端場景下更快的讀/寫檔案效能

對於檔案系統遠端且延遲較高的場景(例如,在瀏覽器中使用 VS Code 連線較慢或連線到不在同一區域的遠端主機時),讀寫檔案(從文字編輯器)現在應該更快。我們切換到了基於流的讀寫實現,這大大減少了通訊開銷。

鍵入時更新搜尋結果

在全文搜尋中,結果現在會在您鍵入時更新。這在構建複雜的正則表示式查詢等場景中特別有用,其中對查詢的快速反饋可以幫助您編寫正則表示式。

在這裡,即時反饋有助於構建正則表示式查詢和替換查詢,以採用 TypeScript 的可選鏈語法

Search result updates on type

主題:Noctis Hibernus,字型:Hasklig

注意: 可以透過將 search.searchOnType 設定為 false 來停用此功能,並且可以透過 search.searchOnTypeDebouncePeriod(預設值為 300 毫秒)調整鍵入和搜尋之間的延遲。

向搜尋結果新增游標

我們添加了一個命令,可將游標新增到文字搜尋的所有匹配項。在搜尋檢視中,焦點位於檔案的搜尋結果上時,您可以按 ⇧⌘L (Windows, Linux Ctrl+Shift+L),以同時編輯該檔案中的所有匹配項。這與在單個編輯器中使用“查詢”小部件搜尋時使用的鍵盤快捷方式相同。

Add cursors to search results

預設展開所有搜尋結果

以前,如果全文搜尋在單個檔案中返回超過 10 個結果,它將顯示在結果樹中摺疊。然而,這有時會使查詢特定結果變得困難,因此在此版本中,所有結果將顯示為展開。

您可以將 search.collapseResults 設定為 auto 以恢復舊行為。

編輯器

縮圖裝飾錯誤、警告和內容更改

錯誤和警告現在在縮圖(程式碼概覽)中內聯突出顯示。您可以使用新的 minimap.errorHighlightminimap.warningHighlight 主題顏色更改這些裝飾的顏色。

您可以在下面看到縮圖突出顯示了一個細微的逗號丟失錯誤

Minimap error and warning decorations

內容更改裝飾也顯示在縮圖的裝訂線中

Minimap content change decorations

您可以使用以下設定修改內容更改顏色

  • minimapGutter.addedBackground
  • minimapGutter.modifiedBackground
  • minimapGutter.deletedBackground

您可以使用 scm.diffDecorations 設定更改原始碼管理裝飾的可見性,該設定具有以下值

  • all - 在所有位置顯示原始碼管理差異裝飾。
  • gutter - 僅在左側編輯器裝訂線中顯示。
  • minimap - 僅在縮圖裝訂線中顯示。
  • overview - 僅在概覽標尺中顯示。
  • none - 不顯示差異裝飾。

程式碼導航備用命令

VS Code 以前在已經位於定義處時選擇“轉到定義”不做任何操作。在此版本中,可以改為執行備用命令。例如,“轉到定義”可以對映為執行“轉到引用”。

這是透過 editor.gotoLocation.alternativeDefinitionCommand 設定定製的。例如,您可以將“轉到定義”的備用設定為“轉到宣告”,反之亦然。如果您更喜歡舊行為,可以將其留空。

速覽、轉到和查詢所有命令

每個“速覽”命令現在都有一個“轉到”對應項。例如,現在有“速覽實現”和“轉到實現”。速覽檢視不會更改當前編輯器,並允許快速在原地檢視原始碼。

下面的影片顯示了使用“速覽實現”在速覽檢視中檢視 ICommandService 介面的所有實現

Peek Implementations command

主題:GitHub Sharp,字型:FiraCode

相比之下,“轉到實現”用於導航,讓您快速到達實現。

下面的影片(使用 "editor.gotoLocation.multipleImplementations": "goto" 設定)透過重複按 F12 導航到 ICommandService 介面的所有實現

Go to Implementations command with F12

主題:GitHub Sharp,字型:FiraCode

最後但同樣重要的是,類似於“查詢所有引用”命令,現在有“查詢所有實現”。它將實現作為穩定的列表顯示在編輯器旁邊。例如,在執行影響介面所有實現的重構時,這可以用作 TODO 列表。

Find All Implementations in the Side bar

主題:GitHub Sharp,字型:FiraCode

麵包屑和大綱檢視的語言特定篩選

上一個里程碑中,我們添加了從大綱檢視和麵包屑導航中篩選特定型別(例如變數)的功能。此版本完善了此功能,允許語言特定篩選,例如不顯示 TypeScript 變數但顯示 JavaScript 變數。

您可以在下面看到 value 常量是如何在 JavaScript 檔案的大綱檢視中顯示的,但在 TypeScript 版本中沒有顯示。

Language-specific filter for Outline view

主題:GitHub Sharp,字型:Fira Code

macOS 上的 IntelliSense 鍵盤快捷方式

IntelliSense 通常透過 Ctrl+Space 觸發。然而,在 macOS 上,如果配置了多個輸入源,此鍵盤快捷方式會被作業系統佔用。這通常會導致混亂,使用者認為 IntelliSense 損壞了。

現在有兩種方法可以處理此問題

  • 使用我們為 macOS 新增的新 Alt+Escape 鍵盤快捷方式。
  • 透過 系統偏好設定 > 鍵盤 > 快捷鍵 > 輸入源,在 macOS 偏好設定中停用透過 Ctrl+Space 切換輸入源。

macOS Keyboard Shortcuts Input Sources option

螢幕閱讀器輸出

有一個新設定 editor.accessibilityPageSize,它控制螢幕閱讀器一次可以讀出的編輯器行數。請注意,對於大於預設值 10 的數字,這會對效能產生影響。

如果您使用螢幕閱讀器“全部朗讀”命令,我們建議將 editor.accessibilityPageSize 設定為 100 或 1000。下一個里程碑中,我們將研究更改此設定的預設值。

新的括號匹配選項

現在可以配置 "editor.matchBrackets": "near" 以獲得舊行為,即僅當游標位於括號任一側時才突出顯示匹配的括號。預設值為 always,它會突出顯示包含當前游標位置的匹配括號。

新的自動縮排選項

設定 editor.autoIndent 現在可以採用不同的值。此設定會影響多個功能,例如按 Enter、按 Tab 或縮排和取消縮排行。您可以將此設定視為一個越來越嚴格的“滑塊”

  • "none":按 Enter 將插入 \n,僅此而已。
  • "keep":按 Enter 將保持當前行的縮排。
  • "brackets":在上述所有內容的基礎上添加了特定於語言的括號周圍的特殊邏輯。
  • "advanced":在上述所有內容的基礎上添加了尊重透過 onEnterRules 定義的特定於語言的規則。
  • "full" (預設):在上述所有內容的基礎上添加了尊重透過 indentationRules 定義的特定於語言的規則。

程式碼操作選單鍵盤快捷方式

如果存在,程式碼操作和重構選單現在會顯示自定義鍵盤快捷方式

A keybinding for extract constant

整合終端

最小對比度

在終端中使用顏色的應用程式可能很棘手,它們可以使用以下顏色來表示文字

  • 預設前景顏色
  • 由終端主題定義的 16 種顏色調色盤
  • 一組 240 種固定顏色
  • 任何 RGB 顏色(1600 萬)

問題在於應用程式不知道預設的背景顏色或前景顏色是什麼,也不知道它是否會與應用程式使用的顏色有良好的對比度。為了解決這個問題,終端現在可以動態更改文字的前景顏色,以滿足指定的對比度要求。

將前景顏色設定為所需的對比度,範圍從 1 到 21

// 4.5 is recommended for baseline website accessibility
"terminal.integrated.minimumContrastRatio": 4.5

終端顏色會增加或減少亮度,直到滿足對比度要求,或者前景變為 #000000#ffffff

Terminal minimum contrast ratio setting

主題:Sapphire,字型:Hack

新的實驗性 WebGL 渲染器

終端提供了一個新的基於 WebGL 的渲染器,與舊的基於 canvas 的方法相比,效能提升高達 900%*。

您可以使用此設定選擇使用新的渲染器

"terminal.integrated.rendererType": "experimentalWebgl"

速度改進歸因於許多因素,但亮點如下

  • WebGL 允許我們更直接地與 GPU 通訊,而不是透過 web 平臺的 CanvasRenderingContext2D API。
  • 渲染器幾乎只處理數字和型別化陣列,速度極快。物件和陣列的建立也保持在最低限度,以避免不必要的垃圾回收。
  • 所有字元現在都快取在紋理圖集中,而不僅僅是樣式有限的 ASCII 字元。這意味著重複繪製相同的字元要快得多。

我們觀察到使用 canvas 渲染器時,幀渲染速度根據使用者的硬體/環境而變化很大。每幀通常需要 1 毫秒到 40 毫秒不等,但在硬體問題是因素的極端情況下,可能會達到 200 毫秒以上。到目前為止,WebGL 似乎更加一致,通常在 0.2 毫秒到 2 毫秒的範圍內

WebGL frames are much faster

一旦整合,可靠性是我們期望改進的事情之一。使用 canvas 渲染器,如果 GPU/canvas 出現問題,瀏覽器會嘗試變得聰明並回退到 CPU 渲染,但我們不希望發生這種情況,因為我們有一個基於 DOM 的渲染器,它更適合這種情況。使用 WebGL,它要麼按預期工作,要麼徹底失敗(無法獲取 WebGL 上下文),在這種情況下,我們可以回退到 DOM 渲染器。

由於渲染所需的時間大大減少,CPU 得以釋放,可以專注於解析傳入資料,從而渲染更多幀並更快地執行命令。以下效能資料是在 vscode 儲存庫中執行 ls -lR 生成的

Commands run faster on the WebGL renderer

新的渲染器還修復了 canvas 渲染器的一個嚴重錯誤,即當字元大於單元格大小時,其側面會被裁剪。在 Linux 上使用某些字型時,此問題最常出現在下劃線中。

* 有關基準測試的更多資訊,請參閱 xtermjs/xterm.js#1790

原始碼管理

Git:git.ignoredRepositories 中的相對路徑

git.ignoredRepositories 設定現在支援相對路徑,當您配置工作區設定並希望忽略 VS Code 中的某些儲存庫時,這很有用。

Git:採用 FileSystemProvider

Git 擴充套件現在使用 FileSystemProvider API,除了修復某些編碼問題外,它還提供了一種更高效、更可靠的方式來公開 Git 儲存庫中檔案的舊版本。

語言

HTML 映象游標

當您編輯 HTML 標籤時,VS Code 現在會新增一個“映象游標”。此行為由設定 html.mirrorCursorOnMatchingTag 控制,預設情況下處於開啟狀態。

此功能的工作原理是,當您的游標移入 HTML 標籤名稱範圍時,會向匹配的標籤新增一個多游標。就像在多游標模式下一樣,您可以使用按詞刪除或按詞選擇。當您將游標移出標籤名稱範圍時,映象游標將被移除。

一個特殊情況是當游標位於開始標籤末尾時輸入 Space,例如在 div 結束處,如 <div|></div|>。在這種情況下,VS Code 會刪除結束標籤名稱後插入的空格並退出映象游標模式,以便您可以繼續編輯 HTML 屬性。

HTML mirror cursor

主題:Nord,字型:Input Mono

HTML 重新命名標籤

您現在可以使用 F2 在 HTML 中重新命名開始/結束標籤對。

HTML rename tag

自動完成 CSS 屬性排名

CSS 自動完成現在按受歡迎程度對屬性進行排名

CSS suggestions ranked by popularity

使用資料來源於 ChromeStatus.org

Sass 模組支援

Sass 最近引入了新的模組系統

我們添加了對 SCSS 檔案中 Sass 模組的語法突出顯示支援以及語言功能支援。語言功能包括

  • @use@forward 的自動完成。
  • @use@forward 路徑的路徑完成。
  • Sass 內建模組(如 sass:mathsass:color)的自動完成。
  • @use@forward 匯入路徑的文件連結。

Sass module support

JSON

為了避免大型 JSON 檔案出現效能問題,JSON 語言支援現在對其計算的摺疊區域和文件符號(用於大綱檢視和麵包屑)設定了上限。預設情況下,限制為 5000 項,但您可以使用設定 json.maxItemsComputed 更改限制。

JSON large file warning

TypeScript 3.7

VS Code 現在附帶 TypeScript 3.7.3。此重大更新帶來了一些 TypeScript 語言改進,包括可選鏈空值合併斷言函式,以及適用於 JavaScript 和 TypeScript 的一些新工具功能。一如既往,此版本還包括許多重要的錯誤修復。

您可以在 TS 3.7 部落格文章中閱讀有關 TypeScript 3.7 功能的更多資訊。

JavaScript 和 TypeScript 的可選鏈支援

由於 TypeScript 3.7,VS Code 現在對 JavaScript 和 TypeScript 原生支援可選鏈。這包括語法突出顯示和 IntelliSense

Optional chaining and nullish coalescing

此外,當您接受可選屬性上的完成時,VS Code 可以自動插入 ?.

Selecting a completion on a potentially undefined value automatically inserts an optional chain

自動插入 ?. 取決於是否啟用了嚴格空檢查。可以使用 "typescript.suggest.includeAutomaticOptionalChainCompletions""javascript.suggest.includeAutomaticOptionalChainCompletions" 設定停用自動 ?. 插入。

TypeScript 的提取介面重構

新的“提取到介面”重構允許您快速將內聯型別提取到介面,以便可以重用它。

Selecting the new 'extract interface' refactoring

您可以在下面看到“Neural”介面已從“keyes”中提取出來

After extracting the 'Neural' interface out of 'keyes'

JavaScript 和 TypeScript 的分號格式化程式選項

新的 javascript.format.semicolonstypescript.format.semicolons 格式化設定允許您控制格式化程式如何處理 JavaScript 和 TypeScript 檔案中的分號。

有效的分號格式設定值為

  • ignore - 不新增或刪除分號(預設)。
  • insert - 在語句末尾插入分號。
  • remove - 刪除不必要的分號。

未呼叫函式檢查

如果您忘記在條件語句中呼叫函式,VS Code 現在會提醒您。

考慮以下 TypeScript 片段

import * as fs from 'fs';

fs.stat('/path/to/file', function(err, stats) {
  if (stats.isDirectory) {
    handleDirectory(stats);
  }
});

上面的示例使用 Node.js fs.stat API 獲取有關檔案的資訊。但有一個錯誤!.isDirectory 實際上是一個函式,而不是一個屬性!這意味著 handleDirectory 將在每個檔案上呼叫,而不僅僅是按預期在目錄上呼叫,因為函式 isDirectory 已定義且評估為 true

VS Code can alert when you forget to call a function

請注意,您只有在啟用嚴格空檢查時才會看到此診斷。

除錯

除錯 START 檢視

我們引入了一個新的除錯 START 檢視,使使用者更容易在新工作區中開始和配置除錯。根據活動檔案,我們將選擇適當的除錯擴充套件,並使您能夠除錯或執行應用程式。對於更精細的除錯和執行配置,最好還是配置 launch.json 檔案。

您可以在下面看到快速開始除錯 Express JavaScript 應用程式,如果需要更多控制,則建立 launch.json 檔案。

Debug Start view

在 CALL STACK 檢視中將“重新啟動幀”作為內聯操作

為了提高“重新啟動幀”操作的可發現性,CALL STACK 檢視中現在有一個內聯操作,滑鼠懸停時可見。重新啟動幀是在命中斷點後重新執行 preceding 原始碼的便捷方法。如果除錯擴充套件不支援重新啟動幀,則不顯示此操作。

Restart frame button

除錯控制檯顯示輸入和輸出

為了更好地區分除錯控制檯中的輸入和輸出,我們在左側添加了輸入 > 和輸出 < 裝飾。

Debug console input and output decorations

內聯斷點顯示

新設定 debug.showInlineBreakpointCandidates 控制在除錯時是否在編輯器中顯示內聯斷點候選裝飾。預設情況下,它們是可見的。

預覽功能

預覽功能尚未準備好釋出,但已足夠實用。我們歡迎您在這些功能開發期間提供早期反饋。

搜尋編輯器

在此里程碑中,我們開始致力於在專用編輯器中顯示搜尋結果。這提供了更多空間來檢視搜尋結果,並允許您同時維護多個搜尋結果集合。

在此版本中,在搜尋編輯器中您可以

  • 使用“轉到定義”系列命令導航到結果,包括“速覽定義”和“在側面開啟定義”。
  • 重新執行搜尋以更新結果列表。
  • 檢視結果周圍的原始碼行。
  • 將結果儲存到磁碟以便以後參考,甚至在原始碼管理中跟蹤。

我們將在接下來的版本中繼續新增功能並提高可用性。

Search Editor

主題:A Touch of Lilac,字型:Hasklig

注意: 您可以透過將 search.enableSearchEditorPreview 設定為 true 來預覽此功能。

呼叫層次結構檢視

呼叫層次結構 API 在 Stable 中可用,語言擴充套件作者正忙於實現它,因此我們添加了呼叫層次結構檢視。這補充了“速覽呼叫層次結構”檢視,並與“查詢所有引用”和“查詢所有實現”共享同一側邊欄檢視。一旦語言擴充套件支援呼叫層次結構 API,您將能夠從上下文選單或命令面板中選擇“顯示呼叫層次結構”以檢視檢視

Call Hierarchy view

主題:GitHub Sharp,字型:FiraCode

呼叫層次結構檢視允許您深入檢視符號的呼叫者和呼叫。它會突出顯示活動編輯器中的呼叫,允許從任何子項重新設定檢視父級,並保留以前執行的歷史記錄。

JavaScript 偵錯程式

我們正在開發用於 Node.js 和 Chrome 的新偵錯程式。您可以安裝 nightly 擴充套件 js-debug-nightly,並透過更新設定以新增以下內容將其用作即插即用替換

{
  "debug.chrome.useV3": true,
  "debug.node.useV3": true
}

您無需更改現有啟動配置即可使用新偵錯程式。

偵錯程式帶來了一系列新功能,例如除錯和單步執行 webworker 的能力

An animation showing stepping through postMessage calls to and from a webworker

主題:Earthsong,字型:Fira Code

...除錯 npm 指令碼,無需額外配置或標誌...

An animation dispatching the "run npm script" command, selecting "npm start", and then hitting a breakpoint in an executed script

...等等!如果您遇到問題,請提交問題

對擴充套件的貢獻

遠端開發

遠端開發擴充套件的工作仍在繼續,它允許您使用容器、遠端機器或 適用於 Linux 的 Windows 子系統 (WSL) 作為功能齊全的開發環境。

1.41 中的主要功能包括

  • 開發容器:更容易在容器中試用示例儲存庫(例如 vscode-remote-try-python)。
  • 開發容器:建立容器時效能得到改善,併為 devcontainer.json 提供了新選項。
  • WSL:支援 Windows 10 ARM 電腦,例如 Surface Pro X。
  • 遠端資源管理器現在可以將可用檢視的範圍限定為特定的遠端型別。

您可以在遠端開發發行說明中瞭解有關新擴充套件功能和錯誤修復的資訊。

您還可以閱讀最近一篇關於使用 VS Code 檢查容器的部落格文章,並嘗試更新的在 VS Code 中使用 C++ 和 WSL 教程。

ESLint

ESLint 擴充套件的改進

  • 更好地支援 ESLint 6.x - 在大多數情況下,使用 ESLint 6.x 時不需要配置工作目錄。
  • 改進的 TypeScript 檢測 - 一旦 TypeScript 在 ESLint 中正確配置,您就不再需要透過 VS Code 的 eslint.validate 設定進行額外配置。HTML 和 Vue.js 檔案也是如此。
  • Glob 工作目錄支援 - 具有複雜資料夾結構且需要透過 eslint.workingDirectories 自定義工作目錄的專案現在可以使用 glob 模式,而不是列出每個專案資料夾。例如,code-* 將匹配所有以 code- 開頭的專案資料夾。此外,擴充套件現在預設更改工作目錄。您可以使用新的 !cwd 屬性停用此功能。
  • 改進的儲存時自動修復 - 儲存時自動修復現在是 VS Code 的儲存時程式碼操作基礎架構的一部分,並在一次往返中計算所有可能的修復。它透過 editor.codeActionsOnSave 設定進行定製。該設定支援 ESLint 特定屬性 source.fixAll.eslint。該擴充套件還尊重通用屬性 source.fixAll

下面的設定將為包括 ESLint 在內的所有提供程式啟用自動修復

    "editor.codeActionsOnSave": {
        "source.fixAll": true
    }

相比之下,此配置僅為 ESLint 啟用它

    "editor.codeActionsOnSave": {
        "source.fixAll.eslint": true
    }

您還可以透過以下方式選擇性地停用 ESLint

    "editor.codeActionsOnSave": {
        "source.fixAll": true,
        "source.fixAll.eslint": false
    }

vscode-scss

vscode-scss 擴充套件為 SCSS 變數、mixin 和函式提供跨檔案語言支援。在此里程碑中,我們幫助其開發了一個新版本 0.8.0

新版本改進了

  • 更好的匯入路徑解析
  • 自動完成顏色變數的顏色預覽
  • 更好的效能

擴充套件創作

Figma 設計工具包

我們建立了一個 Figma 設計工具包,以更好地幫助擴充套件作者為其擴充套件設計體驗。請檢視 GitHub 上的工具包儲存庫,其中包含有關如何訪問和使用工具包的說明。

下面是所包含的一些元件的示例

Figma design toolkit components

所有元件都應可調整大小和編輯。

Editing Figma components

如果您遇到任何問題或對某些元件有任何要求,請在工具包儲存庫中建立問題,以便我們可以分類和跟蹤請求。

除錯圖示顏色標記

我們為除錯檢視添加了一組新的顏色標記。

除錯工具欄

  • debugIcon.startForeground
  • debugIcon.continueForeground
  • debugIcon.disconnectForeground
  • debugIcon.pauseForeground
  • debugIcon.restartForeground
  • debugIcon.stepBackForeground
  • debugIcon.stepIntoForeground
  • debugIcon.stepOutForeground
  • debugIcon.stepOverForeground
  • debugIcon.stopForeground

Debug toolbar colors

主題:Min Dark,字型:Input Mono

除錯斷點

  • debugIcon.breakpointForeground
  • debugIcon.breakpointDisabledForeground
  • debugIcon.breakpointUnverifiedForeground
  • debugIcon.breakpointStackframeForeground
  • debugIcon.breakpointCurrentStackframeForeground

Debug breakpoint colors

主題:Min Dark,字型:Input Mono

工作區檔案事件

當檔案和資料夾更改時,有新事件

  • vscode.workspace.on[Will|Did]CreateFile
  • vscode.workspace.on[Will|Did]RenameFile
  • vscode.workspace.on[Will|Did]DeleteFile

這些事件在透過資源管理器或透過 vscode.workspace.applyEdit(WorkspaceEdit) API 從擴充套件建立、重新命名或刪除檔案時觸發,而不是在檔案在磁碟上更改或透過 vscode.workspace.fs API 修改時觸發。

這些事件的一個可能用例是語言伺服器,它可能會在重新命名檔案之前更新檔案內容,或者在刪除/建立檔案後更新專案檔案。

SnippetString

SnippetString 型別現在具有用於 choice-elements 的構建器方法。

嚴格 getWordRangeAtPosition

TextDocument.getWordRangeAtPosition API 現在更加嚴格,它不再忽略導致空字串匹配的無效正則表示式,而是會丟擲錯誤。

已棄用 extensionKind 的字串型別

擴充套件作者可以使用 package.json 中的 extensionKind 屬性來指示擴充套件在遠端情況下應該在哪裡執行。在版本 (1.40) 中,此值可以是字串或陣列。從本版本開始,此屬性僅支援陣列值,使用字串已棄用。有關詳細資訊,請參閱遠端開發文件

將 DAP 源轉換為 URI

VS Code 擴充套件 API 在引用可以在編輯器中開啟的資源時使用文件 URI,而 除錯介面卡協議 基於 Source 描述符。在此里程碑中,我們添加了一個連線這兩個世界的 API。函式 debug.asDebugSourceUri 從 DAP Source 物件建立 URI。這使得將 DAP Source 開啟到 VS Code 編輯器中變得簡單

export async function openDAPSource(
  session: vscode.DebugSession,
  source: DebugProtocol.Source
) {
  const uri = vscode.debug.asDebugSourceUri(source, session);
  vscode.window.showTextDocument(vscode.workspace.openTextDocument(uri));
}

建議的擴充套件 API

每個里程碑都會帶來新的提議 API,擴充套件作者可以進行嘗試。一如既往,我們渴望您的反饋。以下是試用提議 API 的方法:

  • 您必須使用 Insiders 版本,因為提議的 API 經常更改。
  • 您的擴充套件的 package.json 檔案中必須包含以下行:"enableProposedApi": true
  • 將最新版本的 vscode.proposed.d.ts 檔案複製到您專案的源位置。

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

CodeAction.disabled

VS Code 鼓勵擴充套件使用程式碼操作實現重構功能。然而,使用者可能很難發現擴充套件支援哪些重構,以及為什麼給定重構不適用於特定選擇。CodeAction.disabled API 提案旨在幫助擴充套件使其重構更具可發現性。

CodeAction 上擬議的 .disabled 屬性是一個人類可讀的字串,描述了為什麼給定的程式碼操作不可行。這是一個在我們的 CodeAction 示例擴充套件中使用 .disabled 的示例。

import * as vscode from 'vscode';

export class Emojizer implements vscode.CodeActionProvider {

    public provideCodeActions(document: vscode.TextDocument, range: vscode.Range): vscode.CodeAction[] | undefined {
        const action = new vscode.CodeAction(`Convert to ${emoji}`, vscode.CodeActionKind.Refactor.append('emojize'));

        if (!this.isAtStartOfSmiley(document, range)) {
            // Tell the user why our action is not available
            action.disabled = 'Selection is not currently on a :)';
            return [action];
        }

        action.edit = new vscode.WorkspaceEdit();
        action.edit.replace(document.uri, new vscode.Range(range.start, range.start.translate(0, 2)), '😀');
        return action;
    }

    ...
}

如果使用者嘗試透過鍵盤快捷方式應用停用的程式碼操作,VS Code 會向用戶顯示 .disabled 錯誤訊息

Showing the '.disabled' error in the editor

此外,為了幫助提高可發現性,停用的程式碼操作在重構源操作上下文選單中顯示為褪色

A '.disabled' Code Action in the Refactor menu

請注意,停用的操作不會顯示在頂級燈泡選單中。

如果您的擴充套件使用程式碼操作,請告知我們 CodeAction.disabled 是否對您有用且能夠實現。

自定義編輯器編輯功能

我們在此迭代中繼續致力於自定義編輯器提案。提醒一下,自定義編輯器是基於 webview 的檢視,可用於替換 VS Code 的普通文字編輯器以處理特定檔案型別。截至 VS Code 1.41,自定義編輯器現在可以與 VS Code 的撤消/重做和儲存功能整合,這使得許多有趣的用例成為可能,包括將它們用作視覺和所見即所得編輯器。

您可以在 vscode.proposed.d.ts 中找到當前的 API 提案,我們還整理了一些非常簡單的擴充套件示例,演示瞭如何將自定義編輯器用於文字和二進位制檔案。

如果您對自定義編輯器感興趣,請分享您對當前提案的反饋,並告訴我們您是否能夠實現它。

語義標記提供程式

我們添加了用於語義標記提供程式的新擬議 API。新 API 允許擴充套件提供額外的標記資訊,供編輯器用於豐富基於 TextMate 的語法突出顯示。

每個語義標記都使用標記型別和任意數量的標記修飾符註釋一個範圍。例如,型別 variable 和修飾符 membermodification 將描述對成員變數的寫入訪問。然後使用標記型別和修飾符在編輯器中新增樣式。

可以在顏色主題和使用者設定中配置樣式

    "editor.tokenColorCustomizationsExperimental": {
        "variable.member": {
            "foreground": "#35166d"
        },
        "*.modification": {
            "fontStyle": "underline"
        }
    }

如果您對此功能感興趣,我們希望得到您對當前提案的反饋,並且我們非常鼓勵進行實驗和一些早期實現。

完整的示例可在 vscode-extensions-samples repo 中找到。

語言伺服器協議

現在有透過 LSP 支援呼叫層次結構檢視的擬議支援。

瀏覽器支援

改進對 Firefox 和 Safari(macOS 和 iPadOS)的支援

在此里程碑中,我們專注於改進 VS Code 在瀏覽器中使用 Firefox 或 Safari 時的體驗。我們修復了許多問題以支援這兩種瀏覽器(FirefoxSafari)。在 Firefox 上,由於上游障礙,我們尚未完全支援鍵盤快捷方式,您可以在跟蹤問題 #85252 中閱讀更多詳細資訊。

我們還修復了許多問題,以在 iPadOS 上的 Safari 中啟用基本的 VS Code 功能。核心 UI 元素現在可供觸控和指標裝置訪問。但是,仍然存在與預定義鍵繫結(EscapeFunction 鍵)、懸停以及觸控友好型 UI/UX 相關的主要障礙。有關詳細資訊,請參閱問題 #85254

在瀏覽器中執行的更多功能可用

上一個里程碑中,我們介紹了支援從我們的儲存庫執行 yarn web 以設定 VS Code 在瀏覽器中執行。此設定仍然用於在瀏覽器中測試問題,而不是用於開發。

此里程碑中我們添加了更多可以測試的功能

  • 除錯
  • 搜尋
  • 任務
  • 問題

這是一個展示新功能執行情況的影片

VS Code running in a browser

注意: 不要將此設定用於任何嚴肅的開發。目的是讓社群能夠為 VS Code 做出貢獻更改,以改善瀏覽器中的整體體驗。

工程

Insiders 在 yum 儲存庫中可用

Insiders 版本現在在 yum 儲存庫中可用,並且像 apt 儲存庫一樣自動釋出。按照網站上的說明設定儲存庫並使用 sudo dnf install code-insiders 進行安裝。

Monaco Editor 的持續構建

此迭代中,我們為 Monaco Editor 添加了持續構建和測試管道。我們從 VS Code 儲存庫 main 分支構建 Monaco Editor 核心,並執行健全性測試,以便儘早發現潛在錯誤或意外的重大更改。

值得注意的修復

  • 51039:在其他選項卡中關閉左側編輯器時差異編輯器關閉
  • 83746:Web:無法拖放複合材料和檢視(活動欄、面板)
  • 80026:launch.json 中的灰色屬性令人困惑,請刪除它們
  • 83449:輔助功能:在輔助功能模式下 Ctrl+Right (CursorWordAccessibilityRight) 應該跳轉到下一個單詞的開頭,而不是末尾
  • 83753:停用 console.debug.wordWrap 會剝離換行符和空格
  • 85086:停用 search.usePCRE2 時,全域性搜尋不支援反向引用
  • 36219:Git:“暫存選定範圍”命令將編碼更改為 UTF-8

感謝

最後但同樣重要的是,衷心感謝!以下幫助使 VS Code 變得更好的各位:

對我們問題跟蹤的貢獻

vscode 的貢獻

language-server-protocol 的貢獻

vscode-css-languageservice 的貢獻

debug-adapter-protocol 的貢獻

vscode-chrome-debug-core 的貢獻

vscode-vsce 的貢獻

localization 的貢獻

有超過 800 名 雲 + AI 本地化 社群成員使用 Microsoft 本地化社群平臺 (MLCP),其中約有 100 名活躍貢獻者為 Visual Studio Code 做出貢獻。我們感謝您的貢獻,無論是提供新翻譯、對翻譯投票還是提出流程改進建議。

這是貢獻者的快照。有關專案詳細資訊,包括貢獻者姓名列表,請訪問專案網站:https://aka.ms/vscodeloc

  • 波斯尼亞語 (拉丁語, 波斯尼亞和黑塞哥維那): Sead Mulahasanović, Ismar Bašanović, Adnan Rizvan.
  • 丹麥語: Lasse Stilvang.
  • 荷蘭語: Lemuel Gomez, Gideon van de Laar.
  • 英語 (英國): Martin Littlecott, Alonso Calderon, Daniel Imms, Kamalsinh Solanki.
  • 芬蘭語: Tuula P.
  • 法語: Antoine Griffard, Thierry DEMAN-BARCELÒ, Edouard Choinière, Joel Monniot, Rodolphe NOEL, Alain BUFERNE, Xavier Laffargue, DJ Dakta.
  • 德語: Pascal Wiesendanger, Jakob von der Haar, jan-nitsche, Michael Richter.
  • 希臘語: Valantis Kamayiannis, Θοδωρής Τσιρπάνης.
  • 希伯來語:Ariel Bachar。
  • 印地語: Kiren Paul, Niraj Kumar, Preeti Madhwal, Jaadu Jinn, Mahtab Alam.
  • 匈牙利語: József Cserkó, Kiss Attila Csaba, Krisztián Papp.
  • 簡體中文: Yizhi Gu, Tingting Yi, Justin Liu, Charles Dong, Peng Zeng, Tony Xia, 斌 項, Yixing Zheng, paul cheung, 普魯文, Sheng Jiang, 鍾越, Joel Yang, 一斤瓜子, Zhiqiang Li, Yiting hu, Alexander ZHANG, 張銳, Libing Yang, ZHENGCHENG CHEN, 光宇 樸, 石巖 詹, 舜傑 楊, WJ Wang, Siam Chen.
  • 繁體中文: Winnie Lin, 船長, Alan Tsai, TingWen Su.
  • 印尼語: Eriawan Kusumawardhono, Arif Fahmi, Laurensius Dede Suhardiman, Christian Elbrianno.
  • 義大利語:Alessandro Alpi, Luigi Bruno。
  • 日語: Takayuki Fuwa, 貴康 內田, Kyohei Uchida, Koichi Makino, TENMYO Masakazu, Aya Tokura.
  • 韓語: Hongju.
  • 拉脫維亞語:Andris Vilde。
  • 挪威語: Frode Aarebrot, Anders Stensaas, Thomas Ødegård, Thomas Isaksen.
  • 波蘭語: Makabeus Orban, Wojciech Maj, Kacper Łakomski, Oskar Janczak, Szymon Seliga, Mateusz Redynk, Franx Bar.
  • 葡萄牙語 (巴西): Marcelo Fernandes, Albert Tanure, Arthur Lima, Nylsinho Santos, Pudda, Matheus Vitti Santos, Rodrigo Crespi, Roberto Fonseca, Felipe Nascimento.
  • 葡萄牙語 (葡萄牙): Francisco Osorio, Luís Chaves, Ricardo Sousa Vieira, João Fernandes.
  • 羅馬尼亞語: LaServici, Dan Ichim.
  • 俄語: Vadim Svitkin.
  • 塞爾維亞語 (西里爾語): Dusan Milojkovic.
  • 西班牙語: José María Aguilar, Gustavo Gabriel Gonzalez.
  • 泰米爾語: MUTHU VIJAY, Sankar Raj, Kadhireshan S, Pandidurai R, Madhu Chakravarthy, Madhu Maha.
  • 土耳其語: Mehmet Yönügül, mehmetcan Gün, Misir Jafarov, Fırat Eşki, Gökberk Nur, Safa Selim.
  • 烏克蘭語: Arthur Murauskas, Oleksandr Krasnokutskyi.
  • 越南語: Dat Nguyen, Vương, Dao Ngo, Van-Tien Hoang, ng-hai.
© . This site is unofficial and not affiliated with Microsoft.