2020 年 2 月(版本 1.43)
更新 1.43.1:此更新解決了這些問題。
更新 1.43.2:此更新解決了這些問題。
下載:Windows:x64 | Mac:Intel | Linux:deb rpm tarball snap
歡迎使用 Visual Studio Code 2020 年 2 月版。此版本中有許多更新,希望您會喜歡,其中一些主要亮點包括:
- 搜尋編輯器 - 在全尺寸編輯器中搜索並儲存全域性搜尋結果。
- 可拖動的分割角 - 透過拖動分割角輕鬆更改編輯器佈局。
- Linux 螢幕閱讀器支援 - VS Code 現在支援 Orca 螢幕閱讀器。
- 縮圖大小選項 - 用於適應或填充縮圖垂直佈局的新選項。
- 列選擇模式 - 列模式切換允許您快速選擇文字塊。
- 選擇時顯示空格 - 僅在選定文字中呈現空格字元。
- 轉換為模板字串 - 將連線轉換為 JavaScript/TypeScript 模板字串。
- JS/TS 呼叫層次結構檢視 - 檢視函式的所有呼叫者或被呼叫者,並深入檢視呼叫者的呼叫者。
- 遠端開發 - 支援 Windows 和 macOS SSH 主機,SSH 連線共享。
- 設定同步預覽 - 設定同步允許您跨計算機共享設定和鍵盤快捷鍵。
如果您想線上閱讀這些發行說明,請訪問 code.visualstudio.com 上的更新頁面。
內部人員預覽版: 想盡快試用新功能嗎?您可以下載每晚內部人員預覽版並立即試用最新更新。有關最新的 Visual Studio Code 新聞、更新和內容,請在 Twitter 上關注我們 @code!
工作臺
搜尋編輯器
經過幾次迭代在 Insiders 上穩定後,我們正在釋出搜尋編輯器,它允許您在全尺寸編輯器中檢視工作區搜尋結果,並提供語法高亮顯示和可選的周圍上下文行。這在一段時間內一直是一個高度要求的功能。
下面是搜尋詞 'SearchEditor' 的結果,帶有匹配項前後兩行文字作為上下文
主題:A Touch of Lilac,字型:Hasklig
在搜尋編輯器中,可以使用 轉到定義 操作導航到結果,例如 F12 在當前編輯器組中開啟源位置,或 ⌘K F12(Windows、Linux Ctrl+K F12) 在側面的編輯器中開啟位置。此外,雙擊可以選擇開啟源位置,可透過 search.searchEditor.doubleClickBehaviour 設定配置。

您可以使用 搜尋編輯器:開啟新搜尋編輯器 命令開啟新搜尋編輯器,或使用搜索檢視頂部的 開啟新搜尋編輯器 按鈕。或者,您可以使用新增到結果樹頂部的 在編輯器中開啟 連結,或 搜尋編輯器:在編輯器中開啟結果 命令,將現有結果從搜尋檢視複製到搜尋編輯器。
注意:您可以試用實驗性的 Search Editor: Apply Changes 擴充套件,以將您在搜尋編輯器中所做的編輯同步回原始檔

可拖動的分割角
您是否知道可以透過抓住和拖動兩個正交分割的交點來同時調整它們的大小?這已經適用於編輯器分割,現在它也適用於編輯器和檢視之間的邊緣

主題:GitHub Sharp,字型:Fira Code
經過公證的 macOS 版本
Visual Studio Code for macOS 現在已透過 Apple 公證,因此您應該不再看到以下對話方塊

閱讀調查問題和Apple 的開發者文件以獲取更多詳細資訊。
進度通知
從此版本開始,指示長時間執行操作的通知的行為略有不同
- 它們不再提供通用的 關閉 按鈕,因為它會給人一種操作是否被取消的錯誤印象。您仍然可以按 Esc 鍵隱藏通知。
- 當通知被隱藏而操作仍在進行時,通知會在狀態列中指示其操作進度。
後一個更改有助於您在關閉通知後瞭解操作仍在後臺執行(例如長時間執行的儲存操作)。
在選擇 取消 按鈕之前,下面的操作仍在執行

主題:Dracula Official,字型:Fira Code
無標題編輯器
一個新設定 workbench.editor.untitled.labelFormat 允許您控制無標題編輯器是否使用檔案內容作為標題。可能的值是 content 或 name。將 'workbench.editor.untitled.labelFormat': 'name' 配置為以前的行為,其中無標題編輯器將有一個短標題,例如 Untitled-1。
當將文字貼上到無標題編輯器時,VS Code 現在會自動嘗試從文字的第一行檢測語言模式。例如,如果第一行包含典型的 XML 標頭 <?xml version="1.0" encoding="UTF-8"?>,則貼上 XML 時會自動設定 XML 模式。
透過應用程式連結開啟工作區
VS Code 支援透過協議連結(例如 vscode://file/<file-path>)開啟檔案。在此里程碑中,我們擴充套件了支援,包括開啟資料夾或工作區。
資料夾或工作區的語法與檔案相同
vscode://file/<path>
vscode-insiders://file/<path>
歡迎檢視
歡迎檢視是工作臺的新增功能,它允許檢視在沒有有意義的內容可顯示時,為使用者建立內容或配置 VS Code 提供入門體驗。一些檢視已經採用了此基礎架構,例如檔案資源管理器,它將提供開啟資料夾或克隆 Git 儲存庫以幫助您入門。

主題:GitHub Sharp
原始碼管理歡迎檢視
得益於新的歡迎檢視基礎架構,原始碼管理檢視現在為某些情況提供了更好的體驗,否則它將顯示為空白。例如,當未檢測到安裝時,它現在可以引導使用者開啟資料夾或克隆儲存庫或安裝 Git。

主題:GitHub Sharp
編輯器
縮圖大小
有一個新設定 editor.minimap.size,它控制縮圖如何使用垂直空間
- 當設定為
proportional(預設值)時,每行在縮圖中獲得一定量的垂直空間,具體取決於editor.minimap.scale。例如,在高 DPI 監視器上,配置的比例為1(預設值)時,每行在縮圖中獲得 4 px。因此,對於 100 行的檔案,縮圖中渲染的行的高度為 400 px,對於 1000 行的檔案,高度為 4000 px。這意味著對於大檔案,噹噹前檔案滾動時,縮圖也會滾動。 - 當設定為
fit時,縮圖的高度被限制為永遠不大於編輯器高度。因此,如果檔案有很多行,它們將被取樣,並且只有子集會呈現在縮圖中,這樣就不需要縮圖滾動。 - 當設定為
fill時,縮圖的高度始終是編輯器高度。對於大檔案,這也是透過取樣行實現的,但對於小檔案,這是透過為每行保留更多垂直空間(拉伸行)實現的。
這裡大小從 proportional 更改為 fit,然後在較小的檔案中從 fit 更改為 fill

縮圖背景和滑塊顏色
現在有用於自定義縮圖及其滑塊的新顏色。其中一種新顏色是 minimap.background,當顏色定義為透明(降低 #RRGGBBAA Alpha 通道)時,縮圖將透明渲染

{
"workbench.colorCustomizations": {
"minimap.background": "#00000055"
}
}
列選擇模式
有一個新的全域性切換,可透過 選擇 > 列選擇模式 選單項訪問。一旦進入此模式,如狀態列所示,滑鼠手勢和箭頭鍵將建立列選擇

您也可以從狀態列停用列選擇模式。
選擇時渲染空格
editor.renderWhitespace 設定的預設值已從 none 更改為 selection。預設情況下,空格字元現在將呈現在高亮顯示的文字上。
這裡在選定區域中顯示了製表符和空格空格字元

Peek 中的定義連結
現在可以更好地控制 轉到定義 滑鼠手勢的行為。預設情況下,透過滑鼠的 轉到定義 會開啟一個單獨的編輯器,但使用新設定 editor.definitionLinkOpensInPeek 為 true,手勢將在 Peek 檢視中開啟。

在摺疊行的任意位置展開
有一個新設定 Editor: Unfold On Click After End of Line (editor.unfoldOnClickAfterEndOfLine),它控制當您單擊摺疊行右側的空白區域(在 ... 之後)時會發生什麼。當設定為 true 時,您可以單擊摺疊行上文字之後的任意位置,而無需擔心精確選擇省略號 (...)。預設情況下,此選項處於關閉狀態。

跨多個檔案撤消文字編輯
當撤消影響多個檔案的重新命名或程式碼操作時,VS Code 現在將允許您撤消所有受影響檔案中的更改。
撤消跨檔案編輯時將顯示提示

注意:檔案操作,例如重新命名檔案,尚不支援。例如,重新命名 Java 中的類名(其中檔名也同時重新命名)尚不支援跨檔案撤消。
具有不同顏色的多個標尺
現有的 editor.rulers 設定已擴充套件為允許定義具有自定義顏色的標尺。在下面的螢幕截圖中,第 80 列有一個洋紅色標尺,第 90 列有一個紅色標尺

{
"editor.rulers": [
{ "column": 80, "color": "#ff00ff" },
{ "column": 90, "color": "#ff0000" }
]
}
編輯器頂部和底部填充
現在可以使用 editor.padding.top 和 editor.padding.bottom 在編輯器的頂部或底部保留空白區域(畫素數)。
這是頂部填充 50 畫素的編輯器

{
"editor.padding.top": 50
}
滾動主要軸
當嘗試使用現代觸控板垂直滾動時,通常也會發生檔案水平滾動的情況。現在有一個新設定 editor.scrollPredominantAxis(預設設定為 true),它會阻止“對角線”滾動。這會強制滾動手勢要麼是垂直的,要麼是水平的(基於最高的絕對滾動增量),但絕不是對角線的。
Linux 上的 Shift+Insert
在 1.42 中,修改了 Shift+Insert 以從選擇剪貼簿貼上。我們收到了很多關於這會破壞現有肌肉記憶的反饋,因此我們決定回滾,讓 Shift+Insert 像以前一樣從常規剪貼簿貼上。
輔助功能
Linux 螢幕閱讀器支援
在社群的幫助下,我們一直致力於使 VS Code 在 Linux 上可與 Orca 螢幕閱讀器配合使用。Orca 和 Chromium 仍在積極開發螢幕閱讀器支援,因此要使其完全工作,還需要做一些事情
- 確保使用 Orca out of master 的最新版本。說明可以在問題 #91063中找到。
- 確保在 VS Code 中設定
"editor.accessibilitySupport": "on"。您可以使用設定執行此操作,或者執行 顯示輔助功能幫助 命令並按 Ctrl+E 以開啟螢幕閱讀器最佳化模式。
啟用該設定後,VS Code 應該可以與 Orca 螢幕閱讀器配合使用。
語言
TypeScript 3.8.3
VS Code 現在捆綁了 TypeScript 3.8.3。此主要更新帶來了對新語言功能的支援,包括ECMAScript 私有欄位、頂級 await 表示式和export * as ns 語法,以及許多工具功能和改進。此更新還修復了許多重要錯誤。
您可以在 TypeScript 部落格上閱讀有關 TypeScript 3.8 的更多資訊。
轉換為模板字串重構
您可以使用新的 JavaScript 和 TypeScript 轉換為模板字串 重構來快速將字串連線轉換為模板字串

JavaScript 和 TypeScript 的呼叫層次結構支援
TypeScript 3.8 帶來了 JavaScript 和 TypeScript 中的呼叫層次結構支援。

支援 http(s) @link JSDoc 內聯標籤
IntelliSense 現在為 http 和 https 連結渲染 JS Doc @link 內聯標籤。在下面的示例影像中,請注意 lightbulb menu 的 @link 如何在懸停中呈現

@link 到 URL 適用於 JavaScript 和 TypeScript,並以可單擊連結的形式呈現在懸停、建議詳細資訊和簽名幫助中。
TypeScript 語義高亮顯示
TypeScript 和 JavaScript 預設開啟語義高亮顯示。語義高亮顯示由 TypeScript 語言伺服器提供,位於基於 TextMate 語法的語法高亮顯示之上。預設語法 (TextMate) 高亮顯示器將許多令牌歸類為 variables,這些令牌現在解析為名稱空間、類、引數等。
語義高亮顯示由以下設定控制
"editor.semanticHighlighting.enabled": true
JSON 架構
將檔名與架構關聯時,您現在也可以使用排除模式。排除模式以 '!' 開頭。要匹配,至少一個模式需要匹配,並且最後一個匹配模式不得為排除模式。
"json.schemas": [
{
"fileMatch": [
"/receipts/*.json",
"!/receipts/*.excluded.json"
],
"url": "./receipts.schema.json"
}
]
除錯
UI 中“執行”更突出
使用者研究表明,新使用者很難找到如何在 VS Code 中執行程式。一個原因是現有的“除錯”功能與“執行”程式無關。因此,我們正在使“執行”在 UI 中更加突出。
- 主選單 除錯 已成為 執行 選單。
- 執行和除錯 檢視已成為 執行 檢視,相應的活動欄圖示現在顯示一個大的“播放”圖示,帶有一個小的“bug”裝飾。

除錯控制檯分組
VS Code 除錯控制檯現在支援 輸出分組。除錯擴充套件可以指示何時應將除錯控制檯輸出分組到共同父項下。目前,只有 Mock Debug 擴充套件實現了輸出分組,但很快其他除錯擴充套件也會跟進 - 最值得注意的是 JavaScript 偵錯程式。

停用除錯控制檯歷史記錄建議
您現在可以透過新的 debug.console.historySuggestions 設定關閉除錯控制檯中的歷史記錄建議。預設情況下,歷史記錄建議處於開啟狀態。
整合終端
Unicode 11 支援
終端中字元的寬度現在預設為 Unicode 11 寬度。這對大多數人來說意味著表情符號將正確顯示為寬字元。

更好的 Alt+Click 導航提示支援
終端具有一項功能,允許您 Alt+Click 單元格,游標將導航到該單元格。從歷史上看,當在 shell 提示符下時,這僅在單行上起作用,即使它被包裝。這已得到改進,可以在完整的包裝行上工作。
主題:Sapphire
請注意,這可能在 Windows 上尚不能正常工作,但最近對 ConPTY 的更改應該會在將來改進這一點。
任務
任務快速選擇更新
執行 執行任務 命令時顯示的任務快速選擇已更新,以顯示哪些任務提供程式仍在執行。如果您不需要來自該提供程式的任務,停止檢測 按鈕將立即向您顯示到目前為止已檢測到的任務,因此您無需等待任何緩慢的任務提供程式。
主題:One Dark Pro,字型:Fira Code
任務例項限制
任務 "runOptions" 現在包含一個 "instanceLimit",它指定允許的任務例項數。預設的 "instanceLimit" 是 1。
promptString 密碼輸入
"promptString" 使用者輸入型別可以具有 "password": true,這將導致下拉輸入框像密碼一樣模糊鍵入的內容。
預覽功能
預覽功能尚未準備好釋出,但已足夠實用。我們歡迎您在這些功能開發期間提供早期反饋。
設定同步
在過去的幾個月中,我們一直在努力支援跨計算機同步 VS Code 設定、擴充套件和鍵盤快捷鍵(熱門功能請求 #2743)。在這個里程碑中,我們很高興地宣佈此功能已準備好在我們的下一個 1.44.0 Insider 版本中進行預覽。您現在可以在所有計算機上的所有 VS Code 安裝中同步您的首選項。您還可以在新計算機上以最小的努力使用您的個人首選項引導 VS Code。
以下影片演示了在 Pnew 計算機上本地應用擴充套件和設定

目前,設定、鍵盤快捷鍵、擴充套件和顯示語言已同步,但我們計劃新增更多內容。您可以檢視我們提議的設定同步功能列表。
預設情況下,機器設定(具有 machine 或 machine-overridable 範圍)不會同步。您也可以從“設定”編輯器或使用設定 sync.ignoredSettings 在此列表中新增或刪除設定。
主題:GitHub Sharp
預設情況下,鍵盤快捷鍵按平臺同步。如果您的鍵盤快捷鍵與平臺無關,您可以透過停用設定 sync.keybindingsPerPlatform 來跨平臺同步它們。
所有內建和已安裝的擴充套件都與它們的全域性啟用狀態一起同步。您可以跳過同步擴充套件,可以從“擴充套件”檢視或使用設定 sync.ignoredExtensions。
主題:GitHub Sharp
設定同步支援在同步時檢測設定和鍵盤快捷鍵中的衝突。衝突使用差異編輯器顯示,傳入(遠端)更改在左側,本地更改在右側。您可以透過在右側編輯器中編輯來解決衝突,並使用編輯器中提供的操作合併更改。
這裡使用 接受遠端 操作選擇了遠端 colorTheme 設定值
主題:GitHub Sharp, GitHub Sharp Dark
設定同步活動可以在 日誌(同步) 輸出檢視中監控。每當同步期間更改時,所有本地首選項都會在磁碟上備份最近 30 天。您可以使用命令 同步:開啟本地備份資料夾 轉到備份位置並檢索您的舊首選項。
主題:GitHub Sharp
在任何時候,您都可以關閉同步,無論是在當前的 VS Code 例項上還是在所有 VS Code 安裝上。當選擇停用所有同步時,您的資料將從雲中刪除。

注意: 設定同步使用 Microsoft 帳戶來儲存您的 VS Code 首選項進行同步,因此您需要一個帳戶才能使用此功能。有關更多資訊,請參閱設定同步文件。
時間線檢視
在此迭代中,我們繼續在新的時間線檢視上取得進展。它現在預設在 Insiders 版本中啟用,並且可以透過以下設定在 Stable 上啟用
"timeline.showView": true
下面是時間線檢視顯示檔案的 Git 提交歷史記錄

我們現在添加了分頁支援(透過上面顯示的 載入更多 操作),並在右側添加了相對時間戳。擴充套件還可以向時間線檢視以及單個時間線專案貢獻選單項。在上面的螢幕截圖中,內建 Git 擴充套件貢獻了命令 複製提交 ID 和 複製提交訊息。
新的 JavaScript 偵錯程式
本月我們繼續在新的 JavaScript 偵錯程式上取得進展。它預設安裝在 Insiders 上,並且可以在 VS Code Stable 中從 Marketplace 安裝。您可以透過啟用 debug.javascript.usePreview 設定來將其與現有啟動配置一起使用。這是我們本月新增的一些新功能
美化列印

主題:Earthsong,字型:Fira Code
偵錯程式現在可以美化列印檔案,這在處理縮小來源時特別有用。當您單步執行或開啟看起來縮小的檔案時,它會顯示提示,您也可以透過 除錯:美化列印以進行除錯 命令手動觸發美化列印。
您可以透過選擇 從不 或將設定 debug.javascript.suggestPrettyPrinting 更改為 false 來關閉建議提示。
支援 Microsoft Edge 和 WebView2
我們現在支援啟動新的 Microsoft Edge 瀏覽器,只需將您的除錯型別從 chrome 或 pwa-chrome 更改為 pwa-msedge 即可試用。它支援與 chrome 相同的所有配置設定。
隨之而來的是對桌面 Windows 應用程式中 WebView2 控制元件的支援。檢視我們的webview 演示以瞭解如何設定它。

遠端除錯
您現在可以在新的偵錯程式中從遠端工作區(例如 GitHub Codespaces 或 Remote SSH)除錯瀏覽器原始碼。要進行設定,請轉發您的 Web 伺服器(或使用簡單的靜態 Web 伺服器),然後建立指向轉發埠的 chrome 或 pwa-msedge 啟動配置。
例如
{
"version": "0.2.0",
"configurations": [
{
"type": "pwa-msedge",
"request": "launch",
"name": "Debug my App",
"url": "https://:5000" // <- debug an app forwarded on port 5000
}
]
}
當您啟動除錯會話時,瀏覽器將在您的機器上開啟,您可以像通常從 VS Code 一樣進行除錯。
更多檢視可移動
上一個版本中,VS Code 只讓您嚐到了將檢視重新定位到面板的滋味。在此版本中,此體驗已擴充套件到更多檢視。您現在可以移動檢視,例如除錯/執行檢視或新的時間線檢視。您還可以將檢視移動到側邊欄中的其他檢視中。例如,您可能希望將 開啟的編輯器 檢視移動到原始碼管理檢視中。您可以透過拖動檢視並將其放置在活動欄或面板中的所需位置來完成所有這些操作。
下面的動畫重點介紹了將 開啟的編輯器 檢視移動到另一個檢視,然後移動到面板

主題:Horizon Bright,字型:Cascadia Code
我們還引入了一個新命令,使使用鍵盤移動檢視更容易:檢視:移動焦點檢視 (workbench.action.moveFocusedView)。
這是一個預覽功能,因此如果您陷入無法修復的狀態,有一個命令可以將所有檢視重置回其原始位置:檢視:重置檢視位置 (workbench.action.resetViewLocations)。
對擴充套件的貢獻
遠端開發
遠端開發擴充套件的工作仍在繼續,它允許您使用容器、遠端機器或 適用於 Linux 的 Windows 子系統 (WSL) 作為功能齊全的開發環境。
1.43 中的功能亮點包括
- 透過應用程式連結開啟遠端工作區。
- 遠端 - SSH:支援 Windows 和 macOS SSH 主機。
- 遠端 - SSH:預設開啟連線共享。
- WSL:檢視最近的在 WSL 2 中使用 Docker 部落格文章。
您可以在遠端開發發行說明中瞭解有關新擴充套件功能和錯誤修復的資訊。
Vetur
Vue.js 的 Vetur 擴充套件現在包含更好的模板插值自動完成。您可以在 0.24.0 版本中找到更改日誌。
擴充套件創作
偵錯程式擴充套件 API
除錯歡迎檢視
如歡迎檢視內容 API 部分所述,debug 檢視現在對歡迎檢視內容貢獻開放。這些新增可用於引導初次使用的使用者使用簡化執行或除錯程式的特定功能。
為了防止檢視因過多的歡迎檢視內容貢獻而混亂,我們建議僅對當前活動語言啟用單個貢獻。為了方便這一點,我們引入了一個新的上下文鍵 debugStartLanguage,該鍵設定為上次使用的偵錯程式的活動編輯器語言。
例如,如果您的偵錯程式針對 Python,您將僅在 debugStartLanguage == "python" 時貢獻歡迎檢視內容。如果您的偵錯程式針對多種語言,您可以使用 OR 運算子 (||) 組合多個條件。
新的除錯懸停 API
如今,VS Code 的除錯懸停使用基於正則表示式的啟發式方法來查詢滑鼠下的表示式,VS Code 偵錯程式會對其進行求值,然後將結果顯示在懸停中。由於正則表示式不可配置,並非所有語言都能正確處理(或無法儘可能充分處理)。問題 #84044、#89603 和 #89332 描述了典型問題。
在此里程碑中,我們引入了新的擴充套件 API 來控制除錯懸停的行為。
可以為語言註冊一個 EvaluatableExpressionProvider,以提供滑鼠下的表示式,VS Code 偵錯程式將針對活動的除錯會話對其進行求值。
這是來自 Mock debug 示例的一個簡單示例,它顯示了基於 getWordRangeAtPosition API 的(簡單)實現
vscode.languages.registerEvaluatableExpressionProvider('markdown', {
provideEvaluatableExpression(
document: vscode.TextDocument,
position: vscode.Position
): vscode.ProviderResult<vscode.EvaluatableExpression> {
const wordRange = document.getWordRangeAtPosition(position);
if (wordRange) {
return new vscode.EvaluatableExpression(wordRange);
}
return undefined; // nothing evaluatable found under mouse
}
});
不再轉義空格
VS Code 偵錯程式 UI 不再轉義或引用從除錯擴充套件或除錯介面卡接收的任何空格。例如,在 DAP 變數中或作為 DAP 輸出事件接收的所有字串都按原樣顯示在 UI 中,無需修改。
這意味著現在由除錯擴充套件或除錯介面卡決定在將資料傳送到 VS Code 之前是否需要轉義空格。更多詳細資訊可以在問題 #73845中找到。
CodeAction.disabled
使用 CodeAction.disabled 屬性,擴充套件現在可以告訴 VS Code 為什麼給定的 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 = { reason: '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 錯誤訊息

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

請注意,停用的操作不會顯示在頂層燈泡選單中。
Terminal.exitStatus
擴充套件現在可以確定終端是否已退出,如果退出,使用了哪個退出程式碼(如果有)。
window.onDidCloseTerminal(t => {
if (t.exitStatus && t.exitStatus.code) {
vscode.window.showInformationMessage(`Exit code: ${t.exitStatus.code}`);
}
});
向診斷錯誤新增連結
我們已將提議的診斷連結 API 提升到 Stable
class Diagnostic {
...
/**
* A code or identifier for this diagnostic.
* Should be used for later processing, e.g. when providing [code actions](#_CodeActionContext).
*/
code?: string | number | {
/**
* A code or identifier for this diagnostic.
* Should be used for later processing, e.g. when providing [code actions](#_CodeActionContext).
*/
value: string | number;
/**
* A target URI to open with more information about the diagnostic error.
*/
target: Uri;
};
}
工作區編輯元資料
我們已經最終確定了 WorkspaceEditEntryMetadata API。它允許擴充套件作者對工作區編輯的更改進行分類,特別是如果更改在應用之前需要審查。
除錯介面卡協議
支援輸出事件中的分組
已向 output 事件添加了可選的 group 屬性,以便透過對相關訊息進行分組來保持輸出日誌的組織。group 的可能值是 start 和 startCollapsed,用於以展開或摺疊方式開啟組,以及 end 用於關閉組。
注意: 從此版本開始,VS Code 支援此 DAP 增強功能。
允許透過完成項放置游標
已向完成項添加了可選的 selectionStart 和 selectionLength 屬性。使用這些屬性,可以在插入完成文字後控制客戶端的當前選擇(或插入符號位置)。
注意: VS Code 尚不支援此 DAP 增強功能。它計劃在下一個版本中實現。
提案:進度事件
我們在向除錯介面卡協議新增 進度事件 的提案方面取得了一些進展。如果您有興趣,可以在此DAP 功能請求上貢獻討論。
語言伺服器協議
Language Server Protocol 版本 3.16 的工作已開始。
新版本中包含對以下內容的提議支援
- 完成項的插入/替換編輯。
- 診斷上的結構程式碼(例如連結支援)。
- 符號資訊和文件符號的標籤支援。
建議的擴充套件 API
每個里程碑都會帶來新的提議 API,擴充套件作者可以進行嘗試。一如既往,我們渴望您的反饋。以下是試用提議 API 的方法:
- 您必須使用 Insiders 版本,因為提議的 API 經常更改。
- 您的擴充套件的
package.json檔案中必須包含以下行:"enableProposedApi": true。 - 將最新版本的 vscode.proposed.d.ts 檔案複製到您專案的源位置。
請注意,您不能釋出使用提議 API 的擴充套件。下一個版本中可能會有重大更改,我們絕不希望破壞現有擴充套件。
自定義編輯器 API
在此迭代中,我們繼續致力於自定義編輯器 API 提案。值得注意的更改包括
- 將 API 方法重新命名為更短且更一致。
- 透過引入
CustomTextEditorProvider來簡化文字檔案的自定義編輯器建立。此自定義編輯器使用 VS Code 的常規TextDocument作為其資料模型,因此您無需自己實現save、backup和其他操作。這也使得資源自定義編輯器與同一資源的文字編輯器之間的即時同步變得容易。 - 引入
CustomDocument來儲存二進位制CustomEditor使用的模型。每個資源有一個CustomDocument,但使用者可以在該資源上開啟多個自定義編輯器。
請繼續測試並分享有關我們自定義編輯器 API 提案的反饋。儘管 API 的具體細節可能仍會更改,但我們相信目前的提案反映了我們希望儘快最終確定的內容。
CodeActionProviderMetadata.documentation
我們修訂了我們之前的提案,內容是關於擴充套件如何為其程式碼操作貢獻文件的標準化。在更新後的提案中,文件現在使用 CodeActionProviderMetadata 型別上的 documentation 屬性提供。
例如,這是我們內建的 JavaScript 和 TypeScript 擴充套件如何貢獻文件
class TypeScriptRefactorProvider implements vscode.CodeActionProvider {
public static readonly metadata: vscode.CodeActionProviderMetadata = {
providedCodeActionKinds: [ vscode.CodeActionKind.Refactor ],
documentation: [
{
kind: vscode.CodeActionKind.Refactor,
// This command opens a webpage when executed
command: {
command: LearnMoreAboutRefactoringsCommand.id,
title: localize('refactor.documentation.title', "Learn more about JS/TS refactorings")
}
}
]
};
...
}
當用戶請求重構時,文件在主程式碼操作列表之後呈現

問題 #86788 跟蹤了提案的狀態。
歡迎檢視內容 API
某些檢視現在支援擴充套件貢獻的歡迎內容。有關更多資訊,請參閱原始問題。
採用此 API 的檢視是
explorer- 檔案資源管理器scm- 原始碼管理debug- 執行/除錯
例如,這是 Git 擴充套件對 explorer 歡迎檢視貢獻的克隆儲存庫歡迎檢視內容

主題:GitHub Sharp
OpenDialogOptions 和 SaveDialogOptions 標題
OpenDialogOptions 和 SaveDialogOptions 都具有提議的 title 屬性。title 是否顯示取決於平臺,但如果平臺確實顯示 title,它將顯示在儲存或開啟對話方塊的上方。例如,內建命令 工作區:將工作區另存為... 將標題設定為 儲存工作區。
工程
Electron 7.0 更新
在此里程碑中,我們完成了將 Electron 7 捆綁到 VS Code 中的探索。這是一個主要的 Electron 版本,附帶 Chromium 78.0.3904.130 和 Node.js 12.8.1。
對於 HDR 顯示器
我們正在問題 #88491中跟蹤 Windows 使用者使用高動態範圍 (HDR) 顯示器的問題,其中 VS Code 看起來暗淡且無法使用。這是所有基於 Chromium 78.0.3904.130 的應用程式都存在的問題,並且在較新版本的 Chromium 81 中已修復此問題。一旦我們升級到 Electron 9,VS Code 將獲得此修復,並且由於技術原因,無法將此修復程式向後移植到 Chromium 78。
同時,我們為此問題提供了一個臨時解決方法
- 開啟命令面板 (⇧⌘P (Windows, Linux Ctrl+Shift+P))。
- 執行**首選項:配置執行時引數**命令。
- 此命令將開啟一個
argv.json檔案來配置執行時引數。那裡可能已經有一些預設引數。 - 將
"disable-color-correct-rendering": true編輯為"disable-color-correct-rendering": false。 - 重啟 VS Code。
注意: 除非您遇到問題,否則不要編輯此設定!
我們添加了此預設執行時引數,以便我們可以覆蓋 Chromium 的預設顏色校正為 sRGB,轉而在 macOS 上使用顯示器顏色空間。這樣做可以避免諸如問題 #84154之類的問題,但對 HDR 顯示器不起作用。
"strict": true
當我們第一次釋出 VS Code 時,TypeScript 仍然是一種新的且快速發展的語言,缺少一些您今天可能認為理所當然的有用型別安全檢查,例如嚴格的空值檢查。在過去的幾年中,TypeScript 團隊引入了許多使 TypeScript 編譯器更“嚴格”的選項。這些嚴格選項可以捕獲許多常見的程式設計錯誤並消除整個錯誤類。嚴格模式的好處有充分的記錄,我們一直希望為 VS Code 程式碼庫啟用嚴格模式。然而,鑑於這將需要修復構成核心 VS Code 程式碼庫的約五十萬行原始碼中的數千個錯誤,這樣做似乎是一項幾乎不可能完成的任務。
儘管如此,嚴格模式的價值非常大,我們決定值得為之努力,即使需要一些時間才能實現。因此,在過去的兩年中,我們一直在逐步更新我們的程式碼庫以符合嚴格模式。我們直接在開發分支中逐步完成了所有這些工作,因此每個與嚴格模式相關的修復都使我們的程式碼庫對每個人來說都更安全。啟用嚴格的空值檢查可能是此過程中最複雜的部分,我們在部落格文章中記錄了我們是如何實現這一目標的。
在此迭代中,我們最終完成了啟用最後一個嚴格模式選項:strictFunctionTypes。完成此操作後,一個相當平淡的提交為我們的整個程式碼庫啟用了嚴格模式!
啟用嚴格模式是一個漫長的旅程,核心 VS Code 團隊中的每個人和許多社群成員都為此做出了貢獻。然而,透過逐步完成這項工作,我們能夠從第一天開始就從所有這些辛勤工作中受益。展望未來,嚴格模式應該鼓勵最佳編碼實踐,使重構更安全,並最終讓我們更快地釋出且錯誤更少!
改進的 CI 構建效能
VS Code 使用 Azure Pipelines 進行持續整合構建,我們最近顯著提高了構建效能。您可以在改進 CI 構建時間部落格文章中瞭解更多資訊。
針對瀏覽器執行測試
在此里程碑中,我們利用 Playwright 庫使我們的所有測試(單元、整合、冒煙)都可以在瀏覽器中執行,這為我們在 Chrome、Firefox 和 Safari 等瀏覽器上提供了更高的覆蓋率。您可以參考我們的 VS Code 測試 README,瞭解如何執行這些測試。
值得注意的修復
- 61491: SCM: Viewlet 應改進“無儲存庫”訊息
- 74782: 調查:macOS 公證
- 82828: explorer 中的 autoReveal 高亮顯示檔名所在位置,而不是總是將其移動到中間
- 8641: macOS: 允許滑鼠按鈕 4 和 5 導航歷史記錄
- 87767: VSCode 重啟除錯不再工作
- 88038: 不要使用自動執行的偵錯程式命令汙染 shell 歷史記錄
- 89230: 焦點在編輯器時讀取“組”
- 89699: 返回/前進:保留選擇
- 89989: Web: 允許在新視窗中開啟檔案
- 90075: Explorer: 支援懸空符號連結
- 90240: Zen Mode 切換關閉後行號不可見
- 90876: 列表項應具有角色 'listitem'
- 91166: 當問題面板開啟時,警報過於冗長。
- 91238: 和絃在整合終端中不起作用
感謝
最後但同樣重要的是,衷心感謝!以下幫助使 VS Code 變得更好的各位:
對我們問題跟蹤的貢獻
- John Murray (@gjsjohnmurray)
- Andrii Dieiev (@IllusionMH)
- Alexander (@usernamehw)
- ArturoDent (@ArturoDent)
- Gama11 (@Gama11)
對 vscode 的貢獻
- @alpalla: Fixes #32264 - Allow N instances of the same task PR #89872
- Baibhav Vatsa (@BaibhaVatsa): Removes redundant flags from tsconfig.base.json PR #91050
- Bailey Herbert (@baileyherbert)
- @bepvte: Rename "Contributions" to "Feature Contributions" PR #89842
- @bolinfest
- Brett Cannon (@brettcannon): Fix plurality in command docs PR #89959
- Dor Mesica (@dormesica): Fix run active file in terminal not wrapping with quotes PR #90847
- Evan Krause (@evangrayk): Fix undo/redo broken in non-editor webviews PR #89961
- Ian MacFarlane (@eyeino): Clarify language when creating new git branch PR #90160
- John Murray (@gjsjohnmurray)
- lipgloss (@gloss-water): Theming: add workbench configuration option for minimap opacity PR #58324
- Michael Gubik (@gubikmic): Scroll predominant axis only (prevents scroll drift) PR #70047
- Gustavo Cassel (@GustavoASC)
- Developed setting which controls whether the definition link opens element in the peek widget. PR #89884
- Fixed bug where one could open 'peek' inside 'peek' on definition link PR #90109
- Improved documentation of 'title' parameter on VSCode Proposed API PR #91633
- Exposed Open/Save dialog title on public VSCode Proposed API PR #90493
- @Helloimbob: Autodetect csh script as shellscript PR #90960
- Jean Pierre (@jeanp413)
- Properly reset editor.lineNumbers after disabling zen mode PR #90822
- Enable to open diagnostic link from problems panel with keyboard PR #91035
- Address feedback for reset editor.lineNumbers after disabling zen mode PR #90910
- Fixes explorer new folder inputbox duplicates parent folder children when toggling collapse state PR #90419
- Jonas Littorin (@jlittorin): Added a password attribute to input variable of type "promptString". PR #90482
- John Blackbourn (@johnbillion): Treat .envrc files as Shell scripts PR #90825
- Josh Goldberg (@JoshuaKGoldberg): Docs typo: missing ` in insertSpaces PR #90374
- @LadyCailin: Move indent right one when the highlighted line is a scope start/end PR #77762
- Maik Riechert (@letmaik): Docs: fix package.json field name "extensionDependency" PR #90103
- Gordey (@lgordey): Settings UI: Add separator for sync setting PR #91461
- Alex SK (@lxsk): fix #21849: Minimap: Show Full Document PR #74425
- Dan (@mallardduck): Add support for multiple rulers with different colors PR #88453
- Rasmus (@neonsea): Avoid polluting shell history with debugger commands PR #88041
- @nrayburn-tech
- Przemek Adamczewski (@padamczewski): fix: multi cursor copy line n times (#_40646) PR #52645
- Peter Shinners (@PeterShinners): Grammar fix for
task.autoDetectdescription PR #90117 - PM Extra (@PMExtra): Fix a small bug of JsonValidation PR #91237
- Ron Buckton (@rbuckton): Fix off-by-one typo to improve display of files in TS call hierarchy PR #89822
- Robert Rossmann (@robertrossmann): Style diff editor's scrollable viewport just like any other scrollbar PR #89660
- Oğuzhan Eroğlu (@rohanrhu): Added remembering end key state behaviour PR #88664
- Michael Scovetta (@scovetta): Fix #90555 (resetLocal() doesn't do anything) PR #90556
- Sergio Schvezov (@sergiusens): Snap fixes PR #91182
- Matthew Spencer (@sirmspencer): Add new action to close side bar PR #90404
- Konstantin Solomatov (@solomatov): Fix link handing in extension pseudoterminals PR #88458
- 태재영 (@TroyTae): Supporting triple dots for front-matter end PR #90122
- Victor Gomes (@vhpgomes): smartSelect fix PR #90736
- Waldemar Kornewald (@wkornewald): Reveal closer to top (center body, not signature) PR #80727
- @zhengjiaqi: editor action run support params PR #87677
- Jiayue. Zhang (@zjysdhr): Fix #88294 Add commitData in commit interface PR #89005
對 vscode-eslint 的貢獻
- Yosuke Ota (@ota-meshi): Add to support new eslint suggestions API PR #814
- Krasimir Nedelchev (@kaykayehnn): Fix typo PR #900
對 language-server-protocol 的貢獻
- Lars Hvam (@larshp) specification 3.15, fix typo PR #912
- Maxim Reznik (@reznikmm):
- Fix specification-3-15.md markdown formatting PR #913
- Drop extra foldingRangeProvider definition in 3.15 PR #914
- Drop extra ExecuteCommandOptions def in 3.15 PR #915
- Replace ts with typescript in 3.15 markdown PR #916
- Drop duplicated TextDocumentRegistrationOptions PR #917
- Add selection range related capabilities to 3.15 PR #918
- Add workspaceFolders/configuration/window to 3.15 PR #930
- Christian Tietze (@DivineDominion) fix typo PR #921
- Kun Ren (@renkun-ken) Fix typo PR #922
對 vscode-js-debug 的貢獻
- SantoJambit (@SantoJambit): Only get root level scripts property for codelens PR #351
對 vscode-languageserver-node 的貢獻
- @Razzeee Fix typo PR #574
- Remy Suen (@rcjsuen): Fix typo in name of semantic tokens file PR #583
對 vscode-css-languageservice 的貢獻
- Jorge del Casar (@jorgecasar): Add support for parsing @apply rules in SCSS PR #194
- Denis Malinochkin (@mrmlnc): Ability to use suggest participants for SCSS/Less mixins PR #201
- Will Bender (@Ragnoroct): Fix scss autocompletion after a ruleset PR #188
對 vscode-vsce 的貢獻
- Robert Holt (@rjmholt): Add --noGitHubIssueLinking to stop issue link expansion in package step PR #424
對 localization 的貢獻
有超過 800 名 雲 + AI 本地化 社群成員使用 Microsoft 本地化社群平臺 (MLCP),其中約 170 名活躍貢獻者為 Visual Studio Code 做出貢獻。我們感謝您的貢獻,無論是提供新的翻譯、對翻譯進行投票還是提出流程改進建議。
這是貢獻者的快照。有關專案詳細資訊,包括貢獻者姓名列表,請訪問專案網站:https://aka.ms/vscodeloc。
- 中文(簡體,中國) 顧逸之, 易婷婷, Charles Dong, Justin Liu, 斌 項, ick, paul cheung, CHEN Shihuan, 普魯文, 張銳, Zhiqiang Li, Joel Yang.
- 中文(繁體,臺灣) Yi-Jyun Pan, 高民 林.
- 丹麥語(丹麥) Lasse Stilvang.
- 荷蘭語(荷蘭) Koen Williame.
- 英語(英國) Martin Littlecott, Henry Dearn, carlos baltazar.
- 芬蘭語(芬蘭) Feetu Nyrhinen.
- 法語(法國) Thierry DEMAN-BARCELÒ, Antoine Griffard, Rodolphe NOEL, Younes ZOBAIRI.
- 德語(德國) Philip Kneifeld, Raphael Höser, nick rauch.
- 印地語(印度) KRISHNA TANDON, Alish Vagadiya.
- 匈牙利語(匈牙利) Levente Borbély.
- 印度尼西亞語(印度尼西亞) Eriawan Kusumawardhono, Riwut Libinuko.
- 義大利語(義大利) Luigi Bruno.
- 日語(日本) TENMYO Masakazu, Koichi Makino.
- 韓語(韓國) 강 성원, Hongju, 관우 정.
- 拉脫維亞語(拉脫維亞) Andris Vilde, Atis Straujums.
- 波蘭語(波蘭) Makabeus Orban, Mariusz Wachowski.
- 葡萄牙語(巴西) Marcondes Alexandre, Arthur Lima, Marcelo Fernandes, Roberto Fonseca, Yuri Dantas, Luiz Gustavo Nunes, Thiago Takehana.
- 葡萄牙語(葡萄牙) Diogo Barros.
- 羅馬尼亞語(羅馬尼亞) LaServici.
- 俄語(俄羅斯) Andrey Veselov, Vadim Svitkin, Дмитрий Кирьянов.
- 西班牙語(西班牙,國際排序) Ricardo Estrada Rdez, Alvaro Enrique Ruano.
- 泰米爾語(印度) Vijay Rajasekar, Selvakumarasamy G, Pandidurai R.
- 土耳其語(土耳其) Mehmet Yönügül.
- 越南語(越南) Hiếu Nguyễn, Van-Tien Hoang, Vương.