2020 年 1 月 (版本 1.42)
更新 1.42.1:此更新解決了這些 問題。
下載:Windows:x64 | Mac:Intel | Linux:deb rpm tarball snap
歡迎使用 Visual Studio Code 2020 年 1 月發行版本。此版本中有許多更新,我們希望您會喜歡,其中一些主要重點包括
- 重新命名預覽 - 在差異檢視中查看待處理的重新命名,並輕鬆接受或拒絕變更。
- 開啟編輯器限制 - 設定一次開啟的編輯器最大數量。
- 面板位置 - 將面板(輸出、終端機)移動到編輯器的左側、右側或下方。
- 摺疊程式碼醒目提示 - 使用新的背景醒目提示快速找到摺疊區域。
- 偵錯主控台改進 - 語法醒目提示、括號配對、輸入歷史記錄。
- 定義全域工作 - 每個使用者的工作可以在您所有的資料夾和工作區中使用。
- Java 擴充功能更新 - Java 支援資料斷點和呼叫階層檢視。
- 遠端開發 - 新的轉發連接埠檢視,用於對應 SSH 和容器連接埠。
- 新的容器教學課程 - 學習如何建立和部署 Docker 容器。
- 預覽功能 - 時間軸檢視、搜尋編輯器、語意醒目提示等功能的初步預覽。
如果您想在線上閱讀這些版本資訊,請前往 更新 頁面,網址為 code.visualstudio.com。
Insiders: 想要盡快看到新功能嗎?您可以下載每晚建置的 Insiders 版本,並在最新更新可用時立即試用。如需最新的 Visual Studio Code 新聞、更新和內容,請在 Twitter 上關注我們 @code!
工作台
重新命名預覽
Visual Studio Code 現在允許您預覽 重新命名 變更。重新命名時,您可以透過 ⌘Enter (Windows、Linux Ctrl+Enter) 確認新名稱,並查看 重構預覽 面板。它會在差異編輯器中顯示待處理的變更,並允許您取消選取/選取個別變更。一旦重新命名已套用(或中止),差異編輯器和預覽面板就會關閉,讓您回到目前的編輯器。
佈景主題:GitHub Sharp,字型:FiraCode
限制開啟編輯器的數量
有新的設定可以限制一次開啟的編輯器最大數量。
workbench.editor.limit.enabled
:啟用此功能(預設為關閉)。workbench.editor.limit.perEditorGroup
:是否將限制套用至每個編輯器群組或所有群組。workbench.editor.limit.value
:開啟編輯器的最大數量(預設為 10)。
如果啟用,當您開啟新的編輯器時,VS Code 將關閉最近最少使用的編輯器。
在下面您可以看到當限制設定為 3 時的行為
佈景主題:Nord
注意: 尚未儲存變更的已修改編輯器(具有未儲存變更的檔案)永遠不會自動關閉,但仍計入開啟編輯器的總數。
未命名編輯器改進
VS Code 中的未命名編輯器是尚未儲存到磁碟的文字緩衝區。您可以將它們保持開啟狀態,只要您願意,所有文字內容都會在重新啟動之間儲存和還原。
未命名編輯器標題
過去,未命名編輯器會被賦予通用名稱,例如 Untitled-1
,依序遞增。在此版本中,未命名編輯器將使用文件第一行的內容作為編輯器標題,並包含通用名稱作為描述
佈景主題:Nord
注意: 如果第一行為空或不包含任何單字,標題將恢復為之前的 Untitled-*
。
預設語言模式
預設情況下,未命名檔案沒有設定特定的語言模式。VS Code 有一個設定 files.defaultLanguage
,用於設定未命名檔案的預設語言。在此版本中,此設定可以採用新的值 {activeEditorLanguage}
,它將動態使用目前使用中編輯器的語言模式,而不是固定的預設值。
此外,當您將文字複製並貼到未命名編輯器中時,如果文字是從 VS Code 編輯器複製而來,VS Code 現在會自動變更未命名編輯器的語言模式
佈景主題:One Dark Pro
注意: 如果未命名編輯器已指定語言模式,則貼上文字不會變更它。
瀏覽最近使用的編輯器
在此版本中,現在有一個跨所有編輯器群組的最近使用 (MRU) 編輯器清單。當編輯器以使用中編輯器開啟,或在已開啟的情況下變成新的使用中編輯器時,該編輯器會被視為最近使用。一旦編輯器關閉,它就會從此清單中移除。
此清單的一個應用是新的 edt mru
選擇器,您可以透過新的 檢視:依最近使用順序顯示所有編輯器 (workbench.action.showAllEditorsByMostRecentlyUsed
) 命令開啟
您可以新增鍵盤快速鍵,以便在不使用滑鼠的情況下快速瀏覽此選擇器。例如,以下是一個鍵盤繫結,使 Ctrl+Tab 和 Ctrl+Shift+Tab 跨所有群組的編輯器導航(而不是像預設鍵盤繫結那樣僅在使用中群組內導航)
[
{
"key": "ctrl+tab",
"command": "workbench.action.quickOpenPreviousRecentlyUsedEditor",
"when": "!inEditorsPicker"
},
{
"key": "ctrl+shift+tab",
"command": "workbench.action.quickOpenLeastRecentlyUsedEditor",
"when": "!inEditorsPicker"
}
]
如果您想在不使用選擇器的情況下瀏覽清單,則有新的命令
- 檢視:開啟下一個最近使用的編輯器 (
workbench.action.openNextRecentlyUsedEditor
) - 檢視:開啟上一個最近使用的編輯器 (
workbench.action.openPreviousRecentlyUsedEditor
)
為了區分哪些編輯器導航命令使用選擇器,哪些不使用,某些現有命令的行為已變更。具體來說,群組中最近使用的編輯器 命令不再使用選擇器
- 檢視:開啟群組中下一個最近使用的編輯器 (
workbench.action.openNextRecentlyUsedEditorInGroup
) - 檢視:開啟群組中上一個最近使用的編輯器 (
workbench.action.openPreviousRecentlyUsedEditorInGroup
)
對於基於選擇器的導航,請使用
- 檢視:快速開啟群組中上一個最近使用的編輯器 (
workbench.action.quickOpenPreviousRecentlyUsedEditorInGroup
) - 檢視:快速開啟群組中最近最少使用的編輯器 (
workbench.action.quickOpenLeastRecentlyUsedEditorInGroup
)
移動面板
面板(包含輸出、偵錯主控台、終端機和問題窗格)現在可以移動到編輯器的左側。
檢視:切換面板位置 (workbench.action.togglePanelPosition
) 命令已移除,改用以下新命令
- 檢視:將面板移至左側 (
workbench.action.positionPanelLeft
) - 檢視:將面板移至右側 (
workbench.action.positionPanelRight
) - 檢視:將面板移至底部 (
workbench.action.positionPanelBottom
)
重新啟動時還原所有視窗
VS Code 用於在啟動時還原視窗的設定已變更為預設還原所有視窗。如果您想恢復到先前的行為,請設定 "window.restoreWindows": "one"
以僅開啟單一視窗。
儲存衝突解決
VS Code 具有內建機制,當您嘗試儲存在 VS Code 外部或由另一個程式(例如 Git)變更的已修改檔案時,會顯示通知
這樣做的目的是通知您,即使檔案在變成已修改後才變更,儲存也會覆寫磁碟上的內容。選取 比較 按鈕可讓您檢閱您的變更以及磁碟上的版本,並選擇覆寫或還原檔案。
如果您知道磁碟上的變更可以被覆寫,則通知上現在有 覆寫 按鈕。您也可以全域、每個工作區或檔案類型設定 files.saveConflictResolution
,以完全停用此行為。選項為 askUser
(預設)或 overwriteFileOnDisk
。
處理緩慢的儲存作業
VS Code 允許擴充功能在將檔案儲存到磁碟時變更檔案的內容。例如,儲存時格式化 和 儲存時修正 等功能。但是,儲存是關鍵操作,在儲存期間執行處理的擴充功能必須快速完成,以便實際的儲存操作可以繼續進行。「快速」過去是由 VS Code 強制執行的,VS Code 會在逾時後取消擴充功能儲存作業。該強制執行保證了快速儲存,但可能會令人沮喪,因為有時預期的處理不會發生。
在此版本中,我們放棄了基於逾時的方法,而是顯示進度通知,讓您可以取消參與儲存的擴充功能(「儲存參與者」)。此通知讓您知道儲存作業正在執行,您可以決定是否要等待儲存參與者完成。
佈景主題:Light+
原始檔控制輸入
原始檔控制檢視中的輸入方塊現在使用 Monaco Editor。 當您使用 多根目錄工作區 時,檔案總管中的 摺疊資料夾 按鈕現在具有兩步驟行為。第一次點擊將摺疊每個頂層內的所有資料夾,第二次點擊將摺疊頂層資料夾。搜尋檢視已具有此行為。 佈景主題:Monokai Windows 和 macOS 現在支援淺色和深色色彩配置。有一個新的設定 若要自訂色彩配置變更時使用的佈景主題,您可以使用以下設定設定慣用的淺色和深色佈景主題 有一個新的設定和命令可以控制預覽檢視最初將焦點放在哪裡。預設情況下,預覽會將焦點放在右側的樹狀結構上,以便您可以快速導航到參考。對於想要使用預覽在編輯器中快速進行程式碼變更的人來說,樹狀結構上的初始焦點並不是最佳選擇。您現在可以使用 現在更容易發現摺疊的程式碼區域,因為新增了背景醒目提示。 佈景主題:Dark+ 此功能由設定 在摺疊指示器上按一下 當在已摺疊的範圍上使用 摺疊 命令 (⌥⌘[ (Windows、Linux Ctrl+Shift+[)) 時,下一個展開的父範圍將被摺疊。 預設情況下,編輯器會假設所有字元的寬度都相同來計算換行符號。此假設允許預設演算法快速執行,但當使用非等寬字型或以字元寬度不同的腳本撰寫文字時,其結果會很差。有一個新的設定 建議小工具現在不再使用 ARIA 警示,並正確地向螢幕閱讀器指示它已聚焦。這應該可以防止螢幕閱讀器意外地妨礙操作。 我們已開始研究如何在 Linux 上使用 Orca 螢幕閱讀器使 VS Code 具有協助工具功能。但是,由於這項工作需要 Electron 7,我們預計在下一個穩定版本中取得更多進展。同時,對於 Linux 協助工具,您可以使用我們的 Insiders 版本並提供意見反應。 終端機的捲動靈敏度現在可以獨立於編輯器進行設定,使用新的設定 為了簡化偵錯檢視的入門,VS Code 現在僅顯示一個 執行和偵錯 按鈕。不偵錯執行 動作(並非所有偵錯工具都支援)仍然在偵錯主選單中提供。 根據使用者意見反應,如果您已設定至少一個中斷點,則會在啟動檢視中顯示中斷點窗格。 偵錯主控台輸入 偵錯主控台輸入現在使用目前使用中編輯器的語言模式。這表示偵錯主控台輸入支援語法著色、縮排、自動關閉引號和其他語言功能。 輸入/輸出呈現 我們已調整偵錯主控台中輸入和輸出的呈現方式,使其更易於區分。VS Code 僅在輸入運算式旁邊顯示箭頭。 偵錯主控台輸入歷史記錄建議 偵錯主控台輸入方塊現在會自動建議先前輸入的項目。文字圖示用於區分歷史記錄建議和其他 IntelliSense 項目。 偵錯後隱藏偵錯主控台 有一個新的設定 支援 console.table(…) 偵錯主控台現在可以顯示來自 Node.js 已載入指令碼檢視已更新為使用 VS Code 的新樹狀檢視。它現在以與 VS Code 檔案總管相同的精簡形式呈現單一子資料夾。此外,現在可以搜尋並在您輸入時展開樹狀結構 我們計劃在下一個版本中移除 偵錯:開啟已載入指令碼 命令,因為它與樹狀結構的「在您輸入時搜尋和展開」功能重複。 啟動組態和複合組態現在支援新的結構化屬性 例如, 例如,我們已將演示文稿新增到 VS Code 本身的一些啟動組態中,以便以更有意義的方式對它們進行分組,並隱藏那些僅是複合啟動組態一部分的組態。 根據使用者意見反應,我們已更新活動列中的偵錯圖示,以更好地代表 執行和偵錯。並且在偵錯時,偵錯圖示上會有一個數字裝飾,以顯示使用中偵錯工作階段的計數。 現在在使用者設定層級支援在 如果您使用工作 標籤將顯示為 我們已將捆綁的 TypeScript 版本更新為 3.7.5。此小更新包含一些重要的錯誤修正,包括修正 Windows 上未儲存在 C: 磁碟機上的專案的 IntelliSense。 HTML 鏡像游標 現在是一項選擇加入功能。在即將到來的迭代中,我們將繼續 改進其實作,以使此功能更易於理解,並適用於更多語言。您仍然可以透過開啟 預覽功能尚未準備好發行,但功能已足夠使用。我們歡迎您在它們開發中提供早期意見反應。 在此里程碑中,我們在新時間軸檢視方面取得了進展,並有一個早期預覽可以分享。這是用於視覺化資源(檔案、資料夾)的時間序列事件(例如,Git 提交、檔案儲存、測試執行等)的統一檢視。若要啟用時間軸檢視,您必須使用 Insiders 版本,然後新增以下設定 在下面您可以看到時間軸檢視顯示檔案的 Git 提交歷史記錄 佈景主題:Dark Amethyst 在此早期預覽中,時間軸檢視顯示使用中文件的 Git 提交歷史記錄,目前限制為 32 個項目。選取其中一個提交將開啟該提交引入的變更的差異檢視。擴充功能也將能夠 貢獻他們自己的時間軸來源,這些來源將顯示在此統一的時間軸檢視中。最終,您還可以選取(篩選)您想要在檢視中看到的來源。 請繼續關注,我們為此新功能準備了更多內容。您可以透過訂閱 issue #84297 並關注標記有 'timeline' 標籤的問題來關注進度。如果您對您想要在此檢視中看到的其他類型資訊有任何想法,請告訴我們! 我們繼續開發新的搜尋編輯器,此迭代的目標是讓搜尋編輯器成為主要的搜尋體驗。為此,我們實作了一個 UI 來設定搜尋編輯器的查詢 佈景主題:Noctis Lilac,字型:Hasklig 現在有幾個用於搜尋編輯器的命令,您可以將它們繫結到您選擇的鍵盤快速鍵 如需有關搜尋編輯器的更多資訊和進一步更新,請參閱 issue #23931。 注意: 搜尋編輯器在 Insiders 中預設為啟用,並且可以透過將 TypeScript 和 JavaScript 的語意醒目提示支援正在開發中,且尚未預設啟用。您可以透過新增以下設定來試用它 啟用後,您將看到某些識別項具有新的顏色和樣式,並且現在根據其已解析的類型進行醒目提示。預設語法 (TextMate) 醒目提示器將許多 Token 分類為 您可以在匯入區段中看到最佳效果,其中現在每個匯入的符號都以符號的類型著色 您可以使用 開發人員:檢查編輯器 Token 和範圍 命令來檢查為每個位置計算的語意和語法 Token。 我們一直在開發適用於 Node.js 和 Chrome 的新偵錯工具。它預設安裝在 Insiders 版本上,並且可以從 VS Code Stable 版本的 Marketplace 安裝。您可以透過啟用 新的 JS 偵錯工具將自動偵錯您在新 JavaScript 偵錯終端機中執行的命令,您可以透過 偵錯:建立 JavaScript 偵錯終端機 命令開啟該終端機 佈景主題:Earthsong,字型:Fira Code 新的偵錯工具還在您的 package.json 的 您可以透過 試試看!如果您在使用新偵錯工具時遇到任何問題,可以在 vscode-js-debug 存放庫中提交問題。 正在積極進行工作,以使自訂 VS Code 的版面配置更容易。您可以使用以下設定測試進度 啟用此設定後,某些檢視具有新的右鍵選單項目,可將它們在側邊欄和面板之間移動。目前,此設定僅影響檔案總管中的大綱檢視和擴充功能貢獻的檢視。您也無法像在側邊欄中那樣在面板中組合這些檢視。 佈景主題:LaserWave,字型:Cascadia Code 這僅是功能的預覽,其許多方面都可能發生變更,包括上述限制。歡迎隨時查看我們的 Insiders 版本中的進一步進展。 關於搜尋的注意事項:隨著移動檢視的新通用方法,舊的搜尋檢視設定 雖然 VS Code 在下個月正式發行之前不會捆綁 TypeScript 3.8,但在此迭代中,我們新增了對所有 令人興奮的新 TypeScript 3.8-beta 功能 的支援。 這些包括 您今天可以透過安裝 TypeScript Nightly 擴充功能,輕鬆試用所有這些新的 TypeScript 3.8 功能。請分享意見反應,並告訴我們您是否遇到任何 TypeScript 3.8 Beta 的錯誤! Debugger for Java 擴充功能現在支援 資料斷點,這是 VS Code 1.38 中引入的功能。此功能可讓您建立在變數值變更時命中的中斷點。 在下面您可以看到當 Language Support for Java 擴充功能現在支援 呼叫階層 檢視,其中顯示來自或到某個函數的所有呼叫,並允許您深入探討呼叫者的呼叫者和呼叫的呼叫。 在符號上按一下滑鼠右鍵,然後選取 預覽 > 預覽呼叫階層 以查看呼叫階層 繼續開發 遠端開發擴充功能,這些擴充功能可讓您使用容器、遠端機器或 Windows Subsystem for Linux (WSL) 作為功能完整的開發環境。 1.42 中的功能重點包括 您可以在 遠端開發版本資訊 中瞭解新的擴充功能功能和錯誤修正。 對於大多數 VS Code 圖示,都使用了 codicon 圖示字型。擴充功能現在可以以簡單且宣告式的方式重複使用這些圖示 佈景主題:Light+ 上方的 hover 範例正在呈現所有可用的 codicon。hover 效果是使用以下程式碼片段建立的,但為了提高可讀性,大多數 codicon 名稱已從 在單字結尾觸發的完成通常會取代該單字。然而,當完成在單字內部觸發時,單字結尾是否應被取代則不明確。根據擴充功能作者的偏好,使用者會得到其中一種行為。這並不理想,現在有一個 API 可以表達完成項目的插入和取代範圍。 為此,我們在 此資訊與 我們對 CallHierarchyProvider#prepareCallHierarchy 進行了小幅變更,使其現在可以返回一個或多個 擴充功能現在可以使用新的組態範圍 範例 Configuration API 得到增強,以支援這些設定。您可以使用 API 並傳遞必要的 範例 如需更多資訊,請參閱 Configuration API。 您現在可以使用新的選單位置 範例 當命令執行時,擴充功能的 ID 會作為引數傳遞。 範例 支援以下預定義的上下文,您可以在命令的 用於偵錯的擴充功能 API 在 這種方法可能會使在 從使用者的角度來看,這令人困惑。在偵錯組態中,可以使用某些屬性變數(因為它們在替換發生後在偵錯配接器中處理),而某些屬性變數則不能使用(因為它們在替換尚未發生的擴充功能中處理)。Issue #87450 是後者問題的一個很好的例子。 在這個里程碑中,我們透過在 隨著這個新 API 的可用性,我們要求所有偵錯擴充功能作者仔細檢查他們目前 現有的偵錯擴充功能 API 支援註冊 作為外部程序 作為網路連線 在這個里程碑中,我們新增了第三種變體,其中可以提供偵錯配接器的「內嵌」實作。 這消除了透過基於串流的機制與配接器通訊的需求,並簡化了開發,因為配接器在擴充功能內部執行,並且可以輕鬆地作為 VS Code 擴充功能偵錯的一部分進行偵錯。 內嵌實作(例如,上方的 基於此介面,偵錯配接器的實作將從以下原始碼開始 由於偵錯配接器協定(作為 node 模組 vscode-debugprotocol 提供)是 一個更簡單的替代方案是(繼續)使用我們的偵錯配接器預設實作,作為 node 模組 vscode-debugadapter 提供。從 1.38.0-pre.4 版本開始,此模組中引入的 透過此 API,現有的偵錯配接器實作可以輕鬆地像這樣使用 有關詳細資訊,請參閱 Mock debug 範例。 注意: 在此版本中,我們已完成用於建立偵錯配接器的擴充功能 API。因此,我們宣布我們將在 三月份的版本中移除對 如果目前的(已棄用的)JSON 如下所示 轉換將會是 我們建議受影響的擴充功能在二月份的時間範圍內調整其對新 API 的實作,以便我們有足夠的時間在三月份之前修復問題。 每個里程碑都帶有新的建議 API,擴充功能作者可以試用它們。與往常一樣,我們渴望您的回饋。以下是您試用建議 API 必須執行的操作 請注意,您不能發布使用建議 API 的擴充功能。下一個版本中可能會出現重大變更,我們絕不希望破壞現有的擴充功能。 VS Code 中現在提供的「重構預覽」支援帶有一個新的選用 API 提案。它允許您對工作區編輯的變更進行分類。例如,您可以定義變更是否需要使用者確認,或新增描述,例如「重新命名字串和註解」。可以在 issue #77728 中追蹤此提案,其目前設計圍繞 WorkspaceEditMetadata 介面。 如果您有興趣為您的語言新增語意醒目提示,語意醒目提示概觀 總結了概念和新的 API。 某些擴充功能需要向其他服務進行驗證。Issue #88309 中的提案將使擴充功能可以註冊可供其他擴充功能存取的驗證提供者,從而提供用於執行驗證的通用機制。 擴充功能很快就能將它們自己的來源貢獻到新的 時間軸檢視 中。有興趣新增您自己的時間軸來源嗎?查看 issue #84297 中的早期提案,並提供您有的任何回饋。 建議的 建議的貢獻點讓擴充功能可以透過使用命令來控制其文件的顯示方式。 Issue #86788 追蹤提案的狀態。 在本次迭代中,我們繼續迭代建議的 自訂編輯器 API。我們本月的主要調查是如何為自訂編輯器啟用 熱退出。Issue #88719 涵蓋了我們在支援熱退出時遇到的一些挑戰,以及我們考慮的一些方法。 此調查的結果是在 我們將在下一次迭代中繼續迭代自訂編輯器 API。 我們正在發展 主題:Nord,字型:Input Mono 診斷錯誤現在可以具有與其錯誤碼相關聯的連結。當提供連結時,它將顯示在「問題」面板、內嵌錯誤檢視和診斷錯誤懸停中。當我們在下一次迭代中繼續處理此功能時,您可以在 issue #11847 中提供回饋。 Language Server Protocol 的 3.15 版本現已推出。我們還為 VS Code LSP client 和為用 Node.js 撰寫的 LSP servers 發布了對應的 npm 模組。最新版本的程式庫包含語意 token 的建議規格和實作。 LSP 網站現在託管了 Language Server Index Format specification 的初步版本,以及對應的 LSIF 概觀。 在瀏覽器中使用 VS Code 時,您現在可以將本機檔案拖放到編輯器區域中,以將它們作為包含檔案內容的髒(未儲存)檔案開啟。 VS Code 主要以 TypeScript 撰寫。除了編譯器之外,我們還使用 linting 來強制執行某些樣式和工程規則。過去,我們一直使用 TSLint 來執行此任務,但大約在一年前,TSLint 的維護者 宣布棄用 TSLint,轉而支持 ESLint。 在這個里程碑中,我們已遷移到 ESLint - 其中包括我們的 lint-configuration 和我們的 自訂規則。最後但並非最不重要的一點,我們還更新了 如果您在自己的專案中使用 TSLint,我們已建立 將 TSLint 遷移到 ESLint 指南,以協助您切換到 ESLint。 VS Code 現在使用 TypeScript 3.8 beta 版本建置。 我們已修復有關滑鼠處理和動態 CSS 的各種問題,以便現在可以在 Shadow DOM API shadow root 內託管 Monaco Editor。 有新的文章介紹如何使用 Microsoft Docker 擴充功能建立容器。您將找到有關容器化 Node.js 和 ASP.NET Core 應用程式、推送至 容器登錄,以及將 容器部署到雲端的教學課程。 最後但同樣重要的是,非常感謝以下人士幫助使 VS Code 變得更好 對我們的問題追蹤的貢獻 對 對 對 貢獻至 貢獻至 貢獻至 貢獻至 貢獻至 貢獻至 貢獻至 貢獻至 有超過 800 位 Cloud + AI Localization 社群成員使用 Microsoft Localization Community Platform (MLCP),其中約有 170 位活躍貢獻者參與 Visual Studio Code。我們感謝您的貢獻,無論是提供新的翻譯、為翻譯投票,還是建議流程改進。 以下是 貢獻者的快照。如需專案詳細資訊,包括貢獻者姓名清單,請造訪專案網站:https://aka.ms/vscodeloc。多根目錄 Explorer 中的兩步驟摺疊
根據作業系統色彩配置自動切換佈景主題
window.autoDetectColorScheme
,指示 VS Code 監聽作業系統色彩配置的變更,並相應地切換到相符的佈景主題。
workbench.preferredLightColorTheme
workbench.preferredDarkColorTheme
編輯器
控制預覽檢視焦點
editor.peekWidgetDefaultFocus
設定定義您的偏好,該設定可以設定為 editor
或 tree
。還有一個新的命令 togglePeekWidgetFocus
(⌘K F2 (Windows、Linux Ctrl+K F2)),可讓您在預覽編輯器和樹狀結構之間移動焦點。摺疊區域醒目提示
editor.foldingHighlight
控制,並且可以使用顏色 editor.foldBackground
自訂顏色。 "workbench.colorCustomizations": {
"editor.foldBackground": "#355000"
}
摺疊改進
Shift + Click
一次,以先摺疊內部範圍。再次 Shift + Click
(當所有內部範圍已摺疊時)將摺疊父層。再次 Shift + Click
將展開所有。新的換行選項
editor.wrappingStrategy
,可以設定為 advanced
,讓編輯器將換行符號計算委派給瀏覽器。協助工具
建議小工具改進
偵測到螢幕閱讀器時,editor.accessibilityPageSize 設定為 160
editor.accessibilityPageSize
設定控制螢幕閱讀器一次可以讀出的編輯器行數。但是,使用較大的值會產生效能影響。我們已決定在偵測到螢幕閱讀器時自動將值設定為 160 行(並且由於 NVDA 錯誤,不再設定更多)。Linux 協助工具與 Orca
整合式終端機
捲動靈敏度
terminal.integrated.mouseWheelScrollSensitivity
- 滑鼠滾輪捲動乘數(預設為 1)。terminal.integrated.fastScrollSensitivity
- 按下 Alt 時的快速捲動乘數(預設為 5)。偵錯
簡化的初始偵錯檢視
偵錯主控台改進
debug.console.closeOnEnd
,控制偵錯停止後是否應自動關閉偵錯主控台。console.table(...)
API 的輸出。已載入指令碼檢視改進
啟動組態排序和分組
presentation
。使用 order
、group
和 hidden
屬性,您可以對偵錯組態下拉式清單和偵錯快速選取中的組態和複合組態進行排序、分組和隱藏。launch.json
中的啟動組態可以具有以下 presentation
欄位"presentation": {
"group": "5_tests",
"order": 10,
"hidden": false
}
偵錯活動列圖示和裝飾
工作
使用者層級工作
tasks.json
中宣告的工作。如果您有一個在許多專案中使用的建置指令碼,或者如果您不希望您的工作位於專案資料夾中,則可以在使用者 tasks.json
檔案中新增您的工作。執行 工作:開啟使用者工作 命令以建立使用者層級工作,這些工作將在所有資料夾和工作區中可用。此處僅支援 shell
和 process
工作類型。輸入 pickString 標籤
inputs
,則可以將友善的標籤新增到 pickString
輸入 options
"inputs": [
{
"id": "pickAnInputValue",
"description": "Pick a Value",
"type": "pickString",
"options": [
"first-value",
{
"label": "Second Value",
"value": "second-long-value-that-can-be-simplified-for-display"
}
],
"default": "first-value"
}
]
語言
TypeScript 3.7.5
HTML 鏡像游標預設為關閉
html.mirrorCursorOnMatchingTag
來使用此功能。預覽功能
時間軸檢視
"timeline.showView": true
搜尋編輯器
search.action.openNewEditor
:在使用中編輯器群組中開啟新的搜尋編輯器。search.action.openInEditor
:將目前的搜尋結果複製到新的搜尋編輯器中。search.enableSearchEditorPreview
設定為 true
在 Stable 版本中選擇加入。TypeScript 和 JavaScript 的語意醒目提示
"editor.semanticHighlighting.enabled": true
variables
,而這些 Token 現在已解析為命名空間、類別、參數等等。新的 JavaScript 偵錯工具
debug.javascript.usePreview
設定,開始將其與您現有的啟動組態搭配使用。以下是我們本月新增的一些新功能。scripts
區段中提供 偵錯 CodeLens,可以執行和偵錯指令碼,而無需額外組態debug.javascript.codelens.npmScripts
設定設定 CodeLens 的可見性和位置(頂部或內嵌)。將檢視從側邊欄移動到面板
"workbench.view.experimental.allowMovingToNewContainer": true
search.location
和命令 搜尋:切換搜尋檢視位置 (search.action.toggleSearchViewPosition
) 正在被取代。您的設定應會自動移轉,但您需要使用新的通用方法來移動搜尋檢視。您不需要啟用上面的實驗性預覽設定即可使用新的右鍵選單項目移動搜尋檢視。TypeScript 3.8 Beta 支援
擴充功能的貢獻
Java 偵錯工具支援資料斷點
Owner.telephone
字串變更時,偵錯工具會中斷Java 呼叫階層檢視
遠端開發
擴充功能撰寫
可重複使用的 Codicon
vscode.ThemeIcon
類型現在可以使用 codicon 的名稱來實例化。例如,new vscode.ThemeIcon("zap")
。vscode.MarkdownString
類型現在支援 $(<name>)
內嵌語法。例如,myMdString.appendMarkdown('Hello $(globe)');
。請注意,若要在 MarkdownString
中使用 codicon,您必須啟用 supportThemeIcons
建構函式引數。package.json
檔案中定義的 commands
現在可以使用 codicon 作為其圖示。使用內嵌語法,例如 "icon": "$(zap)"
。all
常數中移除。vscode.languages.registerHoverProvider(
'*',
new (class implements vscode.HoverProvider {
provideHover(doc: vscode.TextDocument, pos: vscode.Position) {
const all = `$(activate-breakpoints)$(add)...$(zoom-out)`;
const md = new vscode.MarkdownString(all, true);
return new vscode.Hover(md, doc.getWordRangeAtPosition(pos));
}
})()
);
針對完成項目插入和取代
CompletionItem#range
中新增了一個新的 OR 類型。export class CompletionItem {
range?: Range | { inserting: Range; replacing: Range };
//...
}
undefined
,則 VS Code 會使用目前單字的範圍進行取代,並使用在游標位置裁剪的相同範圍進行插入。vscode.Range
,則 VS Code 知道只有一個位置可以插入或取代。inserting
和 replacing
範圍的物件,VS Code 將直接使用它們。editor.suggest.insertMode
設定結合使用,使用者可以定義他們的偏好。我們要求擴充功能作者盡快採用此 API,因為我們計劃在下一個版本中讓插入和取代行為更加明顯。完善的 CallHierarchyProvider
CallHierarchyItem
元素。當請求具有多個重載的元素的呼叫階層時,many
選項非常有用。在終端機上公開建立選項
Terminal
物件有一個新的 creationOptions
屬性,擴充功能可以使用它來識別終端機是如何建立的。語言特定的設定
language-overridable
貢獻可被語言覆寫的設定。"contributes": {
"configuration": {
"title": "sample",
"properties": {
"sample.languageSetting": {
"type": "boolean",
"scope": "language-overridable"
}
}
}
}
languageId
來讀取和更新這些設定。/**
* Read language configuration.
*/
const textDocumentConfiguration = vscode.workspace.getConfiguration('sample', {resource, languageId});
textDocumentConfiguration.get('languageSetting');
/**
* Override configuration under language
*/
textDocumentConfiguration.update('languageSetting', false, ConfigurationTarget.Global, true);
/**
* Listen language configuration changes
*/
workspace.onDidChangeConfiguration(e => {
if(e.affectsConfiguration('sample.languageSetting', {resource, languageId}) {
}
});
擴充功能檢視上下文選單
extension/context
,將命令貢獻到「擴充功能」檢視中擴充功能的上下文選單。"contributes": {
"commands": [
{
"command": "extension.helloWorld",
"title": "Hello World"
}
],
"menus": {
"extension/context": [
{
"command": "extension.helloWorld",
"group": "2_configure",
"when": "extensionStatus==installed",
}
]
}
}
vscode.commands.registerCommand('extension.helloWorld', extensionId => {
vscode.window.showInformationMessage(extensionId);
});
when
條件中使用它們。
extensionStatus==installed
isBuiltinExtension
用於存取已替換變數的 DebugConfigurationProvider hook
DebugConfigurationProvider
上提供了一個 hook resolveDebugConfiguration
,可用於在偵錯組態傳遞到偵錯配接器之前驗證它。由於此 hook 是在變數被替換之前呼叫的,因此驗證程式碼可以輕鬆地將更多變數新增到偵錯組態中,並及時替換它們。resolveDebugConfiguration
hook 中使用已解析的變數值變得困難,例如驗證或實作僅存在於擴充功能中的功能(而不是在偵錯配接器中,已替換的值是可用的)。有關範例,請參閱 issue #85206。有些擴充功能已開始自行替換變數(這通常是不完整的,因為它沒有涵蓋所有情況)。DebugConfigurationProvider
中新增第二個 hook resolveDebugConfigurationWithSubstitutedVariables
來解決此問題,該 hook 接收具有所有已替換變數的偵錯組態。DebugConfigurationProvider.resolveDebugConfiguration
的實作,並將所有不引入新變數,但可以從在已替換的變數上執行的程式碼移動到新的方法 resolveDebugConfigurationWithSubstitutedVariables
中。在擴充功能內部實作偵錯配接器
DebugAdapterDescriptorFactory
,以多種方式執行偵錯配接器。vscode.debug.registerDebugAdapterDescriptorFactory('mock', {
createDebugAdapterDescriptor: _session => {
return new vscode.DebugAdapterExecutable('mockDebug.exe');
}
});
vscode.debug.registerDebugAdapterDescriptorFactory('mock', {
createDebugAdapterDescriptor: _session => {
return new vscode.DebugAdapterServer(12345, 'localhost');
}
});
vscode.debug.registerDebugAdapterDescriptorFactory('mock', {
createDebugAdapterDescriptor: _session => {
return new vscode.DebugAdapterInlineImplementation(new InlineDebugAdapter());
}
});
InlineDebugAdapter
)需要實作 Debug Adapter Protocol。由於我們不想在 VS Code 的擴充功能 API 中包含完整的 Debug Adapter Protocol,因此我們引入了該協定的最小子集。介面 vscode.DebugAdapter
只有兩個方法,一個用於將 DAP 訊息傳遞到配接器 (handleMessage
),另一個用於監聽從配接器接收的 DAP 訊息 (onDidSendMessage
)。class InlineDebugAdapter implements vscode.DebugAdapter {
private sendMessage = new vscode.EventEmitter<DebugProtocol.ProtocolMessage>();
private sequence: 1;
readonly onDidSendMessage: vscode.Event<DebugProtocol.ProtocolMessage> = this.sendMessage
.event;
handleMessage(message: DebugProtocol.ProtocolMessage): void {
switch (message.type) {
case 'request':
const request = <DebugProtocol.Request>message;
switch (request.command) {
case 'initialize':
const response: DebugProtocol.Response = {
type: 'response',
seq: this.sequence++,
success: true,
request_seq: request.seq,
command: request.command
};
this.sendMessage.fire(response);
break;
// many more requests needs to be handled here...
default:
break;
}
break;
case 'response':
break;
case 'event':
break;
}
}
dispose() {
// clean up resources
}
}
vscode.DebugAdapter
介面的相容超集,因此如果您需要完整的協定並想完全自行實作偵錯配接器,則可以匯入該模組。DebugSession
(或 LoggingDebugSession
)與擴充功能 API 中定義的介面 vscode.DebugAdapter
相容。vscode.debug.registerDebugAdapterDescriptorFactory('mock', {
createDebugAdapterDescriptor: _session => {
return new vscode.DebugAdapterInlineImplementation(new MockDebugSession());
}
});
debuggers
貢獻點的兩個已棄用屬性的支援
adapterExecutableCommand
- 請改用擴充功能 API vscode.DebugAdapterDescriptorFactory
和 vscode.DebugAdapterExecutable
。Mock debug 範例示範了如何使用 API。enableBreakpointsFor
- 請改用 breakpoints
貢獻點。轉換需要在 package.json
中完成。"contributes": {
"debuggers": [{
"type": "csharp",
// ...
"enableBreakpointsFor": [ "csharp", "razor" ]
// ...
}]
"contributes": {
"breakpoints": [
{ "language": "csharp" },
{ "language": "razor" }
],
"debuggers": [{
"type": "csharp",
// ...
}]
建議的擴充功能 API
package.json
檔案中必須有這一行:"enableProposedApi": true
。新增工作區編輯中繼資料
語意醒目提示
驗證提供者
時間軸提供者
Documentation.Refactoring 貢獻點
documentation.refactoring
貢獻點讓擴充功能可以為其重構提供文件。使用者可以在請求重構時選擇檢視此文件。"contributes": {
"documentation": {
"refactoring": [
{
"title": "Learn more about JS/TS refactorings",
"when": "typescript.isManagedFile",
"command": "_typescript.learnMoreAboutRefactorings"
}
]
}
}
title
— 向使用者顯示的文件動作的標籤。when
— 用於決定何時顯示文件的 When 子句。command
— 顯示文件的命令。例如,此命令可以開啟網頁或直接在 VS Code 中顯示文件。自訂編輯器的備份和熱退出 hook
WebviewCustomEditorEditingDelegate
介面上新增了一個選用的 backup
方法。在資源變更後約一秒鐘,VS Code 會調用此方法。在 backup
方法內部,擴充功能應將資源持久化為其目前狀態。通常,這表示將資源寫入工作區儲存資料夾。然後,當重新載入編輯器時,它應檢查是否存在任何持久化的備份,然後再從工作區本身載入資源。複雜的完成標籤
CompletionItem
API,以容納需要提供限定名稱、匯入路徑、返回類型和其他資訊的複雜完成項目。資訊必須預先提供,而不是稍後解析。提供的資訊將以內嵌方式顯示在建議小工具中。我們將在下一次迭代中迭代 目前的提案。同時,我們正在考慮 在建議小工具中新增狀態列,以解決一些 UI 和探索性挑戰。我們期待您對 API 的回饋。將連結新增到診斷錯誤
語言伺服器協定
瀏覽器支援
將檔案拖放到編輯器中
新命令
鍵
命令
命令 ID
將面板移至左側
workbench.action.positionPanelLeft
將面板移至右側
workbench.action.positionPanelRight
將面板移至底部
workbench.action.positionPanelBottom
開啟下一個最近使用的編輯器
workbench.action.openNextRecentlyUsedEditor
開啟先前使用的編輯器
workbench.action.openPreviousRecentlyUsedEditor
開啟群組中下一個最近使用的編輯器
workbench.action.openNextRecentlyUsedEditorInGroup
開啟群組中先前使用的編輯器
workbench.action.openPreviousRecentlyUsedEditorInGroup
開啟最近使用編輯器的選擇器
workbench.action.showAllEditorsByMostRecentlyUsed
透過選擇器開啟先前使用的編輯器
workbench.action.quickOpenPreviousRecentlyUsedEditor
⌃Tab (Windows, Linux Ctrl+Tab)
透過選擇器開啟群組中先前使用的編輯器
workbench.action.quickOpenPreviousRecentlyUsedEditorInGroup
透過選擇器開啟最少使用的編輯器
workbench.action.quickOpenLeastRecentlyUsedEditor
⌃⇧Tab (Windows, Linux Ctrl+Shift+Tab)
透過選擇器開啟群組中最少使用的編輯器
workbench.action.quickOpenLeastRecentlyUsedEditorInGroup
開發人員:重新啟動擴充功能主機
workbench.action.restartExtensionHost
工程
TSLint 到 ESLint 的遷移
yo code
擴充功能產生器,以便新的 TypeScript 擴充功能也由 ESLint 檢查。使用 TypeScript 3.8-beta 建置 VS Code
支援在 Shadow DOM 中託管 Monaco Editor
新文件
容器
值得注意的修正
感謝您
vscode
的貢獻
vscode-eslint
的貢獻
language-server-protocol
的貢獻
vscode-languageserver-node
debug-adapter-protocol
vscode-vsce
vscode-js-debug
vscode-generator-code
vscode-azurecli
vscode-emmet-helper
localization