2018 年 7 月 (版本 1.26)
更新 1.26.1:此更新解決了這些問題。
下載:Windows:x64 | Mac:Intel | Linux 64 位:deb rpm tarball | 32 位:deb rpm tarball
歡迎使用 Visual Studio Code 2018 年 7 月版。此版本中有許多您可能會喜歡的重要更新,其中包括一些主要亮點:
- 麵包屑導航 - 麵包屑導航讓您可以在工作區中跳轉到符號和檔案。
- 問題面板快速修復 - 在檢視警告和錯誤時應用程式碼修復。
- Windows 使用者安裝程式 - Windows 安裝過程中不再需要提升許可權。
- 終端列選擇 - 按 Alt+點選以在整合終端中選擇文字塊。
- 新增所有缺失的匯入 - 單次操作即可在 JavaScript/TypeScript 檔案中新增所有缺失的匯入。
- JSX 標籤自動完成 - 像處理 HTML 一樣處理 JavaScript/TypeScript 中的 JSX 標籤。
- 改進的 JS/TS 錯誤報告 - 簡潔明瞭的訊息,附帶相關的原始碼連結。
- 改進的擴充套件搜尋 - 過濾 Marketplace 查詢以查詢您想要的擴充套件。
- 擴充套件包管理 - 將擴充套件包作為一個整體或按單個擴充套件進行管理。
- 預覽:設定編輯器 - 豐富的設定描述顯示,“目錄”跟蹤滾動。
如果您想線上閱讀這些發行說明,請訪問 code.visualstudio.com 上的更新頁面。
您還可以觀看 Cloud Developer Advocate Brian Clark 製作的 1.26 版本亮點影片。
釋出說明按以下與 VS Code 重點領域相關的部分進行排列。以下是一些進一步的更新
- 工作臺 - 新的“檢視”選單佈局、複製相對路徑操作、離線模式。
- 整合終端 - 改進的多行支援、渲染改進。
- 語言 - 將命名匯入轉換為名稱空間匯入、JSX 摺疊。
- 除錯 - 改進的停止會話和智慧單步除錯。
- 預覽功能 - 適用於 Windows 和 Linux 的可主題化自定義工具欄和選單欄。
- 擴充套件創作 - QuickInput API、extensionPack 宣告、webview 標題欄圖示。
Insiders:想盡快看到新功能嗎?您可以下載每夜更新的 Insiders 構建版本,並第一時間嘗試最新的更新。有關最新的 Visual Studio Code 新聞、更新和內容,請在 Twitter 上關注我們 @code!
工作臺
麵包屑導航
編輯器現在在其內容上方有一個導航欄 - 我們稱之為麵包屑導航。它顯示當前位置並允許您在符號和檔案之間快速導航。要開始使用麵包屑導航,請使用檢視 > 顯示麵包屑導航命令或透過 `breadcrumbs.enabled` 設定啟用它。
當使用編輯器選項卡(預設)時,麵包屑導航顯示在編輯器標題下方的單獨一行中。如果您不使用編輯器選項卡,麵包屑導航會顯示為標題旁邊的互動式檔案路徑。

麵包屑導航始終顯示檔案路徑,並在擴充套件的幫助下顯示游標位置處的符號路徑。顯示的符號與大綱檢視和轉到符號中的符號相同,因此現有擴充套件將與麵包屑導航配合使用。
麵包屑導航的外觀可以自定義。如果您的路徑很長或者只對檔案路徑或符號路徑感興趣,您可以使用 `breadcrumbs.filePath` 和 `breadcrumbs.symbolPath` 設定。兩者都支援 `on`、`off` 和 `last`,它們定義您是否以及看到路徑的哪一部分。
要與麵包屑導航互動,請使用焦點麵包屑導航命令或按 ⇧⌘. (Windows, Linux Ctrl+Shift+.)。它將選擇最後一個元素並開啟一個下拉列表,允許您導航到同級檔案或符號。使用 ← (Windows, Linux Left) 和 → (Windows, Linux Right) 鍵盤快捷鍵可轉到當前元素之前或之後的元素。當下拉列表出現時,只需開始鍵入 - 所有匹配的元素都將被突出顯示,並且將選擇最佳匹配項以進行快速導航。

您也可以在不使用選擇器的情況下與麵包屑導航互動。按 ⇧⌘; (Windows, Linux Ctrl+Shift+;) 將焦點放在最後一個元素上,使用 ← (Windows, Linux Left) 和 → (Windows, Linux Right) 導航,並使用 Space 在編輯器中顯示元素。
問題面板快速修復
您現在可以從問題面板應用快速修復。當您將滑鼠懸停或選擇問題條目時,會顯示一個指示快速修復的燈泡。可以透過單擊燈泡或開啟問題條目的上下文選單來應用快速修復。

注意: 僅當提供快速修復的擴充套件提供與快速修復關聯的診斷資訊時,才會顯示燈泡指示器。
Windows 使用者安裝程式
在上一個版本中宣佈的 Windows 使用者安裝程式包現已在穩定版中提供。安裝使用者安裝程式不需要管理員許可權,因為位置將在您的使用者本地 AppData (LOCALAPPDATA) 資料夾下。使用者安裝程式還提供了更順暢的後臺更新體驗。
如果您是系統範圍 Windows 安裝程式的當前使用者,系統將提示您安裝使用者安裝程式,我們建議從現在開始使用它。不用擔心,在轉換過程中會保留所有設定和擴充套件。在安裝過程中,系統還會提示您解除安裝系統範圍的安裝程式。
網格:自動最大化最小化編輯器
在上一個里程碑中引入網格編輯器佈局時,我們失去了一個功能,即當您聚焦編輯器且它處於最小化狀態時,編輯器會自動最大化。此功能現在可以像以前一樣工作了

注意: 您始終可以透過檢視: 最大化編輯器組 (`workbench.action.minimizeOtherEditors`) 最大化活動編輯器,或透過檢視: 重置編輯器組大小 (`workbench.action.evenEditorWidths`) 重置所有編輯器大小。
檢視選單清理
檢視選單變得非常大,我們決定將許多條目移到一個單獨的外觀子選單中以進行清理。

複製相對路徑
VS Code 始終有一個操作可以將檔案的絕對路徑複製到剪貼簿 (⌘K ⌥⌘C (Windows Shift+Alt+C, Linux Ctrl+K Ctrl+Alt+C))。現在有一個新操作複製相對路徑 (⌘K ⇧⌥⌘C (Windows Ctrl+K Ctrl+Shift+C, Linux Ctrl+K Ctrl+Shift+Alt+C)) 以複製相對於工作區資料夾根目錄的檔案路徑。
注意: 您可以透過按住 `Shift` 鍵(macOS 上為 `Alt` 鍵)然後開啟選單,從上下文選單(例如,在檔案資源管理器中的選項卡或檔案上)訪問此操作。
自定義檢視:檔案資源裝飾
顯示檔案資源的自定義檢視現在將顯示檔案裝飾(Git、問題)。您可以使用設定 `explorer.decorations.colors` 和 `explorer.decorations.badges` 停用它們,這將在檔案資源管理器、開啟的編輯器和自定義檢視中停用它們。

從 package.json 執行 npm 指令碼
您現在可以從懸停中執行 `package.json` 檔案中的 npm 指令碼,如下所示或從上下文選單中執行。

開啟資料夾 URI
如果有一個擴充套件為該 URI 貢獻了一個 `FileSystemProvider`,您現在可以在 VS Code 中將 URI 作為資料夾開啟。我們引入了一個新的命令列引數 `--folder-uri` 來執行此操作。
如果您安裝了 RemoteHub 擴充套件,以下 CLI 命令將開啟 VS Code GitHub 儲存庫作為一個資料夾。
code --folder-uri remotehub://github.com/microsoft/vscode

快速渲染
在啟動時,基本的工作臺佈局現在恢復得更快。恢復順序是活動欄、側邊欄和狀態列,然後是標題和圖示,最後填充資源管理器和編輯器區域。

快速渲染旨在提高感知效能,因為您注視空白畫布的時間減少了。我們有更多關於如何改進渲染效能的想法,我們對您的反饋很感興趣。
輸出面板
VS Code 的主程序、視窗程序和共享程序都有自己的日誌通道,當日志級別設定為“Trace”時,您現在可以在其中檢視傳送的遙測事件。出於簡潔考慮,所有遙測事件共有的資料將不可見。每個遙測事件的完整有效負載都記錄在一個名為 `telemetry.log` 的單獨日誌檔案中,您可以透過開發人員:開啟日誌檔案... 命令訪問它。
離線模式
有些使用者不希望 VS Code 發出任何傳出網路請求,除非他們特意呼叫需要線上訪問的功能。為了支援這種離線模式,我們添加了新設定來關閉諸如自動擴充套件更新檢查、查詢設定以進行 A/B 實驗以及獲取自動完成的線上資料等功能。
以下是用於控制 VS Code 發出網路請求的功能的完整設定列表
update.modeupdate.showReleaseNotesextensions.autoupdateextensions.autoCheckUpdatesextensions.showRecommendationsOnlyOnDemandworkbench.settings.enableNaturalLanguageSearchworkbench.enableExperimentstelemetry.enableTelemetrytelemetry.enableCrashReportergit.autofetchnpm.fetchOnlinePackageInfo
輔助功能改進
我們修復了大量輔助功能問題 - 主要圍繞鍵盤導航、螢幕閱讀器支援和顏色對比度。完整列表可在此處找到。
整合終端
列選擇
整合終端現在透過 `Alt+click` 支援列選擇。

改進的多行支援
在終端中雙擊選擇單詞現在會選擇跨行拆分的單詞。
前端和後端現已同步
進入整合終端的資料流現在與後端的偽終端/shell 程序同步。這意味著進入終端的資料不再會淹沒 UI 執行緒並導致無響應,SIGINT (Ctrl+C) 應始終有響應,並且 `time` 命令應返回準確的結果。
動態紋理圖集
整合終端現在預設使用“動態紋理圖集”進行畫布渲染。這改變了終端用於儲存字元字形的快取策略。字形不再是在預設背景上固定的字形集,而是根據需要新增到紋理圖集中,無論使用何種背景。這應該會減少首次終端啟動時間以及不使用預設背景的字元的渲染時間,並提高整體渲染效能。
這是作為對 xterm.js 的上游社群貢獻而來的。
語言
TypeScript 3.0
VS Code 現在附帶 TypeScript 3.0.1。此重大更新帶來了對專案引用的支援、對元組的更好支援以及其他語言和工具功能。您可以在此處閱讀有關 TypeScript 3.0 的更多資訊。
更好的錯誤報告
TypeScript 團隊做了大量工作,使 JavaScript 和 TypeScript 錯誤訊息更智慧、更清晰。一些錯誤訊息現在包含指向原始碼中相關位置的連結。

聯合型別和其他複雜型別的訊息也應該更簡潔、更有幫助。例如,JSX 中的一個簡單型別錯誤有時會產生一個複雜的錯誤訊息,如下所示:

得益於 TypeScript 3.0,VS Code 1.26 中的錯誤更具可讀性

JSX 標籤自動完成
當您在 JavaScript 或 TypeScript 檔案中鍵入 `>` 時,JSX 標籤現在會自動關閉

此行為與 VS Code 在 HTML 檔案中已提供的功能匹配。可以透過設定 `"javascript.autoClosingTags": false` 和 `"typescript.autoClosingTags": false` 來停用標籤自動關閉。
新增所有缺失的匯入快速修復
新增缺失的匯入快速修復現在可以應用於 JavaScript/TypeScript 檔案中的所有缺失匯入

此快速修復將僅新增具有單個潛在定義的符號的匯入。如果當前專案中一個符號有多個潛在定義,例如有兩個不同的檔案匯出一個名為 `Button` 的符號,則您必須快速修復單個錯誤並選擇您想要的特定匯入。
要在 JavaScript 檔案中使用此快速修復,請啟用語義檢查。
JSX 摺疊
使用語法感知摺疊時,JSX 標籤現在可以摺疊。

在命名匯入和名稱空間匯入之間轉換
兩個新的重構讓您可以快速在 JavaScript 和 TypeScript 中的命名匯入和名稱空間匯入之間進行轉換

jsconfig.json 和 tsconfig.json 專案檔案中的可點選連結
透過 `Ctrl` 單擊專案引用路徑(macOS 上為 `Cmd+click`)來快速導航 `jsconfig.json` 和 `tsconfig.json` 專案引用

`extends` 路徑現在也可以點選。
除錯
改進的停止除錯行為
在以前的版本中,除錯:停止操作(在除錯工具欄上找到)總是會立即終止被除錯程式及其子程序,而不會給被除錯程式優雅清理的機會。有些使用者不喜歡這種行為,因為他們被迫在停止除錯會話後進行手動清理。
在此版本中,我們改進了除錯:停止操作,如下所示:
-
首次按下停止時,不會立即終止被除錯程式,而是要求它優雅地關閉(並根據需要清理所有內容)。
-
如果在該關閉程式碼中沒有斷點(或問題),被除錯程式和除錯會話將終止。使用者將看不到與以前版本的 VS Code 有任何行為差異。
-
但是,如果偵錯程式命中了關閉程式碼中的斷點,或者被除錯程式本身沒有正確終止,則除錯會話將不會結束。
-
在這種情況下,再次按下停止按鈕將強制終止被除錯程式。因此,如果您看到按下紅色停止按鈕時除錯會話沒有結束,請再次按下該按鈕以強制關閉被除錯程式。
注意:此功能僅受選擇實現它的偵錯程式擴充套件支援。目前,這僅適用於內建的 Node.js 偵錯程式。我們預計其他除錯擴充套件很快就會支援此功能。
更改了 Node/Chrome 除錯的 smartStep 行為
以前,`"smartStep": true` 會導致 Node.js 偵錯程式不會在沒有源對映的原始碼中停止。這可以透過兩種方式發生:
- 根本沒有源對映的檔案(未轉譯的原始碼或隨 node modules 提供的 .js 檔案)。
- 確實有源對映的轉譯檔案,但有些行沒有對映(TypeScript 在向下編譯某些功能(如 async/await)時插入的額外行)。
在 VS Code 1.26 中,`"smartStep": true` 將僅影響第二種型別,即源對映中缺失的行。現在您將能夠單步執行 .js 檔案,同時跳過 TS async/await 程式碼。
我們更改了這一點,因為我們意識到舊的 smartStep 行為過於激進。跳過插入的程式碼通常是正確的,但在第一種情況下跳過僅對某些專案和使用者有意義。此外,在 `launch.json` 配置檔案中使用 `skipFiles` 選項可以更好地處理整個檔案的情況,因為它可以更精確地定位檔案並且速度更快。
因此,如果您正在使用 `smartStep` 並注意到偵錯程式不再自動跳過沒有源對映的檔案,您可以使用 `skipFiles` 恢復以前的行為。請參閱跳過不相關的程式碼以獲取如何配置 `skipFiles` 以跳過 node_modules、內部節點檔案或任何其他您不想單步執行的原始碼的示例。
擴充套件
擴充套件搜尋的 IntelliSense
此版本透過向擴充套件搜尋欄位新增 IntelliSense 自動完成功能,使搜尋擴充套件變得更容易。這將幫助您最佳化擴充套件搜尋,以根據類別和安裝狀態等過濾結果;或按名稱、評分或安裝計數對結果進行排序。鍵入“@”或 ⌃Space (Windows, Linux Ctrl+Space) 以觸發支援的查詢引數建議。

擴充套件包管理
在此版本中,擴充套件包管理變得更加順暢。擴充套件包始終作為一個整體安裝、解除安裝、啟用或停用。您現在還可以解除安裝或停用屬於擴充套件包的擴充套件,而無需解除安裝或停用整個擴充套件包。
當您開啟擴充套件詳細資訊時,還有一個新的擴充套件包選項卡,顯示捆綁在擴充套件包中的擴充套件。

注意: 這需要擴充套件包的採用。有關更多詳細資訊,請參閱重新審視擴充套件包。
從命令列停用擴充套件
您現在可以使用新引數 `--disable-extension` 從命令列停用擴充套件。
code <folder_path> --disable-extension ms-python.python- 開啟資料夾時停用 `ms-python.python` 擴充套件。code <folder_path> --disable-extension ms-python.python --disable-extension ms-dotnettools.csharp- 開啟資料夾時停用 `ms-python.python` 和 `ms-dotnettools.csharp` 擴充套件。
預覽功能
預覽功能尚未準備好釋出,但已足夠實用。我們歡迎您在這些功能開發期間提供早期反饋。
新設定編輯器
在此里程碑中,我們繼續致力於設定的 GUI 編輯器。它仍處於預覽階段,但如果您想試用,可以使用首選項:開啟設定(預覽)命令開啟它。我們很想聽聽您的任何反饋 - 您可以在此 GitHub 問題上留下反饋。

與上個月相比的一些新變化是:
- 標頭 UX 已重新整理和清理,並且僅顯示修改後的設定和開啟 JSON 編輯器的操作已移至右側的 `...` 選單下。
- 左側的目錄現在預設摺疊,並在您滾動時展開以顯示當前部分。
- 設定描述現在呈現為 Markdown。某些設定具有指向相關文件的外部連結,並且對其他設定的引用現在是可點選的連結,可滾動到該設定。列舉型別設定的 `enumDescriptions` 現在顯示在設定描述之後(在 JSON 編輯器中也是如此)

files.exclude和search.exclude設定的新控制元件使新增或刪除 glob 模式以及檢視當前範圍應用了哪些模式變得更加容易

- 設定編輯器中的控制元件現在可以主題化。請參閱新主題顏色下的新主題顏色。
Windows/Linux 的自定義標題欄和選單
在此里程碑中,當啟用自定義標題欄時,我們改進了 Windows 和 Linux 上的自定義選單。雖然仍處於預覽階段,但您可以透過在 `settings.json` 中將 `window.titleBarStyle` 設定為 `custom` 來試用它。
一些亮點包括:
-
選單現在可以主題化。請參閱新主題顏色下的新主題顏色。

-
鍵盤和滑鼠與選單的互動更加連貫。以前,有幾個焦點指示器使選單不清楚。現在,選單的功能方式更加熟悉。
-
許多輔助功能問題已得到解決,以改善需要更大縮放級別或使用螢幕閱讀器的人的體驗。
我們將繼續改進新選單和標題欄,並解決標記有 `workbench-title` 或 `workbench-menu` 標籤的問題。
擴充套件開發
QuickInput API
QuickPick 和 InputBox API 現已穩定。它們允許比現有 showQuickPick 和 showInputBox API 更靈活地收集使用者輸入。在示例擴充套件中提供了 QuickInput API 使用示例。

重新審視擴充套件包
定義擴充套件包現在使用名為 `extensionPack` 的新屬性而不是 `extensionDependencies` 在 `package.json` 中。這是因為 `extensionDependencies` 主要用於定義擴充套件之間的功能依賴關係,這會阻止解除安裝或停用擴充套件依賴項,而無需解除安裝或停用依賴擴充套件。
擴充套件包不應與其捆綁的擴充套件有任何功能依賴關係,並且它們應該可以獨立於包進行管理。以下是定義捆綁了多個偵錯程式擴充套件的擴充套件包的 `extensionPack` 條目示例。
"extensionPack": [
"andreweinand.mock-debug",
"ms-vscode.mono-debug",
"ms-vscode.cpptools",
"ms-dotnettools.csharp",
"vscjava.vscode-java-debug"
]
這將使使用者管理擴充套件包及其捆綁的擴充套件變得更加簡單和容易。請參閱擴充套件包管理。
更好的工作區編輯
WorkspaceEdit 和 applyEdit API 已擴充套件,允許擴充套件建立、重新命名和刪除檔案。以前,只能進行文字編輯。新的 API 允許更好的重構;例如,在更改類名時重新命名檔案。
新主題顏色
麵包屑導航有新的主題顏色
breadcrumb.foreground: 麵包屑項的顏色。breadcrumb.focusForeground: 焦點麵包屑項的顏色。breadcrumb.activeSelectionForeground: 選定麵包屑項的顏色。breadcrumbPicker.background: 麵包屑項選擇器的背景顏色。
新設定編輯器中的控制元件現在可以主題化
settings.headerForeground: 節標題或活動標題的前景色。settings.modifiedItemForeground: 修改設定指示器的前景色。settings.inactiveSelectedItemBorder: 當設定列表沒有焦點時,選定設定行邊框的顏色。settings.dropdownBackground: 下拉列表背景。settings.dropdownForeground: 下拉列表前景色。settings.dropdownBorder: 下拉列表邊框。settings.checkboxBackground: 複選框背景。settings.checkboxForeground: 複選框前景色。settings.checkboxBorder: 複選框邊框。settings.textInputBackground: 文字輸入框背景。settings.textInputForeground: 文字輸入框前景色。settings.textInputBorder: 文字輸入框邊框。settings.numberInputBackground: 數字輸入框背景。settings.numberInputForeground: 數字輸入框前景色。settings.numberInputBorder: 數字輸入框邊框。
Windows 和 Linux 上的自定義選單現在可以主題化
menu.background: 選單和上下文選單的背景。menu.foreground: 選單和上下文選單的前景色。menu.selectionBackground: 選單和上下文選單中選定項的背景。menu.selectionForeground: 選單和上下文選單中選定項的前景色。menu.selectionBorder: 選單和上下文選單中選定項的邊框。menubar.selectionBackground: 選單欄中選定的頂級選單的背景。menubar.selectionForeground: 選單欄中選定的頂級選單的前景色。menubar.selectionBorder: 選單欄中選定的頂級選單的邊框。
更新了預設主題顏色
作為我們輔助功能改進的一部分,我們更新了一些預設主題顏色,以確保它們滿足顏色對比度要求。顏色對比度修復的完整列表可在此處找到。
DefinitionLink
定義提供程式現在可以返回一個 DefinitionLink 物件。定義連結提供了比普通位置定義更多的元資料,包括定義符號的範圍
import * as vscode from 'vscode';
export function activate(context: vscode.ExtensionContext) {
vscode.languages.registerDefinitionProvider('markdown', new LineLinkDefinitionProvider());
}
export class LineLinkDefinitionProvider implements vscode.DefinitionProvider {
async provideDefinition(
document: vscode.TextDocument,
position: vscode.Position,
token: vscode.CancellationToken
): Promise<vscode.DefinitionLink[]> {
const wordRange = document.getWordRangeAtPosition(position, /<\d+>/);
if (wordRange.isEmpty) {
return [];
}
const targetLine = +document.getText(wordRange).slice(1, -1);
return [
{
// Definition location
targetRange: new vscode.Range(targetLine - 1, 0, targetLine, 0),
targetUri: document.uri,
// Range of the defining symbol
originSelectionRange: new vscode.Range(
wordRange.start.translate({ characterDelta: 1 }),
wordRange.end.translate({ characterDelta: -1 })
)
}
];
}
}
除錯擴充套件
除錯介面卡協議的新家
我們已將除錯介面卡協議從其舊位置移至新網站 https://microsoft.github.io/debug-adapter-protocol 以及相應的儲存庫 https://github.com/microsoft/debug-adapter-protocol。
一篇伴隨部落格文章 除錯介面卡協議的新家,提供了有關此次遷移的背景和額外詳細資訊。
所有從舊位置 https://raw.githubusercontent.com/Microsoft/vscode-debugadapter-node/main/debugProtocol.json 以程式設計方式使用 DAP JSON-schema 的人應將其原始碼更新到新位置
https://microsoft.github.io/debug-adapter-protocol/debugAdapterProtocol.json
在接下來的兩個版本(8 月和 9 月)中,我們將保持舊位置的模式是最新的,但我們計劃在 10 月將其刪除。
除錯介面卡協議的新 terminate 請求
為了支援上面解釋的被除錯程式的優雅關閉,除錯介面卡協議中添加了一個新的 terminate 請求和相應的 supportsTerminateRequest 功能。如果除錯介面卡為 supportsTerminateRequest 功能返回 true,VS Code 將在停止除錯會話時首先向除錯介面卡傳送 terminate 請求。除錯介面卡中 terminate 請求的實現應請求被除錯程式自行終止。在基於 Unix 的作業系統上,這可以透過向被除錯程式傳送 SIGINT 訊號輕鬆實現。
Webview 圖示
Webview 現在可以提供一個自定義圖示,該圖示顯示在選項卡欄和 OPEN EDITORS 檢視中
import * as vscode from 'vscode';
import * as path from 'path';
export function activate(context: vscode.ExtensionContext) {
context.subscriptions.push(vscode.commands.registerCommand('catCoding.start', () => {
const panel = vscode.window.createWebviewPanel('catCoding',
"Coding Cat", vscode.ViewColumn.One, { });
panel.iconPath = vscode.Uri.file(path.join(context.extensionPath, 'media', 'cat.png'));
});
}
![]()
終端訪問 API
終端訪問 API 現已穩定。它們允許擴充套件訪問 Terminal 物件,無論擴充套件是否建立了它們。
export namespace window {
export const terminals: ReadonlyArray<Terminal>;
export const onDidOpenTerminal: Event<Terminal>;
}
URI 處理程式 API
URI 處理程式 API 現已穩定。它允許擴充套件處理系統範圍的 URI。
export interface UriHandler {
handleUri(uri: Uri): ProviderResult<void>;
}
export namespace window {
export function registerUriHandler(handler: UriHandler): Disposable;
}
它附帶一個 onUri 啟用事件,只要作業系統開啟一個指向自身的 URI,該事件就會啟用擴充套件。
請參閱 Git 擴充套件的 GitProtocolHandler 以獲取參考實現。
Node.js 更新
VS Code 執行的 Electron 版本已更新,隨之而來的是 VS Code 附帶的 Node.js 從 7.9 更新到 8.9。所有擴充套件現在都將在更新版本的 Node.js 上執行。
有一些更改可能會影響擴充套件
natives節點模組不再起作用(請參閱 #47569)。- 不再支援舊版除錯協議和 `--debug` 標誌(請參閱 #55907)。
- 如果使用 stdio 作為傳輸方式的 Node.js 編寫的語言伺服器在 VS Code 1.26 中遇到問題,使用 LSP 客戶端和 伺服器庫的擴充套件作者的修復方法是將傳輸方式切換到
TransportKind.ipc而不是TransportKind.stdio並重新發布其擴充套件。
提議的擴充套件 API
每個里程碑都附帶新的提議 API,擴充套件作者可以試用它們。一如既往,我們渴望您的反饋。以下是試用提議 API 所需的操作:
- 您必須使用 Insiders 版本,因為提議的 API 經常更改。
- 您的擴充套件的
package.json檔案中必須包含以下行:"enableProposedApi": true。 - 將最新版本的 vscode.proposed.d.ts 檔案複製到您的專案中。
請注意,您不能釋出使用提議 API 的擴充套件。我們很可能會在下一個版本中進行破壞性更改,我們絕不希望破壞現有擴充套件。
TextSearchProvider、FileSearchProvider、FileIndexProvider
我們添加了一組 API,允許擴充套件在 VS Code 中實現文字搜尋和檔案搜尋。
當用戶使用“搜尋”檢視或擴充套件使用新 API workspace.findTextInFiles 時,將呼叫 TextSearchProvider。它透過 progress 回撥以增量方式返回文字匹配項。
有兩種方法可以實現檔案搜尋來涵蓋兩種常見用例,透過 FileIndexProvider 或 FileSearchProvider。當用戶開啟“快速開啟”時,會呼叫一次 FileIndexProvider,並且必須返回工作區中每個檔案的陣列。然後 VS Code 在此列表中搜索並應用其自己的模糊匹配邏輯以向用戶返回正確的結果集。如果您的擴充套件能夠提供工作區中每個檔案的列表,那麼實現 FileIndexProvider 是支援檔案搜尋的更簡單方法。
相反,如果您的擴充套件需要處理使用者的搜尋查詢並返回自己的過濾結果列表,請實現 FileSearchProvider。它會在使用者在“快速開啟”中每次按鍵時被呼叫,並且必須返回過濾和排序的檔案匹配項集。
export interface TextSearchProvider {
provideTextSearchResults(
query: TextSearchQuery,
options: TextSearchOptions,
progress: Progress<TextSearchResult>,
token: CancellationToken
): Thenable<void>;
}
export interface FileIndexProvider {
provideFileIndex(options: FileIndexOptions, token: CancellationToken): Thenable<Uri[]>;
}
export interface FileSearchProvider {
provideFileSearchResults(
query: FileSearchQuery,
options: FileSearchOptions,
token: CancellationToken
): Thenable<Uri[]>;
}
export namespace workspace {
export function registerTextSearchProvider(
scheme: string,
provider: TextSearchProvider
): Disposable;
export function registerFileIndexProvider(
scheme: string,
provider: FileIndexProvider
): Disposable;
export function registerFileSearchProvider(
scheme: string,
provider: FileSearchProvider
): Disposable;
}
findTextInFiles API
已新增新的擬議 API,允許擴充套件在工作區中搜索文字模式
export namespace workspace {
export function findTextInFiles(
query: TextSearchQuery,
options: FindTextInFilesOptions,
callback: (result: TextSearchResult) => void,
token?: CancellationToken
): Thenable<void>;
}
這與 workspace.findFiles 對應,後者在工作區中搜索檔案。
雜項
Electron 更新
在此版本中,我們從 Electron 1.7.12 更新到 2.0.5。這帶來了 Chromium 從 58 版更新到 61 版,以及 Node.js 從 7.9 更新到 8.9。
新文件
Logpoints 部落格文章
您可以閱讀 Kenneth 最近的部落格文章,瞭解有關 Node.js 除錯 Logpoints 和自動附加的資訊。Logpoints 允許您快速輸出日誌資訊,而無需更改原始碼或中斷除錯會話。
IntelliCode 常見問題解答
如果您是 Python 開發人員,請檢視 IntelliCode,這是一種使用人工智慧 (AI) 增強軟體開發的新工具。IntelliCode 擴充套件為 Python 中的 IntelliSense 提供了一組 AI 輔助功能,例如根據當前原始碼上下文推斷最相關的自動完成。

顯著變化
- 53532: 編輯器:如果檔案已載入,則在後臺載入對檔案的更改
- 53586: Node 除錯:不記住自動附加模式
- 53022: 編輯器選項卡中檔案的“只讀”標籤
- 48275: 不再支援
resourceIsFile上下文鍵
感謝
最後但同樣重要的是,衷心感謝!以下幫助使 VS Code 變得更好的各位:
對 vscode 的貢獻
- @alexr00: 修復 #48714: 添加了從檔案的本地大小寫到 git 大小寫的轉換 PR #49397
- Arjun Attam (@arjun27): 新增 webview select-all 命令 PR #54851
- Adit Bhatt (@avbhatt): 新增對忽略儲存庫列表的支援 PR #47890
- @coolreader18: 修復預覽器中如果 @param jsdoc 標籤在引數名稱後有連字元的雙破折號問題 PR #53365
- Geoffrey (@g3offrey): 允許使用 Node.js 更新 require 路徑 PR #53964
- @HookyQR: 改進大寫蛇形命名法的單詞部分移動和刪除 PR #53470
- HUA Yang (@imhuay): 修復 #53590 PR #54257
- Itamar (@itamark)
- Ivor Huang (@ivorhuang): 實現推送成功通知 PR #47790
- Josh Beard (@jlbeard84): 刪除了 'Open in Terminal' 命令中的 OS 特定文字。 PR #53636
- Jongkuen Hong (@Jongkeun): 修復拼寫錯誤 'occuring' 到 'occurring' PR #54239
- Josh Goldberg (@JoshuaKGoldberg): 修剪搜尋選單中的檔案搜尋字串 PR #54625
- Leonardo Braga (@LeonardoBraga): 將不帶擴充套件 ID 的 --enable-proposed-api 處理為“啟用所有” PR #52861
- Loic Nageleisen (@lloeki): 遵守程式碼命令安裝的所有權 PR #46962
- Nikolas (@nikolasburk): 新增下劃線和星號到周圍的配對 PR #55054
- Nilesh Kevlani (@njkevlani): 修復 #53372 PR #53503
- Nick James (@omniomi): 更新 powershell 語法 PR #52956
- Ori Ashual (@oriash93): 支援從 CLI 更新擴充套件 PR #45533
- Pradeep Murugesan (@pradeepmurugesan)
- Ahmed Tarek (@pushqrdx): 修復 SCM 徽章問題 #42940 PR #43256
- Dániel Tar (@qcz): 改進 macOptionClickForcesSelection 訊息 PR #54264
- Ryuichi Inagaki (@ryu1kn): 如果在初始提交上執行,則“撤消上次提交”出錯 PR #47578
- Sandy Armstrong (@sandyarmstrong): 將 Xamarin .workbook 檔案視為 markdown PR #51167
- Guillaume Marcoux (@V-ed): 刪除令人困惑的 Start from wordPartLeft 命令 ID PR #55492
- Walter M Barajas Jr (@wmb0117): 新增手動新增 repo 的選項 PR #48020
- Yogesh Mangaj (@yogeshmangaj): 新增焦點搜尋列表命令 PR #54196
- @zhuowei: [WIP] git: 在暫存時檢測 BOTH_ADDED 檔案中的衝突標記 PR #50252
對 language-server-protocol 的貢獻
- Luke Lau (@Bubba): 新增 hierarchicalDocumentSymbolSupport 到文字文件客戶端功能 PR #538
- Qiming zhao (@chemzqm): 新增 coc.nvim PR #537
- Colin Rofls (@cmyr): 修復 specification.md 中的拼寫錯誤 PR #499
- @khng300: 新增 ccls 作為 C/C++/Objective-C 的 LSP 實現 PR #525
- Michael T Lombardi (@michaeltlombardi): 更新 Puppet Language Server 資訊 PR #509
- Mikhail Arkhipov (@MikhailArkhipov): 新增 preselect 欄位到 CompletionItem PR #515
- Andrey Kolomoets (@muffinmad): 新增 eglot PR #531
- Olivier FAURE (@PoignardAzur): 修復規範中的小拼寫錯誤 PR #529
- Rafał Łasocha (@swistak35): 更新 servers.md - 新增新的 ruby 語言伺服器 PR #535
- Tyson Andre (@TysonAndre)
對 vscode-chrome-debug 的貢獻
- Michael Crane (@mrcrane): Windows 上斷開連線時終止 Chrome 時的競爭條件 PR #703
- Todd Chaffee (@tchaffee): 更清晰的 webpack devtools 選項文件。 PR #694
對 vscode-chrome-debug-core 的貢獻
- @digeff
- @Pokute: 添加了對 URI 編碼源對映的支援 + 測試。 PR #344
- Raghav Katyal (@rakatyal)
對 vscode-vsce 的貢獻
- Jimi (Dimitris) Charalampidis (@JimiC): 修復 .vscodeignore 中的模式匹配 PR #271
對 vscode-recipes 的貢獻
- Fabien Allanic (@fallanic)
- Jesus Abarca (@jabas06): 更新以使除錯適用於 Angular CLI 版本 6 PR #117
- @NileshParkhe83: Jest 問題 - SecurityError: localStorage is not available for opaque origins PR #120
- @NiloCK: #96 區分 vue-cli 2.x / 3.x 的說明 PR #121
對 localization 的貢獻
Transifex VS Code 專案團隊中有超過 800 名成員,每月約有 100 名活躍貢獻者。我們感謝您的貢獻,無論是提供新的翻譯、對翻譯進行投票,還是提出流程改進建議。
以下是此版本的貢獻者快照。有關專案(包括貢獻者名單)的詳細資訊,請訪問專案網站:https://aka.ms/vscodeloc。
- 中文 (簡體): Joel Yang, Yusong, pluwen, Liu Dingming 劉丁明, hackereric, Simon Chan, 韋煊 王, gzponline, Ziming Wang。
- 中文 (繁體): Duran Hsieh, Will 保哥, Poy Chang, Alan Tsai, Kevin Yang, Winnie Lin, MartinLau, Ben Tsai 蔡和恩, Alan Liu。
- 法語: Antoine Griffard, Ludovic P, William Thibodeau, Adrien Clerbois, Alain BUFERNE。
- 德語: Carsten Siemens, Carsten Kneip, Markus Hatvan, Väinämö Lumikero, Ettore Atalan, AlCalzone, Levin Rickert。
- 義大利語: Alessandro Alpi, Andrea Dottor, Emilie Rollandin, Riccardo Cappello, Aldo Donetti, Massimo。
- 日語: Satoshi Kajiura, Yuichi Nukiyama, Shunya Tajima, yoshioms, Nakamura Yuta。
- 韓語: Helloyunho。
- 俄語: Michel Ace。
- 西班牙語: Alberto Poblacion, Julián Martínez, Alejandro Medina, José M. Aguilar, Carlos Mendible, Pedro Sanchez, Lio Fleishman。
- 波斯尼亞語: Bahrudin Hrnjica。
- 保加利亞語:Любомир Василев。
- 捷克語: Ľuboš Uličný, Ľubomír Kováč, Frantisek Veris。
- 荷蘭語: Gerald Versluis, RubenJacobse, Armand Duijn, Dirk Doesburg, Maarten van Stam, Dean Wyns。
- 英語 (英國): Matthew John Cheetham, Swotboy2000。
- 芬蘭語: Feetu Nyrhinen, Petri Niinimäki, Make。
- 希臘語: Ioannis Paraskevopoulos, Theodore Tsirpanis。
- 匈牙利語: Dóczi Dominik。
- 印度尼西亞語: Laurensius Dede Suhardiman, Wildan Mubarok, Riwut Libinuko, Bagus Ilman, Lundy Orlando。
- 挪威語: andreona, Daniel Bjørnbakk。
- 波蘭語: Patryk Brejdak, Sebastian Baran, Igor Śpiączka, Lukasz Woznicki。
- 葡萄牙語 (巴西): Lucas Miranda, Otacilio Saraiva Maia Neto, Roberto Fonseca, Marcelo Camargo, Marcelo Novaes, Victor Hugo Schmidt, Pedro Sereno, Rafael Oliveira, Danilo Dantas, Vitor Dutra Freire, Luan Moreno Medeiros Maciel, Fabio Correia。
- 葡萄牙語 (葡萄牙): Daniel Correia, Pavlo Zakharuk, António Santos, João Mata, Diogo Barros, Danilo Dantas。
- 羅馬尼亞語: Schiriac Robert, Cornel Cocioaba, Dan Ichim, Alexandru Spinu, ovisan, Bogdan Mateescu。
- 泰米爾語: Jeyanthinath Muthuram, Jam Station。
- 烏克蘭語: Oleksandr, Fedir Gordiienko, Volodymyr Holovka。