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 標籤完成 - 在 JavaScript/TypeScript 中使用 JSX 標籤,就像在 HTML 中一樣。
- 更好的 JS/TS 錯誤報告 - 簡潔明瞭的訊息,附帶相關原始碼連結。
- 改進的擴充套件搜尋 - 篩選市場查詢以找到您想要的擴充套件。
- 擴充套件包管理 - 將擴充套件包作為一個整體或按單個擴充套件進行管理。
- 預覽:設定編輯器 - 豐富的設定描述顯示,“目錄”跟蹤滾動。
如果您想線上閱讀這些發行說明,請訪問 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 左箭頭)和→ (Windows、Linux 右箭頭)鍵盤快捷鍵轉到當前元素之前或之後的元素。當下拉選單出現時,只需開始輸入 - 所有匹配的元素都將被突出顯示,並且最佳匹配將被選中以進行快速導航。
您還可以在沒有選擇器的情況下與麵包屑導航互動。按⇧⌘; (Windows、Linux Ctrl+Shift+;)將焦點放在最後一個元素上,使用← (Windows、Linux 左箭頭)和→ (Windows、Linux 右箭頭)進行導航,並使用空格在編輯器中顯示元素。
“問題”面板快速修復
您現在可以從“問題”面板應用快速修復。當您將滑鼠懸停或選擇一個問題條目時,會顯示一個指示快速修復的燈泡。可以透過單擊燈泡或開啟問題條目的上下文選單來應用快速修復。
注意:燈泡指示器僅在提供快速修復的擴充套件提供與快速修復相關的診斷資訊時顯示。
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
的擴充套件,您現在可以將 URI 作為資料夾在 VS Code 中開啟。我們引入了一個新的命令列引數--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.mode
update.showReleaseNotes
extensions.autoupdate
extensions.autoCheckUpdates
extensions.showRecommendationsOnlyOnDemand
workbench.settings.enableNaturalLanguageSearch
workbench.enableExperiments
telemetry.enableTelemetry
telemetry.enableCrashReporter
git.autofetch
npm.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 偵錯程式在沒有源對映的原始碼中不停止。這可以透過兩種方式發生:
- 完全沒有源對映的檔案(未經轉譯的原始碼或隨節點模組提供的 .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
設定的新控制元件使新增或刪除全域性模式以及檢視當前範圍適用了哪些模式變得更容易。
- 設定編輯器中的控制元件現在支援主題化。請參閱新主題顏色下的新主題顏色。
Windows/Linux 自定義標題欄和選單
在此里程碑中,當啟用自定義標題欄時,我們改進了 Windows 和 Linux 上的自定義選單。雖然仍處於預覽階段,但您可以透過在settings.json
中將window.titleBarStyle
設定為custom
來嘗試。
一些亮點包括:
-
選單現在支援主題化。請參閱新主題顏色下的新主題顏色。
-
鍵盤和滑鼠與選單的互動更加連貫。以前,有多個焦點指示器使選單不清晰。現在,選單的功能方式更加熟悉。
-
許多輔助功能問題已得到解決,以改善那些需要更大縮放級別或使用螢幕閱讀器的人的體驗。
我們將繼續改進新選單和標題欄,並解決標記有workbench-title
或workbench-menu
標籤的問題。
擴充套件開發
QuickInput API
QuickPick
和InputBox
API 現在穩定。它們允許比現有showQuickPick
和showInputBox
API 更靈活地收集使用者輸入。在示例擴充套件中提供了 QuickInput API 使用示例。
擴充套件包重新審視
現在定義擴充套件包使用一個名為extensionPack
的新屬性,而不是package.json
中的extensionDependencies
。這是因為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
在接下來的兩個版本(八月和九月)中,我們將保持舊位置的模式是最新的,但我們計劃在十月將其刪除。
除錯介面卡協議的新terminate
請求
除錯介面卡協議已新增新的terminate
請求和相應的supportsTerminateRequest
功能,以支援上面解釋的被除錯物件的優雅關閉。如果除錯介面卡針對supportsTerminateRequest
功能返回true
,VS Code 將在停止除錯會話時首先向除錯介面卡傳送terminate
請求。除錯介面卡中terminate
請求的實現應請求被除錯物件自行終止。在基於 Unix 的作業系統上,這可以透過向被除錯物件傳送SIGINT
訊號輕鬆實現。
Webview 圖示
Webviews現在可以提供一個自定義圖示,該圖示顯示在標籤欄和“開啟編輯器”檢視中。
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 中實現文字搜尋和檔案搜尋。
當用戶使用“搜尋”檢視或擴充套件使用新 APIworkspace.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。
新文件
日誌點部落格文章
您可以閱讀 Kenneth 最近的部落格文章,瞭解 Node.js 除錯日誌點和自動附加。日誌點讓您無需更改原始碼或中斷除錯會話即可快速輸出日誌資訊。
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 全選命令 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): 刪除了“在終端中開啟”命令中的作業系統特定文字。 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): 移除令人困惑的 wordPartLeft 命令 ID 的 Start PR #55492
- Walter M Barajas Jr (@wmb0117): 新增手動新增倉庫的選項 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 語言伺服器資訊 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 不適用於不透明來源 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。