🚀 在 VS Code 中取得

2024 年 6 月 (版本 1.91)

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

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


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

如果您想線上閱讀這些發行說明,請前往 Updates,網址為 code.visualstudio.comInsiders: 想要盡快試用新功能嗎?您可以下載每晚建置的 Insiders 版本,並在最新更新可用時立即試用。

協助工具

編輯器浮動視窗的協助工具檢視

為了改善編碼時的協助工具,協助工具檢視協助工具說明選單現在可以呈現編輯器浮動資訊的內容。根據浮動視窗的焦點部分,它們會顯示有關焦點部分或整個浮動視窗內容的資訊。

Accessible View showing the contents of the editor hover information.

為了讓工作台中連結更容易與一般文字區分,您可以啟用設定 accessibility.underlineLinks 來為連結加上底線。

The run and debug view showing a mix of regular text and underlined links.

工作台

我們新增了一個新的設定 search.ripgrep.maxThreads,讓您可以限制 ripgrep 搜尋引擎使用的執行緒數量。此設定適用於核心產品使用搜尋或透過擴充功能 API 使用搜尋的情況。

search.ripgrep.maxThreads 設定為非零值以設定執行緒數量。請謹慎,因為將此設定固定為特定值可能會減慢 ripgrep 的速度。

調整允許的編碼以進行猜測

使用新的設定 files.candidateGuessEncodings,您可以設定一組編碼,當啟用 files.autoGuessEncoding 時應考慮這些編碼。設定的順序決定優先順序。此功能讓您可以將可能偵測到的編碼限制為較小的集合,並優先考慮一種編碼而不是另一種。

設定檔編輯器預覽

在此里程碑中,我們推出了一個新的設定檔編輯器,讓您可以從單一位置管理設定檔。此體驗包括建立新的設定檔、編輯和刪除現有的設定檔,以及匯入和匯出設定檔以與他人共用。建立新的設定檔時,您可以預覽設定檔,並在儲存之前根據需要進行自訂。設定檔編輯器也讓您可以使用特定的設定檔開啟新的視窗,或將設定檔設定為新視窗的預設設定檔。

Profiles Editor showing all user profiles and their settings.

設定檔編輯器以實驗性功能的形式提供,位於 workbench.experimental.enableNewProfilesUI 設定之後。啟用後,您可以從視窗左下角的設定齒輪圖示存取設定檔編輯器。

Settings menu showing the Profiles menu item to open the Profiles Editor.

試用看看,並向我們提供有關如何進一步改善此體驗的回饋。

具有設定檔的新視窗選單項目

除了設定檔編輯器之外,我們還在「檔案」選單中新增了動作,以使用特定的設定檔開啟新的視窗。使用檔案 > 具有設定檔的新視窗選單,以使用特定的設定檔開啟新的視窗。

Screenshot of the File menu showing the New Window with Profile menu items.

擴充功能安裝選項

我們新增了更多選項,讓您在安裝擴充功能時更具彈性

  • 安裝擴充功能而不進行同步處理。
  • 安裝特定版本的擴充功能。先前,您必須先安裝最新版本的擴充功能,才能選取特定版本。

這些動作可在「擴充功能」檢視中的擴充功能操作功能表中取得

Context menu for the Extensions view, showing the additional install actions.

自訂標籤中的檔案副檔名存取

當您定義自訂標籤時,您現在可以更彈性地使用 ${extname(N)} 語法存取個別的檔案副檔名。此外,${extname(N)} 也支援負索引,以反向順序擷取檔案副檔名。若要取得整個檔案副檔名,請使用 ${extname}

例如,對於檔案 tests/editor.test.ts

  • ${filename} => editor
  • ${extname} => test.ts
  • ${extname(0)} => ts
  • ${extname(1)} => test
  • ${extname(-1)} => test
  • ${extname(-2)} => ts

合併多個擴充功能的自訂標籤模式

當兩個擴充功能在其 configurationDefaults 中為設定 workbench.editor.customLabels.patterns 貢獻預設設定時,貢獻的模式會合併在一起。

"workbench.editor.customLabels.patterns" : {
  "**/app/**/page.tsx": "${dirname} - Page",
  "**/app/**/layout.tsx": "${dirname} - Layout"
}
"workbench.editor.customLabels.patterns" : {
  "**/components/**/index.tsx": "${dirname} - Component"
}
擴充功能 1 的預設貢獻 擴充功能 2 的預設貢獻
"workbench.editor.customLabels.patterns" : {
  "**/app/**/page.tsx": "${dirname} - Page",
  "**/app/**/layout.tsx": "${dirname} - Layout",
  "**/components/**/index.tsx": "${dirname} - Component"
}
產生的自訂標籤模式

取消設定主題色彩

如果主題設定了您不喜歡的色彩或邊框,您現在可以使用 default 將其設定回原始值

  "workbench.colorCustomizations": {
      "diffEditor.removedTextBorder": "default"
  }

變更摺疊預留位置色彩

摺疊預留位置 (省略符號) 現在可以使用色彩 editor.foldPlaceholderForeground 來設定主題。

編輯器

儲存時的程式碼動作

使用 editor.codeActionsOnSave 設定,您可以設定一組在您儲存檔案時自動套用的程式碼動作,例如組織匯入。我們改善了設定此設定的 IntelliSense,方法是根據您的工作區檔案和作用中的擴充功能提供可用的程式碼動作清單。

注意:請注意,雖然 truefalse 目前仍然是有效的設定,但它們將被取代,改用 explicitalwaysnever。請參閱 儲存時的程式碼動作文件 以取得範例。

快速關閉唯讀檔案狀態

如果您已透過 files.readonlyInclude 設定將檔案設定為唯讀,您現在可以從唯讀編輯器訊息中快速關閉檔案的唯讀狀態。

Read-only editor message enabling you to toggle the read-only status.

原始檔控制

傳入/傳出變更圖預覽

我們一直在探索使用傳入和傳出變更的替代視覺化方式。此里程碑包含一個實驗性功能,使用圖表來視覺化傳入和傳出變更。圖表包含目前分支、目前分支的上游分支和選用的基準分支。圖表的根是這些分支的共同祖先。

您可以使用 scm.experimental.showHistoryGraph 設定來啟用此新的視覺化方式。試用看看,並告訴我們您的想法,因為我們將繼續改善和擴展此視覺化方式中可用的功能。

Source control view showing a graph visualization of the incoming and outgoing changes.

筆記本

在文字選取範圍中尋找

筆記本尋找控制項現在具有文字選取範圍和儲存格選取範圍的「在選取範圍中尋找」。此行為預設為啟用,並且可以透過控制項內的按鈕來控制。根據您的選取範圍內容,切換此按鈕會將您的尋找查詢範圍設定為一個或多個選取的儲存格,或儲存格內的行。

從操作功能表複製或開啟文字輸出

在筆記本中使用文字輸出時,您現在可以使用文字輸出的操作功能表來複製輸出值,或在新編輯器中開啟輸出。此功能讓您更容易檢閱大型串流輸出。

終端機

支援複製和貼上跳脫序列 (OSC 52)

現在支援作業系統命令 (OSC) 52 跳脫序列。終端機中執行的任何項目都可以使用此序列,但主要的使用案例是 tmux 的剪貼簿存取。

新的自訂字形

終端機現在支援分支、行號和鎖定 Powerline 符號的自訂字形。與我們支援的其他自訂字形一樣,當GPU 加速啟用時,這些符號無需設定字型即可運作。

Characters 0xe0a0, 0xe0a1 and 0xe0a2 render with their Powerline symbols.

當調整字型大小、行高或字母間距時,這些符號也會完美地與儲存格一起縮放。

The new symbols scale vertically and horizontally when a custom font size, line height or letter spacing is used.

偵錯

JavaScript 偵錯工具

JavaScript 偵錯工具現在會根據程式的範圍,在滑鼠游標停留在陰影變數上方時以及在內嵌值 (透過 debug.inlineValues 設定啟用) 中顯示陰影變數的正確值。

JavaScript code snippet that shows an overlay with the value of shadowed variables.

主題:Codesong (在 vscode.dev 上預覽)

語言

TypeScript 5.5

我們現在包含 TypeScript 5.5。此主要更新帶來了許多新的語言功能和工具改進。請查看 TypeScript 5.5 部落格文章,以取得有關此發行版本的詳細資訊。

正則運算式的語法檢查

感謝 TypeScript 5.5,我們現在會在 JavaScript 和 TypeScript 正則運算式常值中報告許多語法錯誤。這包括未關閉的群組、不正確的反向參考或無效的跳脫字元等錯誤

Editor showing a regex error for an invalid group caused by an extra parenthesis.

Editor showing a regex error for an invalid escape sequence

請查看 TypeScript 5.5 部落格文章以取得更多詳細資訊

擴充功能貢獻

GitHub Copilot

精簡的內嵌聊天

內嵌聊天轉譯現在更加精簡,這讓建議更容易閱讀和理解。我們也正在試驗一種更敘事風格的按鈕文字,您可以透過 inlineChat.experimental.textButtons 啟用。

Sample of more compact inline chat in the editor.

終端機初始提示

終端機中會顯示新的提示,以協助探索內嵌聊天。

The terminal will say "Press Ctrl+I to ask GitHub Copilot to do something. Start typing to dismiss"

此提示僅在安裝 Copilot 擴充功能且只有一個尚未進行任何互動的終端機時顯示。您可以透過按一下滑鼠右鍵永久關閉訊息。當您第一次使用終端機內嵌聊天後,訊息也會關閉。

套用程式碼區塊

聊天檢視中程式碼區塊上的在編輯器中套用命令會使用語言模型來判斷將變更套用至目前編輯器的最佳方法。

Chat view showing the Apply In Editor command for a code block in a chat response.

Python

使用 python-environment-tools 探索 Python 環境

我們很高興推出一個新工具 python-environment-tools,旨在顯著提高偵測全域 Python 安裝和 Python 虛擬環境的速度。此工具使用 Rust 以確保快速且準確的探索過程。

我們目前正在測試此新功能,與現有支援平行執行,以評估 Python 擴充功能中的新探索效能。因此,您會看到一個名為 Python Locator 的新記錄通道,其中顯示使用此新工具的探索時間。

此增強功能是我們持續努力優化 VS Code 中 Python 支援的效能和效率的一部分。請造訪 python-environment-tools 存放庫,以深入瞭解此功能、正在進行的工作並提供意見反應。

原生 REPL 中的智慧傳送

Python 擴充功能現在已在 智慧傳送中啟用 VS Code 原生 REPL

先前,當您將游標放在 Python 程式碼行上並按下 Shift+Enter 時,Python 擴充功能會將確切的行內容傳送至原生 REPL,即使它會失敗,例如因為它是多行命令的一部分。

現在,Shift+Enter 會在非巢狀案例中傳送最少的可執行程式碼,或在巢狀案例中傳送最高的頂層程式碼區塊。這讓使用者可以快速地在整個檔案中 Shift+Enter,以最少的努力執行最多的可執行程式碼。

支援 reStructuredText 文件字串

Pylance 現在支援在浮動視窗中轉譯 reStructuredText 文件字串 (文件字串)!

此功能尚處於早期階段,目前位於旗標之後,因為我們正在努力確保它有效地處理各種 Sphinx、GoogleDoc 和 Epytext 案例。若要試用看看,您可以啟用實驗性設定 python.analysis.supportRestructuredText

Docstring displayed when hovering over the panel module.

試用看看此變更,並在 Pylance GitHub 存放庫 中回報任何問題或意見反應。

注意:此設定為實驗性設定,未來可能會移除,因為我們將穩定此新功能並預設啟用它。

GitHub Pull Requests 和 Issues

GitHub Pull Requests 擴充功能方面取得了更多進展,讓您可以處理、建立和管理提取要求和問題。新功能包括

  • 在已簽出 PR 的 Commit 子樹中顯示 Commit 日期。
  • 許多錯誤修正。

檢閱擴充功能 0.92.0 版本的變更記錄,以瞭解其他重點。

ESLint

ESLint 擴充功能現在支援 flat config 檔案格式。擴充功能仍然支援 eslintrc 檔案,您可以使用 eslint.useFlatConfig 設定來控制使用哪種組態檔格式。

請參閱 ESLint Flat Config 推出現劃,以瞭解 ESLint 關於淘汰和移除 eslintrc 檔案格式支援的計畫。

擴充功能撰寫

聊天和語言模型 API

上個月,我們最終確定了讓擴充功能參與聊天和存取語言模型的 API,但它們僅在 VS Code Insiders 中提供。在此版本中,這些 API 現在已在 VS Code Stable 中完全可用。

請查看我們的 公告部落格文章,以深入瞭解這些 API,並查看一些早期採用者如何使用它們。

若要開始使用,請前往我們的 擴充功能範例聊天擴充性文件

物件設定預設值的處理

當多個擴充功能為相同的物件設定貢獻預設值時,這些預設值現在會合併。這可防止擴充功能之間的衝突。

已完成 DebugSessionOptions.testRun API

從測試執行啟動偵錯工作階段的擴充功能,現在可以在呼叫 vscode.debug.startDebugging 時將該執行傳遞至 DebugSessionOptions。傳遞後,生命週期動作 (例如重新啟動偵錯工作階段) 也會建立新的測試執行。

偵錯配接器協定

偵錯配接器協定 進行了一些值得注意的變更

  • 透過新的 Scope.presentationHint = returnValue 選項表示傳回值。
  • 將來源位置新增至 evaluate 要求。VS Code 實作此功能,並在評估浮動視窗和內嵌值時傳遞位置。

建議的 API

語言模型的工具和函式

我們新增了一個 API 提案,可啟用工具或函式呼叫。API 包含兩個主要部分

  1. 擴充功能註冊「工具」的能力。「工具」是一種旨在由語言模型使用的功能。例如,讀取檔案的 Git 歷程記錄。

  2. 語言模型支援工具的機制,例如:擴充功能在發出要求時傳遞工具、語言模型要求工具叫用,以及擴充功能將工具叫用的結果傳回。

提案可在 vscode.proposed.lmTools.d.ts 中找到。

注意:API 仍在積極開發中,內容將會變更。也預期 VS Code 會隨附合理的預設工具。

驗證 getSessions 現在為 getAccounts

雖然我們支援多帳戶驗證提供者,但一直缺少的是取得所有工作階段並對特定工作階段採取動作的能力。先前,我們有一個 getSessions API 提案,試圖解決此問題,但在實驗並使用熱門驗證程式庫的啟發後,我們正在採用不同的方法來解決此問題。

我們從先前建議的 getSessions API 轉變為區分「帳戶」和「工作階段」概念的方法。

想要使用驗證工作階段的擴充功能作者可以執行下列程式碼,以取得使用者登入帳戶的 AuthenticationSessionAccountInformation

const accounts = vscode.authentication.getAccounts('microsoft');

從那裡,您可以使用這些帳戶來專門為這些帳戶建立工作階段

const session = vscode.authentication.getSession('microsoft', scopes, {
  account: accounts[0]
});

注意:為了使其運作,驗證提供者需要處理一個新的參數,您可以在下面的 API 提案中閱讀相關資訊

我們相信這是處理多個驗證工作階段的更清晰方式,並且能夠處理我們以前無法支援的各種案例。

提案可在 vscode.proposed.authGetSessions.d.ts 中找到,它使用此提案的先前名稱,而不是中斷依賴此提案的現有程式碼。

註解執行緒顯示

我們新增了一個 API 提案,讓提供註解的擴充功能能夠在編輯器中顯示自己的註解執行緒。此 API 提供在顯示執行緒時是否保留焦點,或將焦點放在執行緒的回覆方塊中的選項。

提案可在 vscode.proposed.commentReveal.d.ts 中取得。

可歸屬的測試涵蓋率

我們正在開發一個 API,可讓您在每個測試的基礎上歸屬測試涵蓋率。這讓使用者可以看到哪些測試執行了哪些程式碼,從而篩選編輯器中顯示的涵蓋率以及測試涵蓋率檢視中的涵蓋率。

查看 vscode#212196 以取得更多資訊和更新。

工程

將 NLS 與 AMD 載入器分離

在此里程碑中,我們開始移除 VS Code 中核心原生語言支援 (NLS) 與我們提供的非同步模組定義 (AMD) 載入器的相依性。我們未來的目標是使用 ECMAScript 模組 (ESM) 載入並完全捨棄 AMD。為了朝這個方向邁進,我們移除了 AMD 載入器外掛程式相依性。您應該不會注意到行為有任何差異,而且我們過去支援的所有翻譯在 Web 和桌面中仍然支援。

值得注意的修正

感謝您

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

問題追蹤

對我們的問題追蹤的貢獻

提取要求

vscode 的貢獻

貢獻至 vscode-css-languageservice

貢獻至 vscode-extension-samples

貢獻至 vscode-html-languageservice

貢獻至 vscode-languageserver-node

貢獻至 vscode-python-tools-extension-template

貢獻至 node-jsonc-parser