🚀 在 VS Code 中免費取得

2024 年 6 月 (版本 1.91)

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

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


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

如果您想在線上閱讀這些版本資訊,請前往 更新,網址為 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 repo 以深入瞭解此功能、正在進行的工作,並提供回饋。

原生 REPL 中的智慧傳送

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

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

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

支援 reStructuredText 文件字串

Pylance 現在支援在滑鼠停留在 reStructuredText 文件字串 (docstring) 上時呈現它們!

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

Docstring displayed when hovering over the panel module.

試用此變更,並在 Pylance GitHub 儲存庫中報告任何問題或回饋。

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

GitHub Pull Requests 和 Issues

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

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

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

ESLint

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

請參閱 ESLint Flat Config 推廣計畫,以瞭解 ESLint 關於棄用和移除對 eslintrc 檔案格式支援的計畫。

擴充功能撰寫

Chat 和語言模型 API

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

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

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

處理物件設定的預設值

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

最終確定 DebugSessionOptions.testRun API

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

偵錯配接器協定

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

  • 透過新的 Scope.presentationHint = returnValue 選項表示傳回值。
  • 在評估要求中新增來源位置。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 載入器外掛程式相依性。您應該不會注意到任何行為差異,而且我們過去支援的所有翻譯在網頁和桌面版中仍然受到支援。

重大修正

感謝您

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

問題追蹤

對我們問題追蹤的貢獻

提取要求

vscode 的貢獻

vscode-css-languageservice 的貢獻

vscode-extension-samples 的貢獻

vscode-html-languageservice 的貢獻

vscode-languageserver-node 的貢獻

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

node-jsonc-parser 的貢獻