🚀 在 VS Code 中

2022 年 4 月 (版本 1.67)

更新 1.67.1:此更新解決了這個安全性問題

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

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


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

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

觀看發行派對: 聆聽 VS Code 團隊討論一些新功能。您可以在我們的 YouTube 頻道上找到活動錄影

重點簡短說明: 如果您只有 60 秒,請查看 4 月 VS Code 發行重點影片,快速了解新功能。

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

工作台

檔案總管檔案巢狀結構

檔案總管現在支援根據相關檔案的名稱將其巢狀化。有幾個設定可以控制此行為

  • explorer.fileNesting.enabled - 控制是否全面啟用檔案巢狀結構。可以全域設定或針對特定工作區設定。
  • explorer.fileNesting.expand - 控制是否預設展開巢狀檔案。
  • explorer.fileNesting.patterns - 控制檔案的巢狀方式。預設組態為 TypeScript 和 JavaScript 專案提供巢狀結構智慧功能,但建議您修改此組態以符合您自己的專案結構。一些範例

預設組態

.js and .min.js files nested under .ts file, tsconfig.test.json nested under tsconfig.json, package-lock.json nested under package.json

當檔案符合目錄名稱時,巢狀於 index.ts 下 ("index.ts": "${dirname}.ts")

in directory named SomeFolder, SomeFolder.ts is nested under index.ts

巢狀名稱與不同檔案相同但新增區段的檔案 ("*": "${basename}.*.${extname}")

file1.test.myext is nested under file1.myext, file2.spec.other is nested under file2.other

佈景主題:GitHub Light High Contrast

檔案巢狀結構已透過實驗性設定提供多個反覆運算。現在的行為大致上沒有改變,檔案操作除外。實驗性設定 explorer.experimental.fileNesting.operateAsGroup 已移除,改為在摺疊時將巢狀結構視為群組,否則視為單一實體。這表示如果您想要複製、剪下、拖曳或刪除整個巢狀檔案堆疊,您可以摺疊巢狀結構,然後將其視為單一實體進行操作。當巢狀元素展開時,選取範圍的行為將會如同正常情況。

設定編輯器搜尋篩選器按鈕

設定編輯器搜尋控制項現在在右側包含一個漏斗按鈕。按一下按鈕會顯示篩選器清單,您可以將其套用至搜尋查詢,以便篩選縮小結果範圍。

佈景主題:Light Pink

設定編輯器語言篩選器指示器

設定編輯器語言篩選器現在會變更範圍文字,以更清楚地顯示套用語言篩選器時正在作用的語言。上面的簡短影片顯示套用至篩選設定的 Markdown 語言篩選器 (@lang:markdown)。

作為參考,當套用語言篩選器時,修改設定的值將只會修改該語言的設定值。語言特定的設定settings.json 中依語言識別碼劃分範圍

  "[markdown]": {
      "editor.wordBasedSuggestions": "off"
  }

在重構後儲存檔案

重構 (例如重新命名) 通常會修改多個檔案,並使這些檔案處於未儲存變更 (已修改) 的狀態。外部開發工具通常需要儲存這些檔案。為了簡化此工作流程,有一個新的設定 files.refactoring.autoSave,預設為 true,並控制是否應自動儲存屬於重構一部分的檔案。

在編輯器限制中排除已修改的編輯器

新的設定 workbench.editor.limit.excludeDirty 控制開啟編輯器的最大數量是否應排除已修改的編輯器,以計入設定的限制。此設定預設為停用 (false)。

將「未認可的變更」帶回時間軸

當我們在上個月推出本機歷程記錄功能時,我們從 Git 時間軸提供者中移除了未認可的變更項目,因為它感覺有點多餘。然而,有些使用者在此時間軸項目中看到了真正的價值,現在您可以透過相應地設定新的 git.timeline.showUncommitted 設定將其帶回。

開啟失敗時的新編輯器預留位置

當編輯器開啟失敗時,VS Code 不再顯示通知並顯示先前開啟的編輯器。相反地,會有一個包含錯誤訊息的通用預留位置,在某些情況下,還會有解決錯誤的動作。

語言狀態改進

語言狀態項目現在會顯示格式器衝突 - 當安裝了多個語言格式器,但沒有任何一個格式器設定為預設格式器時,就會發生這些衝突。此外,當語言狀態項目包含嚴重狀態時,它會更醒目。

此外,當您的文件疑似為與目前設定語言不同的語言時,語言狀態項目現在會顯示切換語言的提示。這僅適用於未命名的編輯器和筆記本儲存格,並且可以使用 workbench.editor.languageDetectionHints 設定進行設定。以下是在 Handy Dandy Notebook 中示範的範例,它支援以各種不同的語言執行儲存格。

佈景主題:GitHub Light High Contrast

顯示無效或不相容的擴充功能

擴充功能檢視現在會在已安裝擴充功能清單中顯示無效或不相容的擴充功能,並顯示錯誤狀態。例如,如果您的 VS Code 版本是 1.67.0-insider,而且您已安裝需要 VS Code 版本 1.68.0 的擴充功能,則它會以不相容的錯誤狀態顯示在清單中。

Incompatible extension details shown in the Extensions view item hover

退出前確認

可以設定新的設定 window.confirmBeforeClose,以便在退出應用程式之前顯示確認對話方塊。

您可以選擇 keyboardOnly,以便在使用按鍵繫結時顯示確認對話方塊,或選擇 always,即使使用滑鼠退出也是如此。

注意:此設定並非完全是新的設定,在 適用於網頁的 VS Code 中已提供一段時間。

comments.openView 預設值

comments.openView 的舊預設值為 file,這會導致每次開啟包含註解的檔案時都開啟「註解」檢視。為了讓「註解」檢視更不吵雜,新的預設值為 firstFile,這會導致「註解」檢視僅在工作階段期間第一次開啟包含註解的檔案時開啟。

多行註解

在幕後,自註解 UX 定案以來,VS Code 一直支援多行註解,但多行註解從未在 UI 中顯示。您現在可以查看和留下多行註解。

在新視窗中處理 URI

每當 VS Code URI 包含查詢參數 windowId=_blank 時,VS Code 都會在新的視窗中處理它。範例:vscode://vscode.git/clone?url=https%3A%2F%2Fgithub.com%2FMicrosoft%2Fvscode-vsce.git&windowId=_blank

編輯器

括號組顏色標示預設為啟用

鑑於 1.60 版本中推出的新括號組顏色標示功能獲得正面意見反應,我們預設已啟用括號組顏色標示。

Side by side comparison with bracket pair colorization on and off

可以將 "editor.bracketPairColorization.enabled" 設定為 false 來停用括號組顏色標示。

也可以僅針對特定語言停用括號組顏色標示

"[typescript]": {
  "editor.bracketPairColorization.enabled": false,
},

TextMate 文法可以將語彙基元標記為不平衡

先前,TextMate 文法無法將某些括號標記為不平衡,例如 shell 指令碼的 case 陳述式中的右括號

Old behavior where unbalanced brackets not detected

為了讓括號組比對和顏色標示更健全,TextMate 文法貢獻現在可以表示某些語彙基元中的括號不應比對。在擴充功能 package.jsoncontributes 區段中,提供的文法可以使用屬性 balancedBracketScopes (預設為 ["*"]) 和 unbalancedBracketScopes (預設為 []) 來包含或排除括號比對的範圍。

"grammars": [{
    "language": "shellscript",
    "scopeName": "source.shell",
    "path": "./syntaxes/shell-unix-bash.tmLanguage.json",
    "balancedBracketScopes": [ "*" ],
    "unbalancedBracketScopes": [ "meta.scope.case-pattern.shell" ]
}],

透過此功能,shell 指令碼的文法現在可以指出 case 陳述式中的 ) 不應比對

New behavior correctly skipping a bracket that isn't matched

新的括號比對演算法

括號比對現在使用與括號顏色標示相同的資料結構。這既提高了準確性,也提高了效能。

舊的括號比對行為 (請注意,色彩和醒目提示裝飾不符)

Old behavior with incorrect bracket matching

新的括號比對行為

New behavior with correct bracket matching

括號指引改進

水平括號指引現在正確地支援換行。此外,僅跨越單行的括號組也會取得自己的水平括號指引。

Horizontal bracket guides displayed for wrapped lines

水平括號指引預設為停用,可以使用 "editor.guides.bracketPairsHorizontal": true 啟用。

在此版本中,"editor.guides.highlightActiveIndentation" 現在接受值 "always"。如果設定為 always,即使已存在作用中的括號組,也會醒目提示縮排指引。

切換內嵌提示

內嵌提示是一種在原始碼中直接顯示額外資訊的絕佳方式。但是,有時您只想查看實際的原始碼。為了支援快速隱藏內嵌提示,editor.inlayHints.enabled 設定已變更:除了 onoff 之外,還有值 onUnlessPressedoffUnlessPressedon/offUnlessPressed 值會在按下並按住 Ctrl+Alt 時隱藏或顯示內嵌提示。

編輯器 › 內嵌提示:已啟用

  • on - 內嵌提示已啟用。
  • off - 內嵌提示已停用。
  • onUnlessPressed - 內嵌提示會顯示,並在按下 Ctrl+Alt 時隱藏。
  • offUnlessPressed - 內嵌提示會隱藏,並在按下 Ctrl+Alt 時顯示。

改良的行內建議

上個月,我們新增了針對快速建議使用 👻 虛影文字 (淡色) 的功能。提醒:您需要針對 editor.quickSuggestions 設定使用 inline。我們已在此區域完成一些潤飾工作,特別是現在支援觸發字元和 TypeScript「使用引數完成函式」。

若要在輸入觸發字元 (例如 .) 時停用 IntelliSense,請設定 "editor.suggestOnTriggerCharacters": false。若要啟用 TypeScript 函式呼叫完成,請使用 "typescript.suggest.completeFunctionCalls": true

將文字拖放到編輯器中

您現在可以將文字從其他應用程式拖放到文字編輯器中。例如,在 macOS 上,這可讓您將表情符號從表情符號面板拖放到文字編輯器中

拖曳時,虛線游標會顯示文字將插入的位置。

終端機

尋找結果計數

在終端機中搜尋時,結果計數和目前選取的比對索引現在會顯示在「尋找」控制項中。

Text is searched for in the terminal and the Find control is labeled match 12 of 14 to indicate that match 12 is currently selected

原始碼控制

原始碼控制存放庫檢視

在此里程碑中,我們推出了新的設定 scm.repositories.sortOrder,以控制原始碼控制存放庫檢視中顯示的存放庫的預設排序順序。存放庫可以依發現順序、名稱和完整路徑排序。可以使用原始碼控制存放庫檢視的 ... 檢視和更多動作功能表,以及原始碼控制檢視的 ... > 檢視與排序 > 存放庫功能表來變更排序順序。

下面的簡短影片顯示 SCM > 存放庫:排序順序設定預設為 discovery time (發現時間),即選取存放庫的時間,您也可以在「原始碼控制」檢視中變更排序順序。

編輯器裝飾改進

在上一個里程碑中,我們透過採用已修改行裝飾的模式,改進了已新增/已修改行的編輯器裝飾的協助工具。在此里程碑中,我們新增了新的設定 scm.diffDecorationsGutterPattern,可讓使用者切換編輯器裝飾的模式。

此設定預設為針對已修改的行裝飾使用模式,但不針對新增的行使用模式

"scm.diffDecorationsGutterPattern": {
    "added": false,
    "modified": true
}

效能改進

git.untrackedChanges 設定設為 hidden 的使用者在使用大型存放庫時,效能會更好。這是透過在呼叫 git status 時傳遞 -uno 參數來達成的。

擴充的遠端原始碼提供者 API

Git 擴充功能 API 現在允許註冊或顯示遠端原始碼提供者的擴充功能,以提供有關遠端原始碼的更豐富資訊。

遠端原始碼提供者現在可以設定個別遠端原始碼的描述和圖示。此外,提供者可以選擇性地指定最近的遠端原始碼。這些遠端原始碼會顯示在選擇器的最上層,以便於存取,並依時間戳記排序 (如果已提供時間戳記)。

內建 GitHub 擴充功能,以及 GitHub 存放庫Azure 存放庫 擴充功能已在 github.devvscode.dev 中採用擴充的 API。

使用 SSH 從 GitHub 複製

新的設定 github.gitProtocol 可讓您在從 GitHub 複製存放庫時變更預設協定。值預設為 https,但可以變更為 ssh

偵錯

自動展開延遲變數

幾個月前,我們新增了按一下按鈕以展開偵錯工具「變數」檢視中的「延遲」變數的支援。有一個新的設定 debug.autoExpandLazyVariables,可自動展開延遲變數,而無需按一下。

延遲變數的新按鈕

我們已將文字連結按鈕更新為具有「眼睛」codicon 的實際按鈕。「眼睛」codicon 也已更新,看起來更像眼睛。

A button to expand a lazy variable

Shift+按一下以停用中斷點

您現在可以 Shift+按一下 中斷點 (或條件式中斷點,或記錄點) 以停用它,然後重新啟用它。

語言

您現在可以透過將檔案從 VS Code 的檔案總管拖放到 Markdown 編輯器中,快速建立 Markdown 連結。在將檔案拖曳到 Markdown 編輯器上方時按住 Shift,即可將檔案拖放到編輯器中,並建立其連結

如果檔案看起來像是圖片,VS Code 會自動插入 Markdown 圖片。否則,會新增一般 Markdown 連結。

當從其他應用程式拖曳某些類型的檔案時,這也適用,例如從網頁瀏覽器拖放圖片

您可以透過設定 "markdown.editor.drop.enabled": false 來停用此拖放行為。

Markdown:尋找所有標題參考

VS Code 現在支援在 Markdown 檔案中針對標題執行尋找所有參考。這可讓您查看在目前工作區內使用給定標題的所有位置,包括從其他 Markdown 檔案連結到該標題的連結。

若要開始使用,請將游標放在標題本身,或放在標題連結的片段部分 (例如,[連結文字](#_some-header)[連結文字](/path/to/file#some-header) 中的 #some-header),然後執行尋找所有參考

Finding all references to a Markdown header

這將在「參考」檢視中顯示所有參考。如果您偏好不同的檢視,也可以使用查看參考移至參考命令。

VS Code 也支援尋找目前檔案中所有參考連結的參考。這適用於

  • [一些文字][ref] 中的 ref
  • 速記連結 [ref] 中的 ref
  • 連結定義 [ref]: http://example.com 中的 ref

Finding all places a Markdown link reference is used

Markdown:尋找所有檔案參考

您現在也可以在目前工作區中尋找給定 Markdown 檔案的所有參考。同樣地,這包括跨檔案的連結。

這可以透過幾種方式觸發

  • 若要尋找目前 Markdown 檔案的參考,請使用Markdown:尋找檔案參考命令。
  • 若要在檔案總管中尋找 Markdown 檔案的參考,請在其上按一下滑鼠右鍵,然後執行尋找檔案參考命令。
  • 在 Markdown 檔案連結的檔案部分 (例如 [文字](/link/to/file.md)) 上執行尋找所有參考

這將列出參考給定檔案的所有位置,包括參考該檔案中標題的參考。

Markdown:尋找所有 URL 參考

最後,我們也支援尋找目前工作區中使用給定 URL 的所有位置。

Finding all places where a URL is used in Markdown files

Markdown:重新命名標題

是否曾經變更 Markdown 檔案中的標題,才發現您也意外地中斷了所有連結到該標題的連結?這就是我們新的 Markdown 重新命名支援可以派上用場的地方。

若要開始使用,請將游標放在標題上,然後按下 F2 以開始重新命名。輸入標題的新文字,然後按下 Enter 以接受。這將同時更新目前的標題,以及更新目前工作區中所有已知的連結到該標題的連結。

您可以在標題本身上,或在標題連結的標題元件上觸發重新命名。例如,[連結文字](#_some-header)[連結文字](/path/to/file#some-header) 中的 some-header

您也可以在 Markdown 中重新命名參考連結。這將更新目前 Markdown 檔案中的所有參考連結

Renaming a Markdown link reference using F2

Markdown:重新命名檔案

為了完善我們新的 Markdown 重新命名支援,您現在可以在 Markdown 連結中的檔案路徑上使用 F2,以重新命名磁碟上的檔案,並更新所有 Markdown 參考到該檔案的參考

Renaming a file by pressing F2 on the file path in a link

目前僅支援在文字編輯器中針對檔案連結使用 F2 來重新命名檔案。在即將到來的反覆運算中,我們也計劃在檔案總管中觸發重新命名時支援更新連結。

JSON

新的設定 json.validate.enable 可讓您關閉 JSON 驗證。

適用於網頁的 VS Code

開啟遠端存放庫選擇器

當您使用開啟遠端存放庫選擇器時,適用於網頁的 VS Code 現在會遵循 window.openFoldersInNewWindow 設定。這會使選擇器行為與其他版本的 VS Code 一致,並取代在新視窗中開啟快速選取項目按鈕。

擴充功能貢獻

Java

內嵌提示

包含在 Extension Pack for Java 中的 Java 語言服務現在支援內嵌提示,以顯示方法簽章的參數名稱。

Java 參數名稱內嵌提示有三種模式

  • literals - 僅針對常值引數啟用參數名稱提示 (預設)。
  • all - 針對常值和非常值引數啟用參數名稱提示。
  • none - 停用參數名稱提示。

延遲變數解析

Debugger for Java 擴充功能現在支援「延遲」變數。此功能可讓您延遲昂貴變數的運算,直到您明確展開偵錯工具 UI 以查看其值為止。

Jupyter

Jupyter PowerToys 擴充功能

我們很高興宣佈 Jupyter PowerToys 擴充功能,它提供使用 Jupyter 筆記本的實驗性功能。在其第一個版本中,我們已建立下列功能的原型

  • 核心管理面板
  • 內容相關說明
  • 執行群組

我們希望您試用這些功能,並讓我們知道您的想法,以便我們有一天可以將它們磨練成受支援的功能!

如需詳細資訊,請參閱 vscode-jupyter-powertoys 存放庫中的 README。

網頁擴充功能

Jupyter 擴充功能現在可以安裝為網頁擴充功能,以便與 vscode.dev 搭配使用。目前功能有限,僅支援在不需要 https 的 Jupyter 伺服器上執行的筆記本 (.ipynb 檔案)。

如果您想試驗此功能,請從本機電腦啟動 Jupyter,並使用

jupyter --no-browser --NotebookApp.allow_origin_pat=https://.*\.vscode-cdn\.net

並使用命令Jupyter:指定 Jupyter 伺服器以進行連線連線到它。

在即將發行的版本中,我們將啟用更多在瀏覽器中執行時的功能,包括

  • 「https」型伺服器
  • IntelliSense
  • 資料檢視
  • 變數檢視
  • 互動式視窗
  • IPyWidgets
  • 繪圖檢視
  • 匯出

Jupyter 核心處理

Jupyter 核心處理進行了許多更新

  • 為了更清楚地顯示核心何時當機,擴充功能現在會在儲存格輸出中顯示此資訊。
  • 當在執行期間偵測到某些已知錯誤時,儲存格輸出中現在會提供疑難排解指導。
  • 解決核心執行問題可能是一個棘手且耗時的過程。我們已在我們的 Wiki 上整理出疑難排解區段,我們希望它可以協助您更快地找到解決方案。我們的 GitHub 討論論壇也可以是取得協助的絕佳資源。

Python

變更語言伺服器時無需重新載入

Python 擴充功能現在支援更新 python.languageServer 設定的值,並自動重新啟動語言伺服器,而無需重新載入 VS Code。

Black 格式器擴充功能

現在有一個 Black Formatter 擴充功能,它使用 black 格式器為 Python 提供格式化支援。擴充功能的預先發行版本可供安裝。

使用 isort 組織匯入

新的 isort 擴充功能,它使用 isort 程式庫提供匯入組織。擴充功能的預先發行版本可供使用。

遠端開發

持續進行 Remote Development 擴充功能的工作,這些擴充功能可讓您使用容器、遠端電腦或 適用於 Linux 的 Windows 子系統 (WSL) 作為功能完整的開發環境。

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

GitHub Pull Requests and Issues

持續進行 GitHub Pull Requests and Issues 擴充功能的工作,此擴充功能可讓您處理、建立和管理提取要求和問題。此版本的重點包括

  • 多行註解
  • 在樹狀結構中顯示提交變更

查看擴充功能 0.42.0 版本的變更記錄,以查看其他重點。

預覽功能

設定設定檔

在此里程碑中,我們推出了設定設定檔,它是您的設定、擴充功能和 UI 自訂的集合。如果您自訂了 VS Code,您現在可以將您的自訂項目匯出到設定設定檔檔案 (mysetup.code-profile),並將其儲存到您的電腦並與其他人共用。

以下簡短影片顯示從 VS Code 匯出設定設定檔

您也可以匯入設定設定檔檔案以還原您的自訂項目。

以下顯示將設定設定檔匯入到 VS Code 中

您可以在雲端託管您的設定檔,例如將其儲存為公開的 GitHub gist,並與他人分享網址。其他人可以透過提供網址來匯入設定檔。

注意: 目前,設定檔中僅包含以下 UI 自訂項目。未來將會加入更多項目。

  • 狀態列項目可見性
  • 活動列、底部面板和側邊面板項目可見性和順序
  • 檢視畫面可見性、位置和順序

TypeScript 4.7 支援

此更新包含對即將推出的 TypeScript 4.7 版本的支援。請參閱 TypeScript 4.7 迭代計畫,以瞭解 TypeScript 團隊目前正在進行的工作的更多詳細資訊。以下是一些重點

  • 使用新的前往原始碼定義命令,直接跳轉到程式庫函式的 JavaScript 實作。您可以在 TypeScript issue #49003 中瞭解更多關於此功能的資訊並分享您的意見回饋。
  • 用於完成物件成員方法的程式碼片段。
  • 群組感知的整理匯入.

若要開始使用 TypeScript 4.7 nightly build,請安裝 TypeScript Nightly 擴充功能。

擴充功能撰寫

Tab API

我們已完成 tabs API 的唯讀端(也支援關閉 tab),標誌著我們最受歡迎的問題之一 microsoft/vscode#15178 的完成。這公開了諸如群組數量、已開啟的 tab、作用中的 tab、tab 代表的編輯器類型等等資訊!更多資訊可以在 vscode.d.ts 檔案中找到,API 的進入點為 window.tabGroups

Notebook 變更和儲存事件

我們已完成兩個與 notebook 相關的事件

  • vscode.workspace.onDidSaveNotebookDocument - 在 notebook 儲存時觸發的事件。
  • vscode.workspace.onDidChangeNotebookDocument - 在 notebook 變更時觸發的事件。這包括結構性變更,例如新增或移除儲存格,以及儲存格變更,例如變更輸出或中繼資料。

支援非遞迴工作區檔案監看器

在之前的里程碑中,我們 宣布 createFileSystemWatcher API 可以用來監看磁碟上的任何資料夾,只要該資料夾不在已開啟的工作區內即可。我們現在放寬了此限制,允許在任何地方使用非遞迴檔案監看器,即使在已開啟的工作區內也可以。非遞迴監看器的優點是,針對排除項目 (files.watcherExclude) 設定的設定不會套用,因此您可以確保檔案監看器只會針對您訂閱的路徑發出事件。

我們正在努力為擴充功能提供具有自訂排除規則的完整遞迴監看器支援,敬請期待更多資訊!

UX 指南

擴充功能作者的 UX 指南已重新製作,具有自己的目錄,您可以在其中找到使用各種 VS Code 使用者介面元素的最佳實務。特定主題討論了為您的擴充功能建立 UI 時建議的「應做事項」和「不應做事項」,以便它們能無縫地整合到 VS Code 中。

Command Palette UX Guidelines on code.visualstudio.com

執行擴充功能測試

之前,VS Code 會在測試執行完成後立即結束擴充功能主機程序。現在,當執行擴充功能測試時,VS Code 會先完成常規的 deactivate 流程,然後才會結束。這讓產生程序的擴充功能能夠更好地在結束後清理自身。

將檔案拖放到自訂樹狀結構

基於最近完成的樹狀結構拖放 API,我們現在已基本支援使用 text/uri-list MIME 類型,將檔案從作業系統拖放到擴充功能樹狀檢視中。

偵錯工具擴充功能撰寫

支援 supportSuspendDebuggee 和 supportTerminateDebuggee 的 UI

disconnect 請求有兩個額外的選項,讓用戶端可以控制在斷線時 debuggee 會發生什麼事

  • suspendDebuggee 指出 debuggee 在斷線後是否應保持暫停狀態。
  • terminateDebuggee 指出 debuggee 在偵錯工具斷線時是否應終止。

偵錯配接器可以使用功能 supportSuspendDebuggeesupportTerminateDebuggee 來表示它支援這些選項。在支援的情況下,偵錯工具列中的停止按鈕旁邊會出現一個下拉式選單,其中包含額外的斷線命令。

例如,在「啟動」類型的偵錯工作階段中,對於支援這兩種功能的偵錯配接器,預設工具列按鈕將是正常的停止按鈕,但下拉式選單將包含斷線 (terminateDebuggee: false) 和斷線並暫停 (terminateDebuggee: false, suspendDebuggee: true)。

A dropdown with extra disconnection commands

語言伺服器協定

對 notebook 和提取診斷的支援已從建議狀態移出,準備發布 3.17 版本。相應的用戶端和伺服器程式庫的新版本已發布到 npm。

建議的 API

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

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

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

拖放到編輯器

建議的 文字編輯器拖放 API 讓擴充功能可以處理拖放到文字編輯器中的操作。這些拖放事件可能來自 VS Code 內部 — 例如從 VS Code 的 Explorer 將檔案拖曳到文字編輯器中 — 或者可能是從您的作業系統將檔案拖放到 VS Code 中而產生的。

在這個迭代中,我們已將此 API 切換為基於提供者的模型。我們也建立了一個 新的擴充功能範例,示範如何使用此 API。

檢視畫面的徽章

用於 將徽章新增到檢視畫面 的新建議現已可供試用。與 VS Code 核心提供的檢視畫面上徽章的運作方式類似,擴充功能可以使用此 API 建議將數字徽章新增到檢視畫面。

工程

Playwright for Electron 冒煙測試

長期以來,我們一直使用 Playwright 進行基於 Web 的冒煙測試。然而,我們基於 Electron 的冒煙測試仍然依賴我們自己的自訂解決方案。透過 Playwright 中的 Electron 支援,我們能夠重複使用大部分基於 Web 的冒煙測試程式碼,並將其用於我們的 Electron 冒煙測試。我們很高興現在可以使用 Trace Viewer 來診斷冒煙測試失敗後的狀況。

擴充功能的新本地化管線

VS Code 支援多種 顯示語言,您可以透過安裝語言套件來啟用這些語言。這些語言非常適合本地化 VS Code 本身和 VS Code 的內建擴充功能。在這個迭代中,我們開始了標準化工作,以本地化團隊擁有的非內建擴充功能。您將在 GitHub RepositoriesAzure Repos 擴充功能中看到這項工作的成果,因為它們的通用相依性擴充功能 Remote Repositories 是第一個加入此行列的擴充功能。

在下一個迭代中,我們將繼續這項標準化工作,並讓更多擴充功能加入。 Python 擴充功能目前正在進行中,而 GitHub Repositories 和 Azure Repos 將很快跟進。我們希望達到一個目標,即團隊擁有的每個擴充功能都已本地化,並且未來建立的任何新擴充功能都能輕鬆加入,以便非英語母語使用者也能在 VS Code 中獲得絕佳體驗。

文件

VS Code 中的 Rust

有一個新的 Rust in Visual Studio Code 主題,描述了 VS Code 中對 Rust 程式設計語言 的支援,以及 rust-analyzer 擴充功能。 rust-analyzer 擴充功能包含豐富的語言功能,例如程式碼完成、程式碼檢查、重構、偵錯等等。

rust-analyzer extension for Visual Studio Code details pane

值得注意的修正

  • 114844 允許從當機對話方塊中略過從先前工作階段還原編輯器
  • 127936 允許在啟動時為檔案設定特定語言的 files.encoding 設定
  • 138461 在 React 檔案中的 [ ] 配對內,Emmet 自動完成功能錯誤
  • 139392 確認清除最近專案
  • 139950 當命中断點時,插入符號(游標)應移動到該行
  • 145265 Windows 上的終端機使用 cmd /C,這會損壞傳遞的引數
  • 146406 終端機中的 Powerline 符號顏色錯誤
  • 146977 在 macOS 上於 Info.plist 中宣告資料夾支援
  • 147104 無法完成登入 GitHub

感謝您

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

Web 擴充功能

擴充功能作者啟用以 Web 擴充功能 形式執行程式碼的擴充功能(以下列表介於 2022 年 3 月 28 日至 2022 年 5 月 1 日之間)

Issue tracking

對我們的 issue tracking 的貢獻

Pull requests

vscode 的貢獻

vscode-css-languageservice 的貢獻

vscode-generator-code 的貢獻

vscode-js-debug 的貢獻

vscode-pull-request-github 的貢獻

debug-adapter-protocol 的貢獻

language-server-protocol 的貢獻

monaco-editor 的貢獻