🚀 在 VS Code 中取得

2022 年 1 月 (版本 1.64)

更新 1.64.1:此更新解決了這些安全性問題

更新 1.64.2:此更新解決了這些問題

下載:Windows:x64 Arm64 | Mac:通用 Intel Silicon | Linux:deb rpm tarball Arm snap


歡迎使用 Visual Studio Code 2022 年 1 月發行版本。此版本包含許多更新,我們希望您會喜歡,其中一些主要重點包括

如果您想在線上閱讀這些版本資訊,請前往 更新,網址為 code.visualstudio.com

觀看重點,了解 VS Code 團隊發行派對中此版本的新功能。您可以在我們的 YouTube 頻道上找到活動錄影

Insiders:想要盡快試用新功能嗎?您可以下載每晚Insiders 組建版本,並在最新更新可用時立即試用。

工作台

新的側邊面板

在此里程碑中,我們推出了側邊面板,這是工作台中與側邊欄相對的新介面,您可以在其中放置來自側邊欄或底部面板的檢視。與將底部面板移動到編輯器的左側或右側不同,新的側邊面板除了底部面板之外還能運作,因此您可以一次看到更多組檢視。

若要使用側邊面板,您需要將一些檢視移動到其中。根據我們最受歡迎的功能要求之一,您可能會想要將大綱檢視從側邊欄移動到側邊面板。您可以透過將檢視拖放到側邊面板中來執行此操作。如果側邊面板未開啟,就像底部面板一樣,將檢視拖曳到編輯器區域的邊緣會彈出並開啟它。

在下面的簡短影片中,大綱檢視被拖曳到右側並放下以建立側邊面板。然後,使用者可以在側邊欄中切換檢視(此處開啟全域搜尋檢視),同時保持大綱檢視可見。

或者,您可以使用來自命令面板的移動檢視命令,這將顯示可用檢視的下拉式清單。當您選取檢視時,您可以透過建立新的面板/側邊欄/側邊面板項目,或將檢視放置在現有位置(例如 [總管] 或 [原始檔控制])來選擇位置。

Move View command view locations dropdown

檢視可以透過抓取檢視圖示在面板、側邊欄和側邊面板之間拖放。您可以透過在檢視圖示上按一下滑鼠右鍵並選取重設位置,將檢視的位置重設回預設值。

View context menu with Reset Location command

如果您想要將所有檢視重設回預設版面配置,您可以從命令面板執行檢視:重設檢視位置

取代面板位置

如上所述,新的側邊面板提供與將面板移動到左側或右側類似的功能,但透過不移動原始面板的整個內容來改進這一點。除了面板之間的檢視拖放之外,新的側邊面板正在取代移動底部面板的選項。

有鑑於此,我們已棄用 workbench.panel.defaultLocation 設定以及移動面板命令,而改用類似的命令

  • 將檢視從面板移動到側邊面板 (workbench.action.movePanelToSidePanel)
  • 將檢視從側邊面板移動到面板 (workbench.action.moveSidePanelToPanel)

舊的移動面板命令已重新對應到提供類似行為的新命令。即使使用此對應,我們仍建議將您的鍵盤快速鍵更新為新命令。

下方顯示的是將整個底部面板移動到側邊面板,然後再移回原始面板位置。

面板對齊

為了滿足另一個熱門功能要求,我們新增了一個名為面板對齊的新版面配置選項。此選項可讓您設定底部面板在視窗中展開的範圍。共有四個選項

  • 置中 - 這是傳統行為。面板僅展開編輯器區域的寬度。
  • 靠左 - 面板將從視窗的左邊緣展開到編輯器區域的右邊緣。
  • 靠右 - 面板將從視窗的右邊緣展開到編輯器區域的左邊緣。
  • 對齊 - 面板將展開視窗的完整寬度。

請注意,對於所有選項,活動列都被視為視窗的邊緣。

您可以在檢視 > 外觀 > 對齊面板下的功能表中設定這些選項,或使用新的設定面板對齊為... 命令。

自訂版面配置控制項

有了所有這些新的版面配置選項,我們一直在探索更好的方式來公開版面配置設定,以提高可探索性和易用性。這就是為什麼您可能會在標題列中注意到新的實驗性設定版面配置按鈕。只有當您的 window.titleBarStyle 設定為 custom(Windows 和 macOS 上的預設值)且 workbench.experimental.layoutControl.enabled 設定為 true 時,才會顯示此按鈕。按鈕可見性由實驗控制,但如果您想手動啟用它,您可以透過在設定編輯器中套用這些設定值來執行此操作 (⌘, (Windows、Linux Ctrl+,))。

Configure Layout button on the title bar

功能表的內容仍在處理中,但目前您應該會看到切換側邊欄、面板和側邊面板的功能。此外,您還會看到一個新命令自訂版面配置的項目。這個新命令會觸發新的互動式快速選取體驗,讓您可以在一個位置控制版面配置設定的所有方面。

試用看看,如果您有任何意見反應,請在 問題 #137633 中告訴我們。

設定編輯器

設定編輯器搜尋現在會在搜尋時尋找字串和列舉設定中的字串值比對。

Settings editor pulling up results where the enum value matches the query

新的搜尋演算法也會優先考慮全字比對,這表示如果同時安裝 Java 和 JavaScript 擴充功能,則在搜尋「java」時,Java 設定會先顯示。

Settings editor search showing Java results before JavaScript ones when searching "java"

最後,設定編輯器中的下拉式清單(例如 files.autoSave)和清單小工具(例如 files.associations)現在可與觸控螢幕裝置搭配使用。

設定同步

設定同步現在支援同步使用者工作。

Settings Sync User Tasks

VS Code for the Web 中的預設設定同步電腦名稱現在包含瀏覽器和產品名稱。

Settings Sync default machine name including browser and product names

總管:確認並停用復原

檔案總管長期以來都支援復原堆疊,以還原檔案和資料夾編輯(重新命名、剪下/複製/貼上、移動、匯入等)。有些使用者覺得此功能出乎意料,因此現在有一個設定可以停用總管中的復原 (explorer.enableUndo)。

此外,還新增了一個新的設定 (explorer.confirmUndo),用於設定總管在執行復原時提示確認的頻率。預設情況下,總管的提示頻率會比以前更高,以確保不會意外發生破壞性復原,但可以使用值 "light" 將其變更為舊的行為,或設定為 "verbose" 以在所有復原動作之前提示。

編輯器

音訊提示

音訊提示會指出目前行是否具有特定標記,例如錯誤、中斷點或摺疊的文字區域。

當主要游標變更其行或第一次將標記新增至目前行時,會播放這些提示。當附加螢幕助讀程式時,會自動啟用音訊提示,但也可以透過將 audioCues.enabled 設定為 on 來手動開啟。

即將推出更多音訊提示,我們將反覆運算聲音設計。

Unicode 醒目提示改進

為了改進 11 月版本中推出的Unicode 醒目提示功能,新增了一些設定以更好地處理誤判。

新的設定 editor.unicodeHighlight.allowedLocales 可用於允許在一個或多個已設定地區設定中常見的字元。預設情況下,這包括目前的 VS Code 顯示語言和目前的作業系統語言。目前,僅支援在 vscode-loc 語言套件中翻譯的地區設定。

設定 editor.unicodeHighlight.includeStrings 控制是否應醒目提示字串中的字元。預設值為 true,但可以設定為 false 以忽略字串。

編輯器摺疊限制

新的設定 editor.foldingMaximumRegions 允許使用者變更編輯器中顯示的摺疊範圍的最大數量。預設情況下,限制為 5000。請注意,較大的數字可能會導致效能降低。

編輯器調整為語言功能計時

擴充功能幾乎支援所有語言功能,包括內建功能,例如摺疊區域、CodeLens、內嵌提示和語意符號。這些功能不是由使用者手勢觸發,而是由輸入觸發,通常在逾時之後觸發。例如,CodeLens 會在您輸入時更新,語意符號也會更新。選取的逾時值是固定的,或多或少是任意的。在此版本中,編輯器會調整為觀察到的計時,以便較慢的電腦或網路連線不會被要求淹沒,並且可以更好地利用較快的電腦。

終端機

自動回覆

終端機現在具有選擇加入功能,可在收到特定字元序列時自動回覆。一個很好的例子是 Windows 批次指令碼訊息 Terminate batch job (Y/N)?,在執行批次指令碼時按下 Ctrl+C 之後。若要讓終端機在 Windows 中按下 Ctrl+C 時自動回覆 Y 並輸入 (\r),請新增下列設定

"terminal.integrated.autoReplies": {
  "Terminate batch job (Y/N)?": "Y\r"
}

佈景主題:Sapphire

您可以為其他事項設定自訂回覆,但在執行此操作時請務必小心,因為您正在自動將文字傳送至處理程序。例如,您可以使用它在提示時自動更新 Oh My Zsh

"terminal.integrated.autoReplies": {
  "[Oh My Zsh] Would you like to check for updates? [Y/n]": "Y\r"
}

如果您使用 Clink 並啟用其類似功能,您可以透過將回覆設定為 null 在 Clink 或 VS Code 中停用它,以避免兩個功能相互衝突

"terminal.integrated.autoReplies": {
  "Terminate batch job (Y/N)": null
}

增強的 VT 支援

新增了對作業系統命令 (OSC) 4/10/11/12 逸出序列的支援,這讓應用程式能夠控制終端機的佈景主題色彩。

先前,終端機中的連結導覽需要使用滑鼠。現在,可以使用鍵盤透過下列命令開啟連結

  • 終端機:開啟最後一個 Web 連結... 例如,https://github.com/microsoft/vscode
  • 終端機:開啟最後一個檔案連結... 例如,/Users/user/repo/file.txt
  • 終端機:開啟偵測到的連結... 以檢視所有連結 (Web、檔案、單字)

A Quick Pick is displayed with link results of type web, word, and file.

原始檔控制

更精細的存放庫探索控制

根據社群意見反應,新增了兩個設定,以更好地控制探索 Git 存放庫的程序,並容納更多樣化的資料夾結構。

  • git.repositoryScanMaxDepth - 控制掃描時使用的深度。
  • git.repositoryScanIgnoredFolders - 控制掃描期間應忽略的資料夾清單。

變更清單排序改進

新的設定 (scm.defaultViewSortKey) 控制用於原始檔控制檢視中變更清單的預設排序金鑰。排序金鑰的選擇也會針對每個資料夾/工作區記住。

選項包括

  • name - 依檔案名稱排序變更。
  • path - 依檔案路徑排序變更 (預設)。
  • status - 依原始檔控制狀態排序變更。

您需要重新載入 VS Code 視窗才能套用設定變更。

新的 Git 暫存命令

命令面板中新增了一個新的命令Git:捨棄所有暫存...,允許使用者清除所有暫存項目。與任何具有永久性後果的 Git 作業一樣,請謹慎使用此命令。

Git 輸出 - git 命令執行時間和持續時間

為了協助追蹤效能問題,Git 輸出通道現在會顯示執行 git 命令的時間以及命令的持續時間,但不包括產生子處理程序所花費的時間。

筆記本

在呈現的 Markdown 和程式碼儲存格輸出中尋找文字

VS Code 現在支援在 Markdown 儲存格的呈現檢視和程式碼儲存格的輸出中尋找文字。此功能預設為停用,因為這需要呈現所有 Markdown 儲存格和輸出,這在開啟筆記本時可能會耗費大量成本。您可以透過從 [尋找] 控制項輸入方塊上的篩選下拉式清單中選擇選項 (Markdown 預覽程式碼儲存格輸出) 來開啟此功能。

目前,在輸出中搜尋文字時有一些限制。例如,您無法搜尋 VS Code 本身呈現的串流/文字輸出。我們計劃在下一個反覆運算中改進這一點。

儲存格摺疊 UI

筆記本儲存格的左側有一個藍色橫條,表示它們已聚焦。此橫條現在是互動式的 - 您可以按一下頂部以摺疊儲存格輸入,按一下底部以摺疊輸出。

Markdown 儲存格摺疊提示

當 Markdown 儲存格區域已摺疊時,會顯示一則訊息,其中包含摺疊儲存格的數量,以更清楚地顯示某些儲存格已隱藏。

Folded Markdown cell hint

儲存格執行提示

我們進行了一些變更,以更清楚地顯示儲存格何時正在執行,以及哪個儲存格正在執行。

首先,當儲存格正在執行但未捲動到檢視中時,編輯器窗格的頂端會顯示進度列。

其次,當儲存格正在執行時,筆記本工具列中會新增一個新按鈕前往執行中儲存格

第三,如果程式碼儲存格透過 notebook.outline.showCodeCellsnotebook.breadcrumbs.showCodeCells 設定在 [大綱] 或 [階層連結] 中可見,則它們會在執行時顯示動畫執行圖示。

偵錯

檢視和編輯二進位資料

VS Code 的通用偵錯工具現在支援檢視和編輯二進位資料(又稱「記憶體」)。記憶體檢視和編輯可用的變數會在變數檢視中顯示內嵌二進位圖示,選取它會開啟 Hex Editor

Binary data shown for a variable during a debug session

佈景主題:Codesong

記憶體檢視和編輯依賴偵錯工具介面協定的記憶體相關功能,偵錯擴充功能必須實作這些功能,才能在 VS Code 中啟用對應的 UI。如需詳細資訊,請參閱下方的偵錯工具擴充功能撰寫章節。在此版本中,只有內建的 JavaScript 偵錯工具支援檢視和編輯二進位資料,但我們預期其他偵錯擴充功能會很快跟進。

JavaScript 偵錯

從在中斷點暫停中排除呼叫端

有時您可能會設定中斷點或新增偵錯工具陳述式,但只想在從特定程式碼路徑呼叫時暫停。DOM 事件處理常式(例如 mousemove)是這方面的一個很好的範例。在此版本中,JavaScript 偵錯工具新增了從在中斷點或偵錯工具陳述式暫停中「排除呼叫端」的功能。

在某個位置暫停時,您可以滑鼠右鍵按一下呼叫堆疊檢視中的框架,然後選擇排除呼叫端命令。將顯示新的 EXCLUDED CALLERS 檢視,讓您可以檢視和管理排除的呼叫端,之後,如果排除的呼叫端出現在其呼叫堆疊中的任何位置,您的程式將不會在中斷點位置暫停。

Linux 上的 Edge 支援

現在 Linux 上可以使用 Microsoft Edge 偵錯,透過 edge 偵錯類型。

語言

Markdown 路徑 IntelliSense

內建 Markdown 擴充功能現在包含連結和影像的路徑 IntelliSense。

Path suggestions in a Markdown link

路徑建議的工作方式與 CSS 和 HTML 檔案中的路徑 IntelliSense 類似。以 / 開頭的路徑會相對於目前的工作區解析,而以 ./ 開頭或沒有任何前置字元的路徑會相對於目前的檔案解析。當您輸入 / 時,會自動顯示路徑建議,或者可以使用 ⌃Space (Windows、Linux Ctrl+Space) 手動叫用。

路徑 IntelliSense 也可以協助您連結到目前檔案內或另一個 Markdown 檔案內的標頭。以 # 開頭路徑可查看檔案中所有標頭的完成項目 (根據您的設定,您可能需要使用 ⌃Space (Windows、Linux Ctrl+Space) 才能看到這些)

Header section suggestions in a Markdown link

您可以使用 "markdown.suggest.paths.enabled": false 停用路徑 IntelliSense。

Markdown 刪除線支援

VS Code 現在支援在 Markdown 編輯器和內建 Markdown 預覽中呈現 ~~strikethrough~~ 文字

Strikethrough rendering the Markdown editor and preview

刪除線是透過將文字包裝在兩個波浪符號字元中來撰寫的。

雖然所有 VS Code 的內建佈景主題都支援刪除線,但來自 Marketplace 的某些佈景主題可能需要更新才能正確呈現編輯器中的刪除線文字。

TS 4.5.5

VS Code 現在捆綁了 TypeScript 4.5.5。

此次要更新修正了一些重要的當機和工具錯誤

JS/TS 以程式碼片段包圍

許多 JavaScript 和 TypeScript 程式碼片段已更新為支援包圍選取的文字。

若要使用包圍,請先選取一些文字,然後執行插入程式碼片段。程式碼片段(例如 ifforof)現在會使用選取的文字作為新陳述式的主體,而不是取代選取的文字。

HTML 在等號後方自動插入引號

在 HTML 中的屬性後方輸入 = 時,語言服務現在會自動插入引號,並將游標放在引號之間。設定 html.completion.attributeDefaultValue 可讓您指定引號的類型(單引號或雙引號),預設情況下使用雙引號。

可以透過設定 "html.autoCreateQuotes": false 停用此功能。

JSON 清除結構描述快取命令

新的命令清除結構描述快取會清除先前下載的結構描述快取。

LaTeX 支援

已新增 LaTeX 基本語言支援。這包括語法醒目提示和自動關閉配對。

LaTeX snippet

適用於 Web 的 VS Code

遠端存放庫

GitHub 存放庫

在適用於 Web 的 VS Code 中建立的提交現在已簽署,並在 GitHub UI 中標記為已驗證。此外,維護人員現在可以使用適用於 Web 的 VS Code 提交從分支提交的提取要求。這要歸功於新的 GitHub GraphQL createCommitOnBranch API。

此外,原始檔控制檢視現在支援多重選取

佈景主題:One Monokai

先前,只有在將 GitHub 存放庫複製到本機或遠端電腦後,才支援建立空的提交。您現在也可以使用適用於 Web 的 VS Code,使用 GitHub 存放庫:提交空的 命令來建立空的提交。

還新增了一個新的設定,以啟用自動下載給定大小以下的存放庫的完整內容,以啟用進階功能,例如整個存放庫文字搜尋和 前往參考。設定 remoteHub.experimental.fs.maxAutoDownloadSize 控制存放庫大小限制,超過此限制將在嘗試下載完整內容時顯示提示。預設情況下,未設定 maxAutoDownloadSize,以便永遠不會在沒有提示的情況下下載。

Azure Repos

Azure Repos 支援已從 GitHub 存放庫擴充功能移至其專用的擴充功能,該擴充功能也可以安裝在桌面上。

採用的預先發行擴充功能

適用於 Web 的 VS Code 現在捆綁了 GitHub 提取要求和問題GitHub 存放庫 擴充功能的預先發行版本。

PWA 和離線支援

適用於 Web 的 VS Code 已採用 PWA 模型,現在可以作為 PWA 安裝在主機作業系統上。由於採用了這種方式,現在也可以啟用一些離線功能。造訪過 vscode.devinsiders.vscode.dev 後,使用者現在可以使用它來編輯本機檔案,即使處於離線狀態也是如此。

Install VS Code PWA prompt

擴充功能貢獻

Python

改進的解譯器快速選取

為了更輕鬆地選取所需的解譯器,Python 擴充功能現在會依類型在選取解譯器快速選取中將解譯器分組。

Interpreters grouped in interpreter picker

我們也正在實驗將狀態列中的作用中/選取的解譯器移動到右側,可能在語言狀態內,因此如果看不到,請檢查右側的 Python 狀態。

新增對 'conda run' 的支援

為了改進我們對 Anaconda 使用者的支援,我們已實作對 conda run 的支援,使用 --no-capture-output 參數,該參數不會擷取過去造成錯誤的輸出。此功能已針對執行 linter、測試和格式化功能實作。

有一個已知的錯誤 問題 #10972,當在參數中使用特殊字元執行 linting 和測試時,會在 Windows 上造成錯誤。這是因為 conda run 讀取具有特殊字元的參數的方式,因此可能會影響您在 settings.json 中指定的任何命令列引數。

Anaconda 團隊正在處理此問題,並希望很快推出修正程式。一旦新版本發行,您就可以在 Conda 網站上更新您的 Anaconda 版本。

智慧選取和更好的摺疊支援

也透過 Pylance 語言伺服器對 Python 程式碼選取和摺疊進行了改進。

使用鍵盤選取 Python 程式碼需要的按鍵次數更少,因為在定義選取範圍時會考慮程式碼的語意資訊

佈景主題:Horizon Extended

至於摺疊,先前區域僅由縮排定義,這對於某些情況(例如多行字串)而言並不理想。現在,摺疊區域會適當地考慮語意資訊,並且也支援 #region 註解

Jupyter

遠端 Jupyter 伺服器

Jupyter 擴充功能現在不再需要在本機和遠端 Jupyter 伺服器之間切換時重新載入 VS Code。此外,擴充功能現在會在核心選取器中同時顯示本機和遠端核心。

Hex Editor

Hex Editor 已進行了一些重大的架構重構。值得注意的是,在大多數情況下,它現在能夠開啟任何大小的檔案,而不會產生效能問題。此外,其版面配置寬度現在可設定,並且具有更強大的尋找/取代實作。未來反覆運算將持續改進。

遠端開發

持續開發 遠端開發擴充功能,讓您可以使用容器、遠端電腦或 適用於 Linux 的 Windows 子系統 (WSL) 作為全功能開發環境。

您可以在遠端開發版本資訊中了解新的擴充功能和錯誤修正。

GitHub 提取要求和問題

持續開發 GitHub 提取要求和問題 擴充功能,讓您可以處理、建立和管理提取要求和問題。查看擴充功能 0.36.0 版本的變更記錄,以查看重點。

預覽功能

終端機殼層整合

終端機現在具有實驗性殼層整合功能,讓 VS Code 能夠深入了解終端機內正在發生的情況,而這在以前是未知的。當使用設定 "terminal.integrated.enableShellIntegration": true 啟用時,如果可能,將會將執行殼層整合指令碼的引數插入到您的終端機設定檔中。指令碼本身主要將不可見的序列插入到您的提示符號中,為 VS Code 提供資訊,例如提示符號、命令和命令輸出的位置、每個命令的目前工作目錄 (cwd) 以及每個命令的結束代碼。

使用此資訊,我們可以透過各種方式增強現有功能

  • 快速偵測 cwd - 先前這僅在 macOS 和 Linux 上才有可能,並且會啟動處理程序或查詢檔案系統以取得該資訊。現在這也適用於 Windows。cwd 用於連結偵測等功能,並在分割終端機索引標籤時繼承 cwd。
  • 改進命令追蹤功能 - 此功能先前已存在,但僅在 macOS (Cmd+Up/Down) 上具有預設鍵盤快速鍵,並使用簡單方法根據按下 Enter 的時間來猜測行的位置。

殼層整合啟用下列新功能

  • 執行最近的命令 - 由於我們知道執行了哪些命令,因此我們可以公開一個命令,讓您可以在快速選取中檢視並再次執行它們。最近的命令會顯示在快速選取中,包括有關目前工作目錄以及它們執行時間多久之前的資訊
  • 前往最近的目錄 - 與上述類似,我們也允許導覽至過去的目錄。最近使用的目錄會顯示在快速選取視窗中,並依使用頻率排序 (遞減)
  • 連結支援相對於目前工作目錄 (cwd) - 我們現在知道終端緩衝區中每一行的目前工作目錄,因此我們可以支援開啟終端機中相對於啟用位置的目前工作目錄的連結。 以前,當點擊連結時,會開啟一個快速選取視窗,其中包含任何包含該名稱的資料夾的結果。 現在,將會開啟完全符合的檔案。在目前工作目錄為 vscode 的終端機中,會回顯 package.json。點擊檔案名稱將會開啟 vscode/package.json。目錄會變更為 template-string-converter,然後回顯 package.json。點擊檔案名稱將會開啟 template-string-converter/package.json。

我們的目標是在功能可靠性足夠好的時候,預設開啟 Shell 整合功能。 我們在引數注入方面採用的方法是盡可能不具侵入性。 例如,我們不會像某些終端機那樣自動修改您的 Shell 初始化腳本,而是攔截程序的建立、檢查引數,並在我們確信終端機可以使用它們的情況下注入 Shell 整合引數。 我們希望在使用者無需任何設定的情況下使其運作良好,並且不會干擾您現有的 Shell 設定。

目前支援的 Shell 包括 Windows 的 pwsh,以及 Linux 和 macOS 的 pwsh、bash 和 zsh。

如先前所述,這是一個實驗性功能,還有些粗糙,並且存在一些已知問題

  • 尚不支援 $PS2 行續行。 但是,pwsh 中的行續行可以正常運作。
  • 尚不支援右側提示字元。
  • 已知 zsh 腳本有時無法啟動
  • 遠端 VS Code 視窗支援有限。

檔案總管檔案巢狀結構

檔案總管現在具有實驗性支援,可以邏輯巢狀佈局顯示同一目錄中的檔案。 這對於視覺化地將相關檔案分組在一起,並將檔案摺疊到「根」檔案中以減少混亂非常有用。 已新增多個新設定來控制此行為

  • explorer.experimental.fileNesting.enabled:控制是否啟用檔案巢狀結構。
  • explorer.experimental.fileNesting.expand:控制檔案巢狀結構是否預設顯示為展開。
  • explorer.experimental.fileNesting.patterns:控制檔案如何巢狀。

例如,在許多儲存庫中,.ts 檔案與其衍生的 .js.d.ts 和/或 .js.map 檔案並排放置。 雖然長期以來可以透過 files.exclude 完全隱藏衍生檔案,但現在可以使用巢狀結構快速存取衍生檔案,這點很不錯

下方的檔案總管正在使用預設的 explorer.experimental.fileNesting.patterns 設定來巢狀 .js.js.map 檔案,這些檔案會在展開對應的 .ts 檔案時顯示。

Explorer with some collapsed and expanded nests

佈景主題:GitHub Light

擴充功能撰寫

語言預設圖示

語言貢獻者可以為語言定義圖示。

{
  "contributes": {
    "languages": [
      {
        "id": "latex",
        // ...
        "icon": {
          "light": "./icons/latex-light.png",
          "dark": "./icons/latex-dark.png"
        }
      }
  ]

如果目前的檔案圖示佈景主題僅具有該語言的通用檔案圖示,則會顯示該圖示。

此外,像 MinimalNone 這樣不顯示檔案圖示的檔案圖示佈景主題,將不會使用語言圖示。 如果檔案圖示佈景主題具有副檔名或檔案名稱的圖示,則這些圖示將優先使用。

檔案圖示佈景主題可以透過在佈景主題檔案中定義 showLanguageModeIcons: true|false 來客製化新的行為。

  • showLanguageModeIcons: true 即使佈景主題未指定檔案圖示,也會顯示預設語言圖示。
  • showLanguageModeIcons: false 防止使用預設語言圖示。

QuickPickItem 分隔符

擴充功能作者現在可以將分隔符新增至快速選取視窗。 這對於將項目分組或在項目之間新增一些空間非常有用

Quick Pick separators

若要將分隔符新增至現有的快速選取視窗,請將新的 QuickPickItem 新增至現有的項目清單,但請在 QuickPickItem 上指定 kind 屬性並將其設定為 QuickPickItemKind.Separator

在上面的範例中,您會將以下物件新增至項目清單中

{
    label: 'APIs',
    kind: QuickPickItemKind.Separator
}

如果您未指定 kind 屬性,或將其設定為 QuickPickItemKind.Default,則該項目將被視為一般的 QuickPickItem

vscode.workspace.createFileSystemWatcher 現在支援任何路徑

現有的 vscode.workspace.createFileSystemWatcher API 已獲得改進,允許您傳入任何檔案或資料夾路徑以進行檔案監看,即使它在工作區之外。 以前,檔案監看器僅限於工作區中開啟的資料夾。

根據您傳遞到方法的 glob 模式,監看器將是遞迴的(例如,**/*.js)或非遞迴的(*.js)。 遞迴監看器需要更多資源,因此我們建議盡可能使用簡單的 glob 模式。

範例

// Watch a folder non-recursively
vscode.workspace.createFileSystemWatcher(new vscode.RelativePattern(vscode.Uri.file(<path to folder outside workspace>), '*.js'));

// Watch the active text editor file
vscode.workspace.createFileSystemWatcher(new vscode.RelativePattern(vscode.window.activeTextEditor.document.uri, '*'));

注意: 作為此變更的一部分,我們對現有的檔案監看器進行了行為變更。 僅使用 glob 模式指示的檔案監看器(例如,vscode.workspace.createFileSystemWatcher('**'))將不再接收工作區外部變更的檔案事件。 它只會接收來自工作區內路徑的檔案事件。 如果使用者沒有開啟的工作區,則不會再透過此方法傳遞任何事件。 這樣做是為了確保擴充功能不會收到來自工作區外部的意外事件。

vscode.TerminalLocation

您可以使用新的 TerminalLocation API 指定擴充功能終端機的建立位置。

這可以透過提供 parentTerminal,在 編輯器區域和面板之間進行選擇等方式,來建立分割終端機。

onWill 事件的取消權杖

VS Code API 公開事件以參與檔案操作,例如 onWillRenameFiles。 這種參與可能會長時間執行,因此使用者可以取消它。 在此版本中,擴充功能可以透過對應事件上的取消權杖觀察使用者端取消,例如 FileWillRenameEvent#token。 這允許擴充功能也取消昂貴的低階操作。

Git 擴充功能 API

  • 新增了新的 Repository.add 方法,以啟用暫存檔案的功能。
  • 新增了 Repository.tagRepository.deleteTag 方法,以啟用建立和刪除標籤的功能。

onTaskType 啟動事件

提供工作的擴充功能可以使用新的 onTaskType:foo 啟動事件來限制其不必要的啟動。 相較於在 onCommand:workbench.action.tasks.runTask 上啟動,這是一個改進,因為 workbench.action.tasks.runTask 通常對於工作提供擴充功能來說太過積極。

偵錯工具擴充功能撰寫

VS Code 現在實作了偵錯配接器協定的記憶體相關功能

在此版本中,VS Code 已開始透過支援 偵錯配接器協定 的以下記憶體相關功能來支援檢視和編輯二進位資料

  • VS Code 遵循 DAP 變數上的 memoryReference 屬性,並透過將用戶端功能 supportsMemoryReferences 傳遞給偵錯配接器來宣告這一點。
  • 如果 VS Code 從偵錯配接器收到功能 supportsReadMemoryRequest,它將啟用用於檢視二進位資料的 UI,並發出 readMemory 請求以檢索資料。
  • 如果 VS Code 從偵錯配接器收到功能 supportsWriteMemoryRequest,它將啟用用於編輯二進位資料的 UI,並發出 writeMemory 請求以儲存資料。
  • VS Code 處理 memory 事件,並透過將用戶端功能 supportsMemoryEvent 傳遞給偵錯配接器來宣告這一點。

語言伺服器通訊協定

新版本的 語言伺服器協定 以及對應的 npm 模組已經發布。 該版本包含筆記本文件的建議實作。 規格部分可以在此處閱讀。

建議的擴充功能 API

每個里程碑都帶有新的建議 API,擴充功能作者可以試用它們。 與往常一樣,我們希望收到您的回饋。 以下是試用建議 API 的步驟

  1. 尋找您想要試用的提案,並將其名稱新增至 package.json#enabledApiProposals
  2. 使用最新的 vscode-dts 並執行 vscode-dts dev。 它會將對應的 d.ts 檔案下載到您的工作區中。
  3. 您現在可以針對提案進行程式設計。

您無法發布使用建議 API 的擴充功能。 下一個版本可能會出現重大變更,我們絕不希望破壞現有的擴充功能。

停用終端機持久性

建立終端機時,您可以透過在 TerminalOptionsExtensionTerminalOptions 中設定 disablePersistence,選擇在重新啟動和重新載入時停用終端機持久性。

export interface TerminalOptions {
  disablePersistence?: boolean;
}

內嵌提示 API

這是在向所有對內嵌提示 API 感興趣的人們發出呼籲。 它即將完成,並已新增對互動式標籤部分的支持。 這些部分允許您將原始碼位置繫結到提示,從而啟用程式碼導覽等功能。 此外,現在支援命令。 此提案的最新狀態和開發進度在此處:vscode.proposed.inlayHints.d.ts

語言狀態 API

語言狀態項目 API 計劃最終定案。 請試用並為 vscode.proposed.languageStatus.d.ts 提供回饋

測試提案

我們正在提出一種官方方法來實作測試的「重新整理」處理常式,請查看 vscode.proposed.testRefresh.d.ts。 這將允許擴充功能在 VS Code 中統一在標準的「重新整理」按鈕後面,並避免實作自己的按鈕。

此外,我們建議 TestItemvscode.proposed.testSortText.d.ts 中具有 sortText 屬性。

內嵌完成:自動括號完成

當擴充功能提供內嵌完成項目時,它可以將其屬性 completeBracketPairs 設定為 true。 如果設定,VS Code 會嘗試在向使用者顯示內嵌完成之前,透過關閉或移除它們來修復完成文字中的無效括號。

樹狀結構拖放提案支援拖曳到編輯器中

樹狀結構拖放提案幾乎已準備好最終定案,現在支援從樹狀檢視拖曳到編輯器中,前提是 TreeDragAndDropController 支援 "resourceurls" mime 類型。 詳細資訊請參閱 issue #141418。 試用它並為 vscode.proposed.treeViewDragAndDrop.d.ts 提供回饋。

註解時間戳記

註解 API 在 Comment 上有一個新的 timestamp 屬性。 與 API 一起推出的是一個新設定,用於控制註解時間戳記的顯示方式:comments.useRelativeTime。 請試用並為 vscode.proposed.commentTimestamp.d.ts 提供回饋。

工程

vscode-bisect 工具

一個新的工具,用於二分搜尋已發布的 VS Code Insiders 版本(網頁和桌面版),可用於協助診斷問題

npx vscode-bisect

git bisect 類似,vscode-bisect 將啟動過去發布的一系列 Insiders 組建,詢問該組建是否重現了問題。 最終結果是引入問題的一系列提交。 該實例將使用專用的全新資料夾來儲存使用者資料,以避免影響您的主要開發環境。

從來源執行 Code Web 和 Server

從來源執行 VS Code for the Web 和 VS Code Server 的腳本已移至 scripts 資料夾

  • ./scripts/code-web.sh|bat 從來源啟動 Code for the Web(又名「無伺服器」),並在瀏覽器中開啟它。 使用 --help 取得更多選項。
  • ./scripts/code-server.sh|bat 從來源啟動 VS Code Server。 新增 --launch 以額外在瀏覽器中開啟 Web UI。 使用 --help 取得更多選項。
  • 用於遠端 Web 測試的 ./scripts/test-web-integration.sh|bat
  • 用於遠端測試的 ./scripts/test-remote-integration.sh|bat

擴充功能

在這個里程碑中,我們透過最小化 VS Code 向服務發出的查詢數量,改進了 Marketplace 互動。

重大修正

  • 91286 在用戶端上節流設定同步活動
  • 117648 使用 sass 擴充功能以 emmet 展開 "gtc" 時,結果很奇怪。
  • 134466 不存在的偵錯工具設定
  • 135677 將滑鼠懸停在設定 UI 連結上方時,開頭會顯示 #
  • 138072 將最近開啟的工作區儲存在全域儲存空間中
  • 138805 開啟大型二進位檔案會讀取完整內容
  • 138850 在磁碟上的檔案變更後,開啟的編輯器可能會變成空白
  • 139880 偵錯:在 F5 上被要求儲存檔案
  • 140003 無法從不同工作區資料夾中的啟動設定參考工作
  • 140129 雙擊 settings.json 檔案每次都會產生新的索引標籤
  • 140560 VS Code 停止偵錯 API 的問題
  • 140967 Comment.body 呈現為 Markdown,即使對於純字串也是如此

感謝您

最後但同樣重要的是,衷心感謝 VS Code 的貢獻者。

Web 擴充功能

擴充功能作者啟用作為 Web 擴充功能 執行程式碼的擴充功能(以下清單介於 2021 年 12 月 7 日至 2022 年 1 月 31 日之間)

問題追蹤

對我們問題追蹤的貢獻

提取請求

vscode 的貢獻

vscode-css-languageservice 的貢獻

vscode-eslint 的貢獻

vscode-extension-samples 的貢獻

vscode-html-languageservice 的貢獻

vscode-js-debug 的貢獻

  • @zkx5xkt: 修正:DebugSessionTunnels。遠端/本機埠使用方式錯置 PR #1163

vscode-pull-request-github 的貢獻

vscode-textmate 的貢獻

vscode-vsce 的貢獻

debug-adapter-protocol 的貢獻

monaco-editor 的貢獻

node-jsonc-parser 的貢獻