2020 年 5 月 (版本 1.46)
更新 1.46.1:此更新解決了這些 問題。
下載:Windows:x64 Arm64 | Mac:Intel | Linux:deb rpm tarball snap
歡迎使用 Visual Studio Code 2020 年 5 月發行版本。
- 協助工具改善 - 狀態列導覽、更輕鬆的鍵盤文字選取。
- 彈性檢視和面板版面配置 - 在側邊欄和面板中移動和群組檢視。
- 釘選編輯器索引標籤 - 在標題列中釘選編輯器,以方便取用常用檔案。
- 從 GitHub 新增遠端 - 將 GitHub 遠端新增至您的本機存放庫。
- 自動偵錯工具組態改善 - 儲存和修改產生的偵錯組態。
- JavaScript CommonJS 自動匯入 - 自動匯入現在將為 CommonJS 模組使用
require
。 - JS/TS 重構保留換行符號 - 在重構作業期間保留格式設定。
- 設定同步預覽 - 新的「同步機器」和「資料」檢視可管理您的喜好設定。
- GitHub Issue Notebooks - 執行 GitHub Issue 查詢,並在自訂 Notebook 中顯示結果。
- Windows ARM64 支援 - 新的 VS Code Insiders ARM64 組建已推出。
- Build 2020 的 VS Code - 關於秘訣與訣竅、遠端開發和 VS Code 歷史的演講。
如果您想要在線上閱讀這些版本資訊,請前往 更新,網址為 code.visualstudio.com。
協助工具
在這個里程碑中,我們再次收到來自社群的實用意見反應,讓我們能夠找出並處理許多 協助工具問題。
- 狀態列現在支援鍵盤導覽。當焦點位於狀態列中時,透過 [焦點移至下一個部分] (F6),方向鍵導覽會在狀態列項目之間移動。
- 為了讓您更輕鬆地使用鍵盤開始和結束選取範圍,現在有四個新命令
- 設定選取錨點 (⌘K ⌘B (Windows、Linux Ctrl+K Ctrl+B))
- 從錨點選取到游標 (⌘K ⌘K (Windows、Linux Ctrl+K Ctrl+K))
- 取消選取錨點 (Escape)
- 移至選取錨點
- 活動列項目現在具有
tab
角色,並設定適當的aria-expanded
狀態。 - 編輯器的 Aria 標籤現在會正確傳達下列編輯器狀態:
pinned
、preview
和readonly
。
工作台
彈性版面配置
在數個反覆運算中,我們已宣布在讓我們的版面配置更具彈性方面取得進展。在此版本中,這組功能現在已準備好供一般使用。以下是這些功能的概觀。
在側邊欄和面板之間移動檢視
您可能偏好將側邊欄中的檢視放在面板中,反之亦然。若要執行此動作,您現在可以從檢視的標頭或整個群組的圖示或標題拖曳檢視,並將其移動到所需的位置。透過鍵盤,可以使用 [檢視: 移動檢視] (workbench.action.moveView
) 和 [檢視: 移動焦點檢視] (workbench.action.moveFocusedView
) 命令。
以下示範將 [搜尋] 拖曳至面板,並將 [問題] 拖曳至側邊欄。
將 [搜尋] 拖曳至面板,並將 [問題] 拖曳至活動列
佈景主題:GitHub Light
先前有一個設定可將 [搜尋] 檢視從側邊欄移至面板,而現在該設定已過時,因為可以使用拖放來取代。
群組檢視
您可能也想要將來自不同擴充功能的一些檢視群組在一起,或者您覺得內建檢視的預設群組不太適合您。您可以將檢視移動到現有的群組中,或為選定的檢視集合建立新的群組。這與之前一樣,可在側邊欄和面板之間運作。以下是一些範例。
將 [時間軸] 檢視從 [檔案總管] 拖曳至 [原始碼控制]
將 [監看式] 檢視從 [執行] 側邊欄拖曳至面板中的 [偵錯主控台] 旁
在側邊欄和面板中建立具有 [時間軸] 和 GitLens 的自訂歷程記錄群組
佈景主題:GitHub Light
重設檢視位置
檢視和檢視群組可以透過其操作功能表重設為預設位置。當檢視從其預設位置移動時,將會有一個 [重設位置] 項目可將其移回原位。也有 [檢視: 重設焦點檢視位置] (workbench.action.resetFocusedViewLocation
) 和 [檢視: 重設檢視位置] (workbench.action.resetViewLocations
) 命令,可將所有檢視和群組重設回其預設位置。
適用於貢獻檢視或檢視容器的擴充功能作者
當檢視在工作台中四處移動時,有時需要以不同的方式呈現,無論是使用圖示或額外內容 (如果它們不在預設位置)。當貢獻檢視時,作者現在可以提供 icon
屬性和 contextualTitle
。如果未提供,這些屬性將預設為它們所貢獻的檢視容器的圖示和標題。
最後,擴充功能作者現在可以開始直接將檢視容器貢獻到 panel
,而不是 activitybar
,如 樹狀檢視擴充功能指南中所述。
釘選索引標籤
您現在可以從操作功能表或使用新的命令 workbench.action.pinEditor
(⌘K ⇧Enter (Windows、Linux Ctrl+K Shift+Enter)) 來釘選索引標籤。
佈景主題:GitHub Light
釘選的索引標籤具有許多實用功能,可協助標記對您重要的檔案
- 釘選的索引標籤一律會顯示在未釘選的索引標籤之前。
- 如果您開啟許多索引標籤,它們不會捲動到檢視畫面外。
- 使用 [關閉其他] 等命令時,它們不會關閉。
- 即使您超過已開啟編輯器的設定限制,它們也不會關閉。
您也可以拖放索引標籤來變更釘選狀態。
釘選的索引標籤在視覺上會縮小為圖示的大小 (或在停用圖示時顯示檔案名稱的第一個字母) 以節省空間。如果您想要在釘選的索引標籤中看到 [已變更] 指示項,您可以設定 workbench.editor.highlightModifiedTabs: true
。
注意:我們仍在思考呈現釘選索引標籤的其他方式。如果您有任何意見,請隨時在現有的問題中分享您的想法,以 顯示次要索引標籤列 或具有 設定以顯示釘選索引標籤的更多內容。
搜尋編輯器
有幾個新選項可用於設定如何建立 搜尋編輯器
search.searchEditor.defaultNumberOfContextLines
- 設定搜尋編輯器預設顯示的內容行數。search.searchEditor.reusePriorSearchConfiguration
- 在建立新的搜尋編輯器時,重複使用最後一個作用中搜尋編輯器的組態。- 支援在按鍵繫結引數中傳遞搜尋編輯器組態變數 (參數詳細資料)。
檔案總管自動顯示焦點,而不會強制捲動
explorer.autoReveal
設定有一個新的選項 focusNoScroll
。使用此選項時,檔案總管會在開啟檔案時自動選取檔案,但不會捲動以在檔案總管檢視中顯示它們。
清單和樹狀結構的平滑捲動
啟用 workbench.list.smoothScrolling
設定將使在缺乏平滑捲動的硬體 (例如,Windows 上的離散滑鼠滾輪) 中清單和樹狀結構的捲動更為平滑。
分隔條大小組態
您現在可以使用 workbench.sash.size
設定來設定檢視/編輯器之間拖曳區域的意見反應區域大小 (以像素為單位)。如果您覺得很難使用滑鼠調整檢視大小,請將其設定為較大的值。
螢幕廣播模式字型大小
新的 screencastMode.fontSize
設定可讓您設定螢幕廣播模式中使用的字型大小 (以像素為單位)。
受信任的連結保護
VS Code 現在允許直接開啟工作區中任何 GitHub 遠端的 URL 連結。此外,如果您已使用 GitHub 登入,則會信任所有連至您 GitHub 個人檔案下頁面的連結。
編輯器
跨檔案復原已關閉的檔案
現在可以跨檔案復原,即使檔案已在這段期間關閉。已編輯的檔案將會重新開啟,且跨檔案作業 (例如重新命名符號) 將會在所有受影響的檔案中復原。
不尋常的行終止符
VS Code 目前將 CR (歸位字元)、LF (換行字元) 和 CRLF 辨識為行終止符。某些程式設計語言對於構成行終止符的內容有不同的定義。這因語言而異,例如 LS (行分隔符) 和 PS (段落分隔符) 是 C# 和 JavaScript 中的行終止符,但在 HTML、PHP 或 Java 中則不是。當 VS Code 與語言伺服器通訊時,這些行尾差異可能會造成問題,因為各種概念會在 VS Code 與語言伺服器之間使用 (行;字元)
座標進行通訊。如果行終止符的定義不同,則可能會導致檔案中行和位置的不同對應。
開啟檔案時,VS Code 現在會檢查開啟的檔案中是否出現 LS 或 PS,並會提示並要求允許移除這些字元。這些不尋常的行終止符在實務上很少見,而且很可能是透過複製貼上意外插入原始碼中。
整合式終端機
改良的連結支援
上個月整合式終端機連結預覽已取代舊的實作。新的連結實作現在啟用
- 改良的 Web 和
file://
連結偵測,透過使用編輯器的連結偵測。 - 資料夾連結支援,在檔案總管中開啟資料夾或開啟新的 VS Code 視窗。
- 不同連結類型的不同連結動作,回復為搜尋工作區的「字詞」連結 (根據
terminal.integrated.wordSeparators
設定)。 - 與編輯器類似的連結醒目提示和暫留體驗。
佈景主題:Topaz (Dim)
工作
持續進行最近的工作效能改善,[執行建置工作] 將不再總是要求擴充功能提供其工作。如果您在資料夾的 tasks.json
中設定了預設建置工作,[執行建置工作] 將只會嘗試解析該工作,而不是在執行預設建置工作之前從所有擴充功能尋找所有工作。
原始碼控制
在終端機中開啟
您現在可以從 [原始碼控制] 檢視中的操作功能表在終端機中開啟存放庫。
從 GitHub 新增遠端
您現在可以使用 [Git: 新增遠端...] 命令,將 GitHub 存放庫新增為本機存放庫的遠端。
發佈至 GitHub 時產生 .gitignore
現在可以將工作區發佈至 GitHub 時產生 .gitignore
檔案。將工作區發佈至 GitHub 時,系統會提示您選取要包含在存放庫中的檔案,而未包含的檔案將會新增至 .gitignore
檔案。
輸入欄位字型系列
您現在可以使用 [Scm: 輸入字型系列] 設定來自訂 [原始碼控制] 輸入欄位中使用的字型系列。此設定支援下列值
default
- 工作台使用者介面字型系列。editor
- [編輯器: 字型系列] 設定中指定的字型系列。font family name
- 要在輸入欄位中使用的字型系列名稱 (例如,Cascadia Code
)。
中止進行中的變基
您現在可以使用 [Git: 中止變基] 命令來中止進行中的變基作業。
偵錯
自動偵錯工具組態改善
在這個里程碑中,我們改善了自動偵錯工具組態的體驗
-
在上一個里程碑中,我們推出了一項功能,讓擴充功能作者可以分析目前的專案並自動提供偵錯組態。這些偵錯組態是動態建立的,因此它們不會顯示在
launch.json
組態檔中。只要它們能立即運作,就很好,但有時您可能需要修改組態,例如新增額外的引數。現在有一個選項可將自動偵錯工具組態儲存到launch.json
中,以便開啟以進行編輯。若要執行此動作,請使用 [偵錯: 選取並開始偵錯] 快速選取中的自動偵錯工具組態結尾的齒輪按鈕 -
現在可以從 [執行和偵錯] 開始檢視中顯示所有自動偵錯工具組態。
-
[偵錯] 下拉式功能表現在會記住先前選取的自動偵錯工具組態。
逐步執行目標
偵錯具有許多巢狀函式呼叫的陳述式可能很麻煩,因為您可能必須逐步執行您不感興趣的函式。為了改善此案例,偵錯介面卡協定已支援「逐步執行目標」功能,該功能會顯示 UI 以直接逐步執行您感興趣的函式。
在這個里程碑中,VS Code 已開始使用此功能。當偵錯在陳述式上停止時,操作功能表會顯示新的動作 [逐步執行目標]。此動作會顯示目前堆疊框架中所有可用目標 (通常是函式) 的清單。選取其中一個將逐步執行該目標。
請注意,每個堆疊框架都可以有自己的目標集。因此,[逐步執行目標] 動作的結果取決於 [呼叫堆疊] 檢視中目前選取的框架。
目前,只有 Mock Debug 擴充功能具有 (虛擬) [逐步執行目標] 支援,但很快就會有其他偵錯擴充功能跟進,例如 Julia 偵錯工具。
語言
TypeScript 3.9
VS Code 現在包含 TypeScript 3.9.4。此主要 TS 更新帶來了一些新的工具功能、效能改善和許多錯誤修正。您可以在 TypeScript 部落格上閱讀更多關於 TS 3.9 的資訊。
CommonJS 自動匯入
如果 VS Code 偵測到您正在 CommonJS 樣式的 JavaScript 模組中工作,自動匯入現在將使用 require
而不是 import
。
重構保留換行符號
JavaScript 和 TypeScript 的重構 (例如 [擷取至方法] 和 [移動到新檔案]) 現在嘗試保留重構原始碼的原始格式設定。這包括選取範圍中存在的任何換行符號
新增所有遺失的匯入來源動作
長期以來,VS Code 一直支援快速修正,以新增 JavaScript 或 TypeScript 檔案中所有遺失的匯入。在這個反覆運算中,我們推出了新的 [新增所有遺失的匯入] 來源動作,讓您可以從檔案中的任何位置觸發此動作。
這也讓您可以為 [新增所有遺失的匯入] 設定按鍵繫結
{
"key": "ctrl+shift+i",
"command": "editor.action.sourceAction",
"args": {
"kind": "source.addMissingImports",
"apply": "first"
}
}
或甚至在儲存時啟用 [新增所有遺失的匯入]
"editor.codeActionsOnSave": [
"source.addMissingImports"
]
JS/TS [移至工作區中的符號] 包括所有開啟的專案
根據預設,JavaScript 和 TypeScript 的 工作區符號搜尋 現在會搜尋所有開啟的 jsconfig
和 tsconfig
專案。它先前只包含來自焦點檔案所屬專案的搜尋結果。
此行為由 typescript.workspaceSymbols.scope
設定控制,且需要 TS 3.9+。若要回復到先前的行為並僅搜尋目前的專案,請設定 "typescript.workspaceSymbols.scope": "currentProject"
新增遺失的匯入快速修正現在可以標示為慣用
JavaScript 和 TypeScript 的 [新增遺失的匯入] 快速修正現在可以標示為錯誤的慣用修正。這可讓您使用單一按鍵 (⌥⌘. (Windows、Linux Shift+Alt+.)) 新增遺失的匯入。
請注意,只有在有單一有效匯入時,[新增遺失的匯入] 才會標示為慣用修正。如果您的專案中有多個潛在匯入,您仍然需要使用一般的 [程式碼動作] 功能表來選取要使用的匯入。此外,若要在 JavaScript 中啟用 [新增遺失的匯入] 快速修正,您必須啟用類型檢查。
JSON 離線模式
新的設定 json.schemaDownload.enable
可讓您控制是否允許 JSON 擴充功能從 http
和 https
提取 JSON 結構描述。
當目前的編輯器想要使用無法下載的結構描述時,狀態列中會出現警告三角形。然後,以結構描述為基礎的功能 (例如驗證、程式碼完成和暫留) 將會受到限制。
瀏覽器支援
索引標籤標題中的偵錯已停止指示項
在瀏覽器中偵錯擴充功能時,偵錯的擴充功能會顯示在新的瀏覽器索引標籤中,該索引標籤會停用 (隱藏) 偵錯工具索引標籤。當 debuggee 因某些原因停止時 (例如,遇到中斷點),我們無法啟動偵錯工具索引標籤 (因為瀏覽器未提供 API 來執行此動作)。這使得幾乎不可能發現偵錯的擴充功能已停止。
為了減輕此問題,我們現在會更新索引標籤標題以包含紅色圓圈指示項 🔴 (類似中斷點)。一旦啟動偵錯工具索引標籤,紅色點就會移除。
從整合式終端機執行 VS Code
當您在瀏覽器中執行的 VS Code 中開啟整合式終端機時,您可以輸入 code
以存取數個實用的命令,這些命令都可在瀏覽器中運作。
在這個反覆運算中,我們擴充了對許多選項的支援
--goto
可在特定行開啟檔案--diff
可比較兩個檔案--wait
可讓程式等待檔案關閉--add
可將資料夾新增至目前的工作區
例如,在 GitHub Codespaces 中,這可讓您將以瀏覽器為基礎的 VS Code 用作 Git 的編輯器
佈景主題:GitHub Light
檔案/資料夾上傳
VS Code 可讓您將檔案拖放到檔案總管中以上傳它們。在這個反覆運算中,我們改善了此功能,讓您可以拖放資料夾以上傳它們,包括所有子資料夾和檔案。由於這可能是長時間執行的作業,因此您會在狀態列中看到報告的進度,而且您可以視需要取消作業。
帳戶管理
在先前的版本中,我們推出了新的帳戶管理 UI 預覽以及設定同步功能的預覽。現在,此 UI 將預設顯示。使用新的建議 驗證提供者 API 的擴充功能可以在此顯示登入要求,而且您可以檢視您的帳戶並管理擴充功能存取權。目前只有少數擴充功能使用此 API,一旦 API 穩定,我們將致力於提高採用率。
預覽功能
預覽功能尚未準備好發行,但功能已足夠使用。我們歡迎您在開發期間提供早期意見反應。
設定同步
在過去幾個月中,我們一直致力於支援跨機器同步 VS Code 喜好設定,而此功能可在 Insiders 版本上預覽。
在這個里程碑中,我們增強了對管理和診斷設定同步的支援。
同步機器檢視
我們新增了 [同步機器] 檢視,以顯示同步 VS Code 喜好設定的機器清單。預設名稱是根據 VS Code 的類型 (Insiders 或 Stable) 和您使用的平台提供,但您隨時可以使用檢視中機器項目上提供的編輯動作來更新名稱。
佈景主題:具有自訂的 GitHub Sharp
您可以使用 [喜好設定同步: 顯示同步資料] 命令 (從命令選擇區) 開啟此檢視。
同步資料檢視
我們將下列增強功能新增至 [同步資料] 檢視。
- 您現在可以看到資料同步來源的機器。
- 您可以使用檢視中資料項目上提供的 [還原] 動作來還原至特定狀態。
- 您可以使用檢視標頭中 [更多動作] (...) 按鈕下的 [重設同步資料] 動作來重設雲端上的資料。
佈景主題:具有自訂的 GitHub Sharp
我們現在在開啟同步時提供更多協助,方法是檢查您是否即將與來自不同機器的資料同步,並允許您採取適當的動作。
- 取代本機 - 將您目前機器上的資料取代為來自雲端的同步資料。
- 合併 - 將您目前機器上的資料與來自雲端的同步資料合併。
- 顯示同步資料 - 開啟 [同步資料] 檢視以查看來自雲端的同步資料。
新的 JavaScript 偵錯工具
這個月,我們繼續在新 JavaScript 偵錯工具上取得進展。自 5 月中以來,它已成為 Insiders 上的預設偵錯工具,並包含在此版本中的 VS Code Stable 上 (但預設未啟用)。您可以透過啟用 debug.javascript.usePreview
設定,開始將其與您現有的啟動組態搭配使用。
這個月的進展主要集中在修飾和穩定現有的功能
- 瀏覽器偵錯的多索引標籤支援:您現在可以在執行瀏覽器或 WebView 時附加至多個索引標籤。根據預設,js-debug 會附加至所有符合
urlFilter
的索引標籤。在附加至瀏覽器時,您可以在啟動組態中設定"targetSelection": "pick"
,以連線到單一索引標籤,如同先前的偵錯工具一樣。 - 改良的索引標籤消除歧義:偵錯工作階段名稱更準確地消除了多個索引標籤的歧義。此外,我們在 [呼叫堆疊] 檢視中為偵錯工作階段新增了 [焦點索引標籤] 動作,您可以使用該動作來確保您正在查看正確的頁面。
- 自動展開 getter 的選項:為了符合 Chrome 的行為,屬性 getter 預設不會在 [變數] 檢視或 [偵錯主控台] 中顯示時評估。您現在可以透過設定
debug.javascript.autoExpandGetters
選項來設定此行為。 - webpack 組合類型的效能改善:某些類型的 webpack 組合 (使用
eval
來源對應所建置的組合) 在 js-debug 下執行速度緩慢。它們不再這樣做了。
TS 4.0 每夜組建支援
VS Code 1.46 包含 TypeScript 4.0 每夜組建的預覽支援。每夜組建包含對我們正在積極開發的一些新工具功能的支援,例如 更彈性的重構選取。
您今天可以透過安裝 TypeScript Nightly 擴充功能來試用 TypeScript 4.0 每夜組建。請分享意見反應,並讓我們知道您是否遇到任何 TypeScript 4.0 的錯誤。
擴充功能貢獻
Notebooks
快速大綱
Notebook 擴充功能 (例如 GitHub Issue Notebooks) 現在支援快速大綱。按下 kb('workbench.action.gotoSymbol')
,或使用 [移至編輯器中的符號] 命令,並查看目前 Notebook 的所有 Markdown 和程式碼儲存格的預覽。
佈景主題:GitHub Theme
錯誤和符號導覽
我們已改善 F8
和 [尋找所有參考] 的運作方式。所有程式碼導覽手勢都應該感覺像在 Notebooks 外部一樣自然。例如,[問題] 檢視現在會顯示依 Notebook 分組的所有儲存格的所有錯誤,而不是再依儲存格分組
佈景主題:GitHub Theme
加入/分割儲存格
我們推出了兩組命令,讓您可以快速加入儲存格或將儲存格分割成較小的片段
佈景主題:GitHub Dark Theme
保留的 Notebook
釘選或已變更的 Notebook 編輯器現在會持續存在於工作區中,因此如果 Notebook 移至背景或移至另一個編輯器群組,使用者將不會遺失 Notebook 中的工作狀態。
佈景主題:GitHub Dark Theme
統一的復原/取消復原堆疊
使用者操作操作 Notebook 儲存格或修改 Notebook 儲存格內容現在會在相同的復原/取消復原堆疊中追蹤。
佈景主題:GitHub Dark Theme
GitHub Pull Requests and Issues
在 GitHub Pull Requests and Issues 擴充功能上持續進行工作,該擴充功能可讓您處理、建立和管理提取要求和 Issue。此版本的某些更新包括
- 改良 Issue 暫留中的標籤。
- Issue 和使用者建議現在只會在註解和純文字中觸發。
- 新的 Issue 編輯器可讓您設定受託人和標籤。
若要深入瞭解所有新功能和更新,您可以查看擴充功能 0.17.0 版本的完整變更記錄。
遠端開發
在 遠端開發擴充功能上持續進行工作,該擴充功能可讓您使用容器、遠端機器或 Windows Subsystem for Linux (WSL) 作為功能完整的開發環境。
1.46 中的新功能包括
- 開發容器:支援 GPG 轉送。
- 開發容器:支援檢查 Docker 磁碟區。
- 開發容器:新的
devcontainer.json
命令屬性。
您可以在 遠端開發版本資訊中瞭解新的擴充功能功能和錯誤修正。
Hex Editor
隨著自訂編輯器 API 完成並支援 二進位編輯器,我們開發了 Hex Editor 擴充功能,以提供原生十六進位編輯體驗。
此擴充功能仍在開發中,目前僅支援以十六進位開啟和導覽檔案。我們將繼續致力於導覽體驗,然後繼續支援編輯。您可以試用此擴充功能,並針對 vscode-hexeditor 存放庫提供意見反應或提出 Issue。
擴充功能撰寫
檔案路徑大小寫
我們修正了幾個與 VS Code 如何處理不區分大小寫檔案系統上的路徑和 URI 相關的錯誤。在此版本之前,具有不同大小寫的路徑不會開啟相同的檔案,而是個別、中斷連線的檔案。該行為經常造成混淆,有時甚至會造成資料遺失。
但是,在修正這些錯誤時,openTextDocument
函式的行為已變更。函式現在可以傳回具有 URI 的檔案,其大小寫與傳入的 URI 不同。這表示擴充功能應該使用 TextDocument#uri 作為事實來源,而不是它們要求的 URI。
以下範例說明新的行為
// case-insensitive file system
const uriA = vscode.Uri.file('/foo/bar.code');
const docA = await vscode.workspace.openTextDocument(uriA);
const uriB = vscode.Uri.file('/foo/BAR.code');
const docB = await vscode.workspace.openTextDocument(uriB);
assert.ok(docA === docB); // same document
assert.ok(docB.uri.toString() === uriA.toString()); // uriA is used, NOT uriB
assert.ok(docB.uri.toString() !== uriB.toString());
新的偵錯主控台佈景主題色彩
有新的色彩可用於設定偵錯主控台檢視的樣式
debugConsole.infoForeground
:偵錯主控台中資訊訊息的前景色彩debugConsole.warningForeground
:偵錯主控台中警告訊息的前景色彩debugConsole.errorForeground
:偵錯主控台中錯誤訊息的前景色彩debugConsole.sourceForeground
:偵錯主控台中來源檔案名稱的前景色彩debugConsoleInputIcon.foreground
:偵錯主控台輸入標記圖示的前景色彩
新的輸入佈景主題色彩
我們也為輸入選項新增了色彩主題選項。您可以使用 inputOption.activeForeground
設定啟用輸入選項的前景顏色。這些選項會顯示在「搜尋」檢視和「尋找」小工具(編輯器、終端機、偵錯主控台)中。
佈景主題:GitHub Dark Theme
新的 codicon 圖示
我們在 codicon 程式庫中新增了以下新圖示
server-process
server-environment
record
pass
stop-circle
play-circle
佈景主題:GitHub Dark Theme
提供者使用泛型型別
我們的 vscode.d.ts
型別定義現在讓所有兩階段提供者(具有個別的 'provide' 和 'resolve' 方法的提供者)都成為泛型。目標是更清楚地表明,從 'provide' 呼叫傳回的結果會傳遞到 'resolve' 呼叫中。
例如,以下是 DocumentLinkProvider
新的泛型定義
export interface DocumentLinkProvider<T = DocumentLink> {
provideDocumentLinks(
document: TextDocument,
token: CancellationToken
): ProviderResult<T[]>;
resolveDocumentLink?(link: T, token: CancellationToken): ProviderResult<T>;
}
所有提供者都有預設的泛型引數,因此這項變更不應導致您現有的擴充功能發生任何錯誤。如果您先前在實作 'resolve' 時使用類型轉換或類型檢查,請考慮更新您的程式碼以改用泛型提供者
class MyDocLinkProvider implements DocumentLinkProvider<MyDocumentLink> {
provideDocumentLinks(document: TextDocument, token: CancellationToken): MyDocumentLink[] { ... }
resolveDocumentLink(link: MyDocumentLink, token: CancellationToken): MyDocumentLink { ... }
}
在 WebView 中撰寫主題特定的 CSS
WebView 的 body 元素有一個新的資料屬性,名為 vscode-theme-name
,用於儲存目前使用中主題的完整名稱。這讓您可以在 WebView 中撰寫主題特定的 CSS
body[data-vscode-theme-name="One Dark Pro"] {
background: hotpink;
}
請記住,鑑於 VS Code 可用的主題數量,您應該僅在特殊情況下撰寫主題特定的 CSS。一般的 WebView 應改為使用 .vscode-light
和 .vscode-dark
類別名稱,以及 VS Code CSS 變數,以撰寫可適應使用者所選主題的 CSS。
自訂二進位編輯器
我們已完成自訂二進位編輯器的 API。自訂編輯器 API 讓擴充功能可以建立基於 WebView 的自訂編輯器,這些編輯器可以取代 VS Code 的預設文字編輯器,或讓使用者切換使用。這可以用於直接在 VS Code 中預覽資產檔案,例如影像或 3D 模型,或為特定檔案類型建立更專業的編輯介面。透過新的二進位自訂編輯器 API,您現在也可以為非文字型檔案格式建立讀/寫編輯器。
自訂編輯器擴充功能指南更詳細地介紹了此 API。另請查看 自訂編輯器擴充功能範例,其中包含文字和二進位檔案格式的自訂編輯器範例。
放寬 resolveCompletionItem 的限制
CompletionItemProvider#resolveCompletionItem 函數允許提供者延遲地使用更多資料來豐富完成項目。此「延遲」資料必須是選用的,且不得變更完成項目的插入行為。擴充功能仍然可以填入 additionalTextEdits
,如果額外的編輯在完成項目插入之後才到達,編輯器仍然會嘗試套用它們。請注意,這僅適用於額外的編輯,不適用於主要編輯 (insertText
),主要編輯一旦提供就不得變更。
onStartupFinished 啟動事件
我們現在有一個新的啟動事件,類似於現有的 *
啟動事件。當擴充功能希望在 VS Code 啟動後不久啟動,但不是在啟動期間啟動時,應使用新的 onStartupFinished
啟動事件。
環境變數集合
ExtensionContext.EnvironmentVariableCollection
API 現在已穩定,並允許擴充功能貢獻於終端機環境。
const collection = context.environmentVariableCollection;
const separator = process.platform === 'win32' ? ';' : ':';
collection.prepend('PATH', `/foo${separator}`);
collection.replace('JAVA_HOME', '/bar');
這些集合是擴充功能和工作區特定的,而 VS Code 會處理多個擴充功能之間衝突的處理方式。它們會跨視窗重新載入持續保存,以便在視窗載入後立即建立的終端機不會因為擴充功能主機啟動而受到阻礙,而是使用最後已知的版本。這些持續保存的集合會在處置集合或解除安裝擴充功能時移除。
當集合變更時,終端機上會出現指示器。此指示器是否顯示任何作用中的變更,或僅顯示「過時」的終端機,由 terminal.integrated.environmentChangesIndicator
設定定義。此 API 現在也由內建的 Git 擴充功能使用,讓 VS Code 成為驗證提供者。
偵錯介面卡協定
新的指令斷點
有一種新的「指令」斷點類型,可以讓您在記憶體位址的指令上中斷。記憶體位址以符號形式指定,可選擇性地從 evaluate
、variables
、stackTrace
和 gotoTargets
請求中取得。相應的功能 supportsInstructionBreakpoints
指示偵錯配接器是否支援指令斷點。
支援「步進粒度」
新的選用 granularity
引數已新增至步進請求 next
、stepIn
、stepOut
、stepBack
,以控制請求是步進「語句」、「行」還是「指令」。相應的功能 supportsSteppingGranularity
指示偵錯配接器是否支援此功能。
建議的擴充功能 API
每個里程碑都附帶新的建議 API,擴充功能作者可以試用它們。與往常一樣,我們希望收到您的意見反應。以下是您試用建議 API 必須執行的操作
- 您必須使用 Insiders 版本,因為建議 API 經常變更。
- 您必須在擴充功能的
package.json
檔案中加入這一行:"enableProposedApi": true
。 - 將最新版本的 vscode.proposed.d.ts 檔案複製到專案的原始碼位置。
請注意,您無法發佈使用建議 API 的擴充功能。下一個版本中可能會出現重大變更,而我們絕不希望破壞現有的擴充功能。
Git 擴充功能 API
內建的 Git 擴充功能 提供 API 供擴充功能使用。現有的 API 公開了一種取得 Repository
的 log
結果的方法。更新後的 API 現在將允許 log
受 path
限制。
export interface LogOptions {
readonly maxEntries?: number;
readonly path?: string;
}
export interface Repository {
log(options?: LogOptions): Promise<Commit[]>;
}
現在也有一個 Git 擴充功能 API 可根據 BranchQuery
取得 getBranches
export interface BranchQuery {
readonly remote?: boolean;
readonly contains?: string;
}
export interface Repository {
getBranches(query: BranchQuery): Promise<Ref[]>;
}
AccessibilityInformation
我們已將 AccessibilityInformation
新增至 TreeItem
、StatusBarItem
和 TimelineItem
元素,以支援螢幕閱讀器。AccessibilityInformation
包含 label
和 role
。label
由螢幕閱讀器讀取,而 role
描述元素的協助工具特性。
工程
Windows ARM64 Insiders
適用於 Windows ARM 64 位元的新官方 Insider 組建已推出,可在 Insiders 下載頁面上取得。
這些組建適用於 Microsoft Surface Pro X,請試用看看,並告訴我們您的想法。
--crash-reporter-directory 引數,用於診斷問題
新的命令列引數 --crash-reporter-directory
允許您傳遞要儲存損毀報告的本機資料夾。這甚至適用於擴充功能主機中的損毀,並且可以在 VS Code 損毀且您想要回報問題時使用。
預先載入腳本
我們已將 Electron preload
腳本新增至 VS Code,以便將某些 Electron API 公開給視窗。這是朝向完全沙箱化視窗邁出的第一步。進度概述於 issue #92164 中。
擴充功能範例現在使用 ESLint
我們的 擴充功能範例 都已更新為使用 ESLint 進行程式碼檢查,而不是現在已棄用的 TSLint。如果您的擴充功能仍在使用 TSLint,您可以查看 TSLint 至 ESLint 移轉指南和我們新更新的擴充功能範例,以了解如何移轉至 ESLint。
GitHub Triage 擴充功能
我們為基於 Chromium 的瀏覽器建立了一個擴充功能,以協助我們在 GitHub 上進行問題分類,方法是提供一個單一的模糊篩選選單,其中包含受讓人、標籤、里程碑以及我們用來觸發分類 GitHub Actions 的各種特殊註解。我們已在 GitHub 上 開放原始碼。
文件與擴充功能
Build 大會上的 Visual Studio Code
VS Code 團隊在 Microsoft Build 2020 大會上進行了演講,您可以在這篇 VS Code at Build 部落格文章中找到 VS Code 相關議程和線上講座的概述。
VS Code 團隊成員的幾場講座
- VS Code 提示與技巧 - 20 個讓您在使用 VS Code 時更有效率的提示與技巧。
- 每個 Visual Studio Code 使用者都應該知道的 GitHub 資訊 - 了解 VS Code 的 GitHub 整合,適用於 PR 和問題。
- 使用 Visual Studio Code 進行遠端開發 - 了解 Visual Studio Code 如何讓開發人員能夠從任何地方遠端工作。
- Visual Studio Code 的歷史 - 了解 VS Code 如何開始並發展到今天。
Azure 擴充功能
有幾個新的擴充功能可用於直接從 VS Code 內工作和部署 Azure 資產。
- Azure Static Web Apps - 直接從 VS Code 建立和管理 Azure Static Web Apps。
- Azure Databases - 在 Azure 中建立、瀏覽和更新全球分散式、多模型的資料庫。
新命令
按鍵 | 命令 | 命令 ID |
---|---|---|
⌘K ⇧Enter (Windows、Linux Ctrl+K Shift+Enter) | 釘選編輯器 | workbench.action.pinEditor |
⌘K ⇧Enter (Windows、Linux Ctrl+K Shift+Enter) | 取消釘選編輯器 | workbench.action.unpinEditor |
值得注意的修正
- 10144:在 Linux 上使用 system-ui 作為字型
- 63068:macOS Dock 圖示過小
- 69163:在側邊欄中顯示作用中檔案時擲回例外
- 95367:針對無效的 frameId 發出 DAP "evaluate" 請求
- 95856:「跳到行」應包含 "filename.extension:行號" 格式
- 96713:從呼叫堆疊動作檢視停止工作階段時,總是會跳到作用中的工作階段
- 96914:當大綱可見時,輸入會延遲
- 96987:Orca 無法讀取中斷點檢視中的行號
- 97444:從偵錯監看式複製長值會導致貼上部分值
- 97471:偵錯懸停視窗太窄且水平捲動無用
- 97731:VS Code 在輸入和捲動時凍結
- 96643:Tasks (和 TaskExecutions) 在 onDid(Start|End)Task 回呼中不是 ===
感謝您
最後但同樣重要的是,衷心感謝以下在本月為 VS Code 做出貢獻的人員
對問題追蹤的貢獻
- John Murray (@gjsjohnmurray)
- Andrii Dieiev (@IllusionMH)
- Alexander (@usernamehw)
- Simon Chan (@yume-chan)
- ArturoDent (@ArturoDent)
對 vscode
的貢獻
- AlexStrNik (@AlexStrNik)
- Andrew Branch (@andrewbranch):提案:允許使用 --inspect-brk 產生 TS Server PR #98340
- Christos Pappas (@ChrisPapp)
- @D-to-the-K:在 Monaco Monarch 語言定義中支援 Unicode 感知的正則表達式 PR #98447
- Rick van Galen (@DCKcode):Containerfile 支援 PR #93184
- Paul (@DFineNormal):修正 snippets.contribution.ts 中的拼字錯誤 PR #98396
- matt penrice (@elmpp):為架構化的檔案路徑建立 VsCodeResource PR #94986
- HaoboGu (@HaoboGu):修正 #98102 PR #98127
- HiDeoo (@HiDeoo):修正 vscode.d.ts 中的錯字 PR #98692
- Ilia Pozdnyakov (@iliazeus):新增
:line goto 模式 #95856 PR #96535 - Andrii Dieiev (@IllusionMH):修正偵錯圖示。使用 Codicons 而非文字 PR #98716
- Jack Works (@Jack-Works):更新 typescript.code-snippets PR #98521
- @Jagua:修正 json-language server readme 的縮排和錯字 PR #97812
- Jānis Gailis (@JanisGailis):將終端機色彩新增至 Monokai Dimmed 主題 PR #98323
- Jean Pierre (@jeanp413)
- John Keech (@jkeech):清除 WebView 上過時的 CSS 樣式屬性 PR #96665
- John Blackbourn (@johnbillion):將 *.ts.map 檔案視為 JSON PR #98409
- Robert Jin (@jzyrobert):#84696 修改 git add/revert 以使用 splitInChunks PR #84843
- Danny Lin (@kdrag0n):還原並修正 macOS 深色文字選取游標 PR #96947
- Leila Pearson (@leilapearson):修正檔案總管中檔案名稱排序順序的邊緣案例。 PR #97200
- Lissein (@lissein):修正 titleBar 主題色彩的註解 PR #97360
- Max (@MaxGyver83):讓 Neo 鍵盤配置 (第 4 層) 方向鍵在檔案總管檢視中運作 PR #98269
- Alasdair McLeay (@penx):CSS - 在父資料夾中搜尋節點模組解析 PR #81555
- Pieter Vanderpol (@petevdp):允許內嵌差異編輯器置中。 PR #97311
- Pascal Fong Kye (@pfongkye):修正:新增命令 stageAllMerge PR #97349
- James Koss (@phuein):不要捲動到顯示的檔案選項。 PR #96890
- Jack Platten (@plttn):修正錯字 PR #97198
- @ricksentam:變更組建 PR #98857
- Robert Rossmann (@robertrossmann)
- shskwmt (@shskwmt):功能 #94173:插入建議時捲動 PR #94327
- Steven Hermans (@steven166):在瀏覽器工作台中透過 D&D 上傳資料夾 PR #97347
- Rahul Kadyan (@znck):功能:針對註冊其他擴充功能的語言提供者使用 configNamespace PR #95621
- Jakub Trąd (@Dzejkop):搜尋編輯器:新增預設顯示內容值屬性 PR #97920
對 language-server-protocol
的貢獻
- (@KamasamaK)
- Knut Aldrin (@zub):修正 'aritfacts' 拼字 PR #980
- Remy Suen (@rcjsuen):修正 "revers" 的錯字為 "reverse" PR #995
- Steven Kalt (@SKalt):使用黏著式表格標頭 PR #1000
對 vscode-generator-code
的貢獻
- Alexey Elizarov (@beautyfree):修正:深色主題的 JSON 無效 PR #207
對 vscode-vsce
的貢獻
- Owen Farrell (@owenfarrell):支援從環境變數注入 PAT PR #447
對 debug-adapter-protocol
的貢獻
- @auott
- Vitalii Akimov (@awto):adapters.md 中的 Effectful JavaScript 偵錯工具參考 PR #113
- @tomcec:更新 adapters.md PR #115
- Andrew Wang (@WardenGnaw):更新 C/C++ DAP 維護者 PR #117
- FW (@fwcd):新增 Kotlin Debug Adapter PR #120
對 vscode-js-debug
的貢獻
- Vadym Okun (@cbmd):新增使用選定的套件管理器而非僅
npm
執行的可能性。 PR #459
對 localization
的貢獻
在過去一年中,我們仔細聆聽了您的意見反應,並決定是時候提供一個更可靠且互動式的平台,讓您可以為 VS Code 本地化開發做出貢獻。有鑑於此,我們在四月的第一週正式停用了 Microsoft Localization Community Platform (MLCP),目的是在另一個開放原始碼本地化專案的替代平台上繼續 Microsoft Community Localization Program。
請密切關注未來幾週內在我們的 Wiki 頁面上發布的有關新社群平台的公告。您也可以瀏覽 FAQ 頁面,以取得有關此平台轉換的解答。