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 和語言伺服器之間使用 (line;char)
座標進行通訊。如果行終止符的定義不同,可能會導致檔案中行和位置的不同對應。
開啟檔案時,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
- 在編輯器:字型系列設定中指定的字型系列。字型系列名稱
- 要在輸入欄位中使用的字型系列名稱 (例如,Cascadia Code
)。
中止進行中的 rebase
您現在可以使用 Git:中止 Rebase 命令,中止進行中的 rebase 操作。
偵錯
自動偵錯組態改進
在這個里程碑中,我們改進了自動偵錯組態的體驗
-
在上一個里程碑中,我們推出了一項功能,讓擴充功能作者可以分析目前的專案並自動提供偵錯組態。這些偵錯組態是動態建立的,因此它們不會顯示在
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
和尋找所有參考的運作方式。所有程式碼導覽手勢都應該感覺與在 Notebook 外部一樣自然。例如,「問題」檢視現在將顯示所有 Notebook 的所有錯誤,並依 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 版本的完整變更記錄。
遠端開發
持續開發 遠端開發擴充功能,可讓您使用容器、遠端機器或 適用於 Linux 的 Windows 子系統 (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
設定定義。內建的 Git 擴充功能現在也使用此 API,讓 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 上進行 issue 分流,方法是提供一個單一的模糊篩選選單,其中包含受託人、標籤、里程碑以及我們用來觸發分流 GitHub Actions 的各種特殊註解。我們已在 GitHub 上開放原始碼。
文件與擴充功能
Build 大會上的 Visual Studio Code
VS Code 團隊在 Microsoft Build 2020 會議上進行了簡報,您可以在這篇 Build 大會上的 VS Code 部落格文章中找到 VS Code 會議和線上講座的概述。
VS Code 團隊成員的幾場講座
- VS Code 提示與技巧 - 20 個提示與技巧,讓您在使用 VS Code 時更有效率。
- 每個 Visual Studio Code 使用者都應該了解的 GitHub - 了解 VS Code 的 GitHub 整合,用於 PR 和 issue。
- 使用 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:line number" 格式
- 96713:從呼叫堆疊動作檢視停止工作階段時,始終會前往活動工作階段
- 96914:在可見大綱時輸入會延遲
- 96987:Orca 無法讀取中斷點檢視中的行號
- 97444:從偵錯監看式複製長值會導致貼上部分值
- 97471:偵錯懸停視窗太窄且水平捲動無用
- 97731:VS Code 在輸入和捲動時凍結
- 96643:Tasks (和 TaskExecutions) 在 onDid(Start|End)Task 回呼中不 ===
感謝
最後但同樣重要的是,非常感謝以下在本月為 VS Code 做出貢獻的人員
對我們的 issue 追蹤的貢獻
- 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):清除網頁檢視中過時的 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):fix: new command 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):feat: use configNamespace for registering language providers of other extensions 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):fix: invalid json of dark theme PR #207
對 vscode-vsce
的貢獻
- Owen Farrell (@owenfarrell):支援從環境變數注入 PAT PR #447
對 debug-adapter-protocol
的貢獻
- @auott
- Vitalii Akimov (@awto):adapters.md 中的有效 JavaScript 偵錯工具參考 PR #113
- @tomcec:更新 adapters.md PR #115
- Andrew Wang (@WardenGnaw):更新 C/C++ DAP 維護者 PR #117
- FW (@fwcd):新增 Kotlin 偵錯配接器 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 頁面,以取得有關此平台轉換的解答。