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 錯誤報告 - 簡潔、清晰的訊息,並附有相關的原始碼連結。
- 改良的擴充功能搜尋 - 篩選 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 以在編輯器中顯示元素。
問題面板快速修復
您現在可以從「問題」面板套用快速修復。當您將滑鼠停留在問題項目上方或選取問題項目時,會顯示指示快速修復的小燈泡。可以透過按一下小燈泡或開啟問題項目的操作功能表來套用快速修復。
注意:只有在提供快速修復的擴充功能提供與快速修復相關聯的 Diagnostic 資訊時,才會顯示小燈泡指示器。
Windows 上的使用者安裝程式
上一個版本已宣布,Windows 的使用者安裝程式套件現在已在穩定版上提供。安裝使用者安裝程式不需要系統管理員權限,因為位置會在您的使用者 Local 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 指令碼
您現在可以從 hover 或操作功能表執行 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 的主要、視窗和共用程序各自有自己的記錄通道,您現在可以在其中檢視當記錄層級設定為「追蹤」時傳送的遙測事件。為了簡潔起見,所有遙測事件共有的資料在此處將不可見。每個遙測事件的完整承載會記錄在名為 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+滑鼠點擊
支援欄選取。
改良的多行支援
在終端機中按兩下滑鼠以選取單字現在會選取跨越多行的單字。
前端和後端現在已同步
進入整合式終端機的資料串流現在與後端虛擬終端機/shell 程序同步。這表示進入終端機的資料不再會淹沒 UI 執行緒並導致無回應,SIGINT (Ctrl+C) 應一律具有回應性,且 time
命令應傳回精確的結果。
動態紋理圖集
整合式終端機現在預設使用「動態紋理圖集」進行畫布渲染。這會變更終端機使用的快取策略,以儲存字元字元形狀。字元形狀不再是預設背景上的固定字元形狀集,而是根據需要將字元形狀新增至紋理圖集,無論使用的背景為何。這應可縮短第一次終端機啟動時間和未使用預設背景之字元的渲染時間,並改善整體渲染效能。
這是作為對 xterm.js 的上游社群貢獻而來的。
語言
TypeScript 3.0
VS Code 現在隨附 TypeScript 3.0.1。此主要更新帶來了專案參考支援、更佳的 Tuple 支援,以及其他語言和工具功能。您可以在這裡閱讀有關 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+按一下
) 快速導覽 jsconfig.json
和 tsconfig.json
專案參考
extends
路徑現在也可按一下。
偵錯
改良的停止偵錯行為
在先前的版本中,偵錯:停止動作 (在偵錯工具列上找到) 一律會立即終止偵錯工具及其子程序,而不會讓偵錯工具有機會正常清除。某些使用者不喜歡此行為,因為他們在停止偵錯工作階段後被迫執行手動清除。
在此版本中,我們以下列方式改善了 偵錯:停止動作
-
第一次按下停止時,不再立即終止偵錯工具,而是要求其正常關機 (並視需要清除所有項目)。
-
如果關機程式碼中沒有中斷點 (或問題),偵錯工具和偵錯工作階段將會終止。使用者不會看到與先前版本的 VS Code 有任何行為差異。
-
但是,如果偵錯工具在關機程式碼中遇到中斷點,或偵錯工具本身未正確終止,則偵錯工作階段將不會結束。
-
在此情況下,再次按下停止按鈕將會強制終止偵錯工具。因此,如果您看到偵錯工作階段在您按下紅色停止按鈕時未結束,請再次按下按鈕以強制關閉偵錯工具。
注意:只有已選擇實作此功能的偵錯工具擴充功能才支援此功能。目前只有內建的 Node.js 偵錯工具。我們預期其他偵錯工具擴充功能很快就會支援此功能。
Node/Chrome 偵錯的智慧逐步行為已變更
先前,"smartStep": true
會導致 Node.js 偵錯工具不會在沒有來源地圖的原始碼中停止。這可能會以兩種方式發生
- 完全沒有來源地圖的檔案 (未轉換的原始碼或隨附於 node 模組的 .js 檔案)。
- 已轉換的檔案確實有來源地圖,但有未對應的個別行 (TypeScript 在向下編譯某些功能 (例如 async/await) 時插入的額外行)。
在 VS Code 1.26 中,"smartStep": true
只會影響第二種類型,即來源地圖中遺失的行。現在您可以逐步執行 .js 檔案,同時仍略過 TS async/await 程式碼。
我們變更此設定是因為我們意識到舊的智慧逐步行為太過激進。略過插入的程式碼通常是正確的,但略過第一種案例只對某些專案和使用者有意義。此外,在您的 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
而不是 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
物件。DefinitionLink 提供相較於正常 location 定義的其他中繼資料,包括定義符號的範圍
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 結構描述的人員,都應將其原始碼更新為新位置
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 現在可以提供自訂圖示,該圖示會顯示在索引標籤列和開啟的編輯器檢視中
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
node 模組不再運作 (請參閱 #47569)。- 舊版的偵錯協定和
--debug
旗標不再支援 (請參閱 #55907)。 - 如果以 Node.js 撰寫並使用 stdio 作為傳輸方式的語言伺服器在 VS Code 1.26 中遇到問題,則使用 LSP client 和 server 程式庫的擴充功能作者的修復方法是將傳輸方式切換為
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): 移除「在終端機中開啟」命令上的特定作業系統文字。 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): 新增手動新增存放庫的選項 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 不適用於不透明來源 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。