參加你附近的 ,瞭解 VS Code 中的 AI 輔助開發。

2024 年 7 月 (版本 1.92)

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

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

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


歡迎使用 Visual Studio Code 2024 年 7 月版。此版本包含許多更新,希望您會喜歡,其中一些主要亮點包括:

如果您想線上閱讀這些發行說明,請訪問 code.visualstudio.com 上的更新Insiders:想盡快嘗試新功能嗎?您可以下載每晚Insiders版本並儘快嘗試最新更新。

輔助功能

改進的除錯體驗

輔助功能幫助對話方塊

我們為“執行和除錯”檢視和“除錯控制檯”添加了輔助功能幫助對話方塊。當這兩個檢視獲得焦點時,您會收到開啟輔助功能幫助對話方塊的提示。透過設定 accessibility.verbosity.debug 配置此提示。

除錯控制檯輔助檢視

執行命令開啟輔助檢視 (⌥F2 (Windows Alt+F2, Linux Shift+Alt+F2)) 以逐字元、逐行檢查除錯控制檯內容。

當處於螢幕閱讀器最佳化模式時,設定 debug.autoExpandLazyVariables 現已啟用,以便輕鬆訪問變數值。

當在除錯控制檯中評估表示式時,其值現在會向螢幕閱讀器使用者播報。

動態監視變數播報

當啟用螢幕閱讀器進行除錯時,您現在會聽到監視變數值何時發生變化。使用 accessibility.debugWatchVariableAnnouncements 進行配置。

配置鍵盤繫結操作

在之前的里程碑中,我們引入了一個在輔助功能幫助對話方塊中配置未分配鍵盤繫結的操作。我們現在添加了配置已分配鍵盤繫結命令 (⌥A (Windows, Linux Alt+A)) 以補充此操作。

工作臺

將面板移至頂部

您現在可以將面板移動到工作臺的頂部,即編輯器區域上方。預設情況下,面板位於底部,包含終端、輸出面板和除錯控制檯等檢視。此增強功能補充了現有將面板定位到左側、右側和底部的選項。

配置檔案編輯器預覽

在此里程碑中,我們繼續改進了配置檔案編輯器,使其更加使用者友好,並使其外觀和感覺與設定編輯器保持一致。

Profiles Editor showing all user profiles and their settings.

配置檔案編輯器作為實驗性功能提供,位於 workbench.experimental.enableNewProfilesUI 設定之後。啟用後,您可以從視窗左下角的設定齒輪圖示訪問配置檔案編輯器。

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

覆蓋現有配置檔案

您現在可以透過建立同名的新配置檔案來覆蓋現有配置檔案,包括預設配置檔案。

改進的擴充套件更新體驗

我們對擴充套件更新體驗進行了一些改進,為您提供了更多控制擴充套件更新的許可權,並使管理擴充套件自動更新變得更容易。

自動更新所有擴充套件

我們已將擴充套件檢視標題區域中的全域性擴充套件自動更新操作更改為啟用所有擴充套件自動更新停用所有擴充套件自動更新操作。透過這些操作,您可以一次性啟用或停用所有擴充套件的自動更新。

Manage Auto Updating Extensions.

自動更新單個擴充套件

我們改進了單個擴充套件自動更新體驗,始終顯示啟用或停用擴充套件自動更新的操作。這使得管理擴充套件自動更新變得更容易。

Auto update configuration per extension.

停用透過 VSIX 安裝的擴充套件的自動更新

當您透過 VSIX 安裝擴充套件時,該擴充套件的自動更新預設是停用的。這使您可以使用已安裝的擴充套件版本,而無需自動更新。

更多控制更新擴充套件的許可權

當您將已安裝的無可執行程式碼的擴充套件版本更新為包含可執行程式碼的版本時,現在需要使用者同意。這使您可以控制在應用此類更新之前進行審查。以下影片演示了將無程式碼擴充套件更新為包含程式碼的版本時的體驗。

選擇審查按鈕會在瀏覽器中開啟擴充套件更改日誌或擴充套件儲存庫。您可以審查更改,然後決定是否要更新擴充套件。

修復了設定編輯器跳轉問題

以前,設定編輯器在修改設定並更改焦點到另一個設定後會跳轉。在修改設定之前滾動得越多,這種跳轉就越嚴重。我們更改了設定編輯器在修改後重新渲染設定的方式,現在設定編輯器在修改設定後不再跳轉。

主題:淺粉色(在 vscode.dev 上預覽)

設定的 URL 處理

VS Code 現在可以處理格式為 vscode://settings/setting.name(Insiders 版本為 vscode-insiders://settings/setting.name,OSS 版本為 code-oss)的“settings”URL,並將開啟設定編輯器到指定的設定。如果沒有給出設定,則仍會開啟設定編輯器。當在發行說明中使用帶有 settings URL 的錨點標籤,並且發行說明在 VS Code 中開啟時,我們將進行特殊處理和渲染,如之前的 codesetting 功能所述。

Setting URL in release notes

新增設定 workbench.externalBrowser 使您能夠配置用於開啟連結的瀏覽器。預設情況下,使用作業系統的標準瀏覽器。您可以在每個工作區級別配置此設定,並且它也支援設定同步。

將瀏覽器的完整可執行檔案路徑指定為設定值。或者,為了確保在不同裝置上正確執行,您也可以使用瀏覽器別名,例如 edgechromefirefox

Configure the browser to open links.

拖放時停用自動開啟檔案

以前,將檔案拖放到資源管理器中也會自動在編輯器中開啟它。在某些情況下,這可能不合需要。新的設定 explorer.autoOpenDroppedFile 使您能夠切換此行為。預設情況下,檔案在拖放時會繼續開啟,但當設定為 false 時,此行為將被停用。

編輯器

燈泡控制元件改進

有時,燈泡控制元件可能會阻止編輯器中的程式碼。為了解決這個問題,我們引入了改進的燈泡控制元件啟發式演算法,當沒有空間時,它會將燈泡顯示在行號旁,而不是阻止編輯器中的程式碼。

Lightbulb overlaps with code (left) versus positioned in the gutter (right).

您可以使用 editor.lightbulb.enabled 設定在編輯器中切換燈泡控制元件。

差異編輯器

聊天中更緊湊的差異

我們迭代了聊天檢視/內聯聊天中的差異編輯器佈局,使其更加緊湊。

之前:

Previous diff editor layout, which is less compact.

之後:

More compact diff editor layout.

原始碼管理

傳入/傳出更改圖

在此里程碑中,我們正在啟用使用圖表視覺化傳入和傳出更改。該圖表包含當前分支、當前分支的上游分支以及可選的基礎分支。圖表的根是這些分支的公共祖先。

我們對歷史記錄項懸停進行了多項改進

  • 啟用多選以檢視屬於同一分支的多個歷史項之間的更改。
  • ...選單中新增選項以過濾遠端/基礎分支中的歷史項。
  • 添加了獲取、拉取和推送歷史項的操作。

試一試,告訴我們您的想法!

您可以透過切換 scm.showHistoryGraph 設定來停用傳入/傳出更改的圖表視覺化。

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

終端 Shell 整合

源控制元件檢視在每次源控制元件操作以及作用域為特定檔案/資料夾的檔案系統事件之後都會重新整理。當在整合終端中執行 git 命令時,命令完成與源控制元件檢視重新整理之間可能會有延遲。為了減少此延遲,從本里程碑開始,我們正在使用終端 shell 整合 API 來檢測整合終端中執行的各種 git 命令(例如,addcheckoutcommitfetchpullpush 等)的成功完成並重新整理源控制元件檢視。

Notebook

多單元格註釋

筆記本編輯器現在支援一次切換一個或多個單元格的註釋。透過選擇一個或多個單元格容器,然後使用鍵盤快捷鍵 ⌘/ (Windows, Linux Ctrl+/) 來完成此操作。

終端

新捲軸

終端中的捲軸現在看起來與編輯器中的捲軸完全一樣。

The terminal scroll bar now looks just like the editor's scroll bar

概述尺子與以前相同,左側是成功命令,中間是查詢結果,右側是失敗命令。但現在它與捲軸滑塊完美對齊。

除錯

除錯時顯示變數型別

當設定 debug.showVariableTypes 開啟時,VS Code 現在在除錯時顯示變數的資料型別。

Show variable data types in the Variables section while debugging.

語言

VS Code 現在可以透過更新任何複製貼上文字中的連結來幫助您在 Markdown 文件之間移動文字部分。透過此功能,VS Code 修復了所有相對路徑連結、引用連結以及所有帶有相對路徑的影像/影片,使它們在新文件中正常工作。

當您在兩個 Markdown 檔案之間複製貼上帶有連結的文字時,此功能就會啟動。如果存在可以更新的連結,您將在粘貼後看到貼上小部件。選擇貼上並更新貼上的連結,VS Code 會為您修復連結。

您可以將 markdown.updateLinksOnPaste 設定為 false 來完全停用此功能。

在 CSS 中貼上和拖放檔案

您需要在 CSS 中使用圖片嗎?現在您可以透過拖放或複製貼上圖片檔案到 CSS 編輯器中,快速插入一個 url() 引用。

遠端開發

遠端開發擴充套件使您能夠使用開發容器、透過 SSH 連線的遠端計算機或遠端隧道,或者適用於 Linux 的 Windows 子系統 (WSL) 作為功能齊全的開發環境。

亮點包括:

  • GPG 金鑰箱支援
  • 本地埠範圍配置

您可以在遠端開發發行說明中瞭解有關這些功能的更多資訊。

對擴充套件的貢獻

GitHub Copilot

Copilot Chat 升級至 GPT-4o

我們已將 Copilot Chat 檢視從 GPT-4-Turbo 升級到 GPT-4o,這是 OpenAI 迄今為止最強大的模型。我們的實驗表明,GPT-4o 顯著增強了 Copilot 的編碼能力,直接在您的編輯器中提供了更快、更準確、更高質量的程式碼和解釋。這在推出期間顯而易見,因為開發人員越來越多地使用 Copilot Chat 檢視並採納了更多其程式碼建議。

我們一直在不斷進行實驗,以識別針對不同任務的最佳模型,在效能和功能之間取得平衡,同時致力於質量、安全和保障。有關 GitHub Copilot 中 GPT-4o 採用的更多詳細資訊,請檢視GitHub 的更改日誌

聊天中的公共程式碼匹配

您可以允許 GitHub Copilot 返回可能與 GitHub.com 上公開可用的程式碼匹配的程式碼。當為您的組織訂閱個人訂閱啟用此功能時,Copilot 程式碼補全會為您提供有關檢測到的匹配項的詳細資訊。我們正在努力使您也能在 Copilot Chat 中看到這些公共程式碼的匹配項。

我們正在逐步向 Copilot Chat 使用者推出此功能。一旦您的機器啟用此功能,您可能會在回覆末尾看到一條訊息,其中包含一個檢視匹配項連結。如果您選擇該連結,將開啟一個編輯器,其中顯示匹配程式碼引用的詳細資訊。

Chat code referencing example.

聊天請求中的附件

Copilot Chat 支援透過附加上下文 (⌘/ (Windows, Linux Ctrl+/)) 命令向聊天請求新增顯式附件。這些附件現在作為已提交聊天請求的一部分顯示在聊天曆史記錄中。選擇檔案附件會在編輯器中開啟相應的檔案和範圍。

Attachments in chat requests

此外,我們現在更清楚地表明,當溢位上下文視窗的大型顯式附件被部分或完全省略在請求之外時。

Warning and hover for large attachments

/new 的改進

我們更新了 /new 斜槓命令以支援快速檔案生成。您可以在檔案或專案建立期間使用聊天變數(例如 #selection)向 Copilot 提供額外上下文。此外,/new 已增強以支援將生成的檔案和資料夾儲存在現有工作區中。

Create a new single file with /new in Copilot Chat.

從聊天訪問 VS Code 命令

@vscode 聊天參與者上的新斜槓命令 /runCommand 使您能夠搜尋並執行核心 VS Code 命令。例如,切換開發人員工具:

Toggle Developer Tools with the /runCommand slash command in Copilot Chat.

您可以使用 github.copilot.chat.runCommand.enabled 啟用此新斜槓命令。

Python

使用 python-environment-tools 改進 Python 發現

在上一版本中,我們宣佈了Python 環境工具,它重新設計了專注於效能的 Python 發現基礎架構。這種方法減少了執行 Python 二進位制檔案以探測資訊的需要,從而提高了效能。

從本版本開始,我們將作為實驗的一部分推出此增強功能。如果您有興趣嘗試此功能,可以在使用者 settings.json 中將 "python.locator" 設定為 "native" 並重新載入 VS Code 視窗。訪問python-environment-tools 儲存庫以瞭解有關此功能、正在進行的工作和提供反饋的更多資訊。

顯示本機 REPL 的執行狀態

實驗性本機 REPL ("python.REPL.sendToNativeREPL": true) 現在顯示成功/失敗 UI,類似於 Jupyter 單元格中的 UI,具體取決於執行結果。此外,我們進行了改進,對於不生成輸出的單元格,我們不再顯示空行。

原始碼中的內聯變數值

Python 偵錯程式擴充套件引入了內聯值功能,以增強您的 Python 除錯體驗。使用內聯值,您可以在除錯會話期間在編輯器中,緊鄰相應的程式碼行,檢視變數的值。這有助於您快速瞭解程式狀態,而無需懸停在變數上或檢查“執行和除錯”檢視中的“變數”部分。

Show Python Inline Variables.

要啟用此功能,請在使用者設定中將配置值 debugpy.showPythonInlineValues 設定為 true

注意:此功能目前處於探索階段,仍在進行改進。如有任何反饋,請在vscode-python-debugger 儲存庫中提供!

改進的除錯歡迎檢視

除錯歡迎檢視現在包含一個按鈕,用於在編輯器中開啟 Python 檔案時快速訪問自動 Python 配置。

GitHub 拉取請求和議題

GitHub Pull Requests 擴充套件取得了更多進展,該擴充套件使您能夠處理、建立和管理拉取請求和問題。新功能包括:

  • 透過已合併 PR 的拉取請求描述中的還原按鈕還原拉取請求。
  • 現在可以在“拉取請求”檢視中檢視其分支已被刪除的 PR。
  • 即使您有多個已檢出的 PR,在 GitHub.com 上開啟拉取請求操作也會顯示。

檢視擴充套件 0.94.0 版本的更改日誌以瞭解其他亮點。

擴充套件創作

網路代理的基本身份驗證

使用 https Node.js 模組的擴充套件現在可以使用需要基本身份驗證的網路代理。

預覽功能

真正的內聯差異

本次迭代中,我們引入了 diffEditor.experimental.useTrueInlineView 設定(預設關閉)。當您啟用此設定並使用內聯檢視時,單行更改將以內聯方式呈現。

True Inline View in the diff editor.

這是未開啟此實驗性標誌時內聯檢視的樣子。

Default Inline View in the diff editor.

此功能是實驗性的,未來可能會有更改。

VS Code 原生 PowerShell IntelliSense

VS Code 原生 PowerShell IntelliSense 實驗性功能在此版本中取得了重大改進。要在 Windows 或 macOS 上啟用此功能:

"terminal.integrated.suggest.enabled": true

除了該功能更加可靠之外,還進行了許多其他改進,如下所示。

補全不被截斷

補全現在顯示完全輸入的內容,而不是截斷的版本。例如,在搜尋目錄名時,現在包含 .\ 並正確高亮顯示。

之前:

Before the completion for "src" would show "src"

之後:

After the completion for "src" would show ".\src"

最佳化目錄導航的補全

目錄名現在包含尾隨的 \/,完成時會重新整理新目錄的補全。

配置 Enter 行為

新的 terminal.integrated.suggest.runOnEnter 設定使您能夠配置 Enter 行為,以在滿足某些條件時執行命令。以下值可用:

  • "always":始終在 Enter 上執行。
  • "exactMatch":當完整輸入建議時在 Enter 上執行。
  • "exactMatchIgnoreExtension" (預設):當完整輸入建議時,或當輸入的檔案沒有副檔名時,在 Enter 上執行。
  • "never" (舊行為):從不在 Enter 上執行。

此更改對於不破壞現有肌肉記憶尤其重要,因為它通常會導致與未啟用該功能時相同的擊鍵次數。此功能有用的一個示例是執行 cd ..。在此更改之前,您需要鍵入 cd ..<enter><enter>,但現在,由於此新設定,只需按一次 Enter

改進的檔案補全

檔案補全現在按檔名長度升序、檔名按字母順序、然後按副檔名按字母順序排序。作為命令(而不是引數)執行的檔案補全現在也得到了提升,具體取決於其副檔名和當前作業系統。例如,.ps1.bat.cmd 檔案在 Windows 上執行時會得到提升,這使得它們在列表中顯示得更高。

Results are now sorted by extensions with platform-specific boosts

這些更改不僅提高了頂部專案的相關性,還透過使行為更接近原生 PowerShell 選項卡補全來幫助肌肉記憶。例如,在 Windows 上的 VS Code 程式碼庫中常用的命令是 ./scripts/code.bat。透過這些更改,./sc<tab>/c<enter> 將補全並執行 ./scripts/code.bat

全域性補全快取

命令的全域性補全在會話之間進行快取,這顯著提高了 shell 啟動效能。這還修復了補全在重新連線的終端中無法正常工作的問題。目前,可以透過執行 Terminal: Clear Suggest Cache 命令來清除和重新整理它們。在 Intel i7-12700KF 上測量,這將啟用 shell 整合所需的時間從約 600ms 減少到約 50ms。

PowerShell 中的內建終端補全

我們現在提供 git 的內建補全。這些補全基於 posh-git 專案,但進行了一些通用和 VS Code 特定的改進。以下是補全實際執行的示例:

其他一些改進包括:

  • 別名在右側顯示其擴充套件狀態。

    Aliases show their expanded state on the right

  • 分支、標籤、儲存和遠端的 Git 特定圖示。

    Branches and tabs have their own icon beside the completions

  • 右側的子命令描述。

    Subcommands like 'checkout' show their description on the right

我們還為 codecode-insiders 提供了內建補全,儘管這些補全非常基礎,並將在未來的版本中得到改進。

code now shows basic completions for everything in code --help

這些補全可能與其他 PowerShell 模組的補全衝突。您可以使用以下設定停用它們:

"terminal.integrated.suggest.builtinCompletions": {
  "pwshCode": false,
  "pwshGit": false
}

TypeScript 5.6 支援

此版本包括對即將釋出的 TypeScript 5.6 版本的支援。檢視TypeScript 5.6 迭代計劃,瞭解此版本中的詳細內容。

要開始使用 TypeScript 5.6 的預覽版,請安裝TypeScript Nightly 擴充套件。分享您的反饋,並告訴我們您是否遇到 TypeScript 5.6 的任何錯誤。

提議的 API

QuickInputButtonLocation 在輸入右側顯示按鈕

在此里程碑中,我們在 QuickInputButton 上引入了一個擬議的 API,使擴充套件可以選擇按鈕的渲染位置。選項如下:

  • Title:這會在快速選擇的標題欄中渲染按鈕。這是預設行為,並保持了按鈕的現有行為。
  • Inline:這會在輸入框的右側渲染按鈕。如果您不打算將標題欄用於任何其他用途,但希望顯示按鈕,這會很有用。

此功能已在 Git 擴充套件的建立分支輸入框中採用,您可以使用 git.branchRandomName.dictionary 啟用它。

檢視vscode#221397以獲取更多資訊和更新。

測試增強功能

將程式碼與測試關聯

我們正在開發一個 API,使擴充套件能夠將程式碼與測試關聯起來,反之亦然。這使使用者可以在兩者之間跳轉,並啟用諸如在游標處執行測試之類的操作,使其在實現程式碼中也能工作。我們預計隨著 API 的發展,將構建更多體驗。

檢視vscode#126932以獲取更多資訊和更新。

測試失敗中的呼叫堆疊

我們正在開發一個 API,用於將豐富的呼叫堆疊與單元測試失敗關聯起來。這使使用者可以一目瞭然地看到導致失敗的程式碼。

檢視vscode#214488以獲取更多資訊和更新。

可歸因測試覆蓋率

我們正在開發一個 API,用於按測試歸因測試覆蓋率。這使使用者可以看到哪些測試運行了哪些程式碼,過濾編輯器中顯示的覆蓋率和測試覆蓋率檢視中的覆蓋率。

檢視vscode#212196以獲取更多資訊和更新。

搜尋 API

在過去的幾個月裡,我們一直在努力最終確定三個擬議的搜尋 API:

  • FindTextInFiles:使用 VS Code 的文字搜尋在工作區檔案中查詢文字。
  • FileSearchProvider:為無法使用 VS Code 現有搜尋功能正確搜尋的自定義檔案方案提供檔案搜尋結果。例如,在虛擬檔案系統中從快速開啟中搜索時,可能會顯示擴充套件提供的結果。
  • TextSearchProvider:與 FileSearchProvider 類似,但用於文字搜尋結果。例如,在虛擬檔案系統中從搜尋檢視中搜索時,可能會顯示擴充套件提供的結果。

此外,我們正在改進 workspace.findFiles API,該 API 使用 VS Code 的工作區檔案搜尋來查詢檔案。新版本應該允許更多選項,並且應該更清晰地處理排除選項。當我們引入改進版本時,現有的函式簽名應該仍然可用。

此表說明了不同 API 之間的關係:

使用 API 查詢 使用 API 提供結果
對於檔案 FindFiles FileSearchProvider
對於檔案中的文字 FindTextInFiles TextSearchProvider

如果您有興趣,請訪問上面的連結提供反饋!

網站

我們重新整理了VS Code 網站的設計,並添加了對淺色和深色主題的支援。

VS Code website light mode.

網站的新設計預設使用您的系統主題(淺色或深色模式),您也可以使用右上角的太陽/月亮圖示手動切換。

VS Code website dark mode.

我們期待您的反饋!將任何功能請求或錯誤提交到vscode-docs 儲存庫

工程

將 Markdown 語言伺服器移至單獨的儲存庫

我們將為 VS Code 內建 Markdown IntelliSense 提供支援的語言伺服器移至其自己的儲存庫。此前,此專案是從主 VS Code 儲存庫的子資料夾釋出的。此更改使得為專案做出貢獻變得更加容易。

該專案仍以相同的名稱在 npm 上釋出:vscode-markdown-languageserver

VS Code 使用 ESM 的進展

在此里程碑中,我們重新啟動了為 VS Code 核心採用 ESM 的工作。我們未來的目標是使用 ECMAScript 模組 (ESM) 載入並完全放棄 AMD。這是一項多里程碑的努力,將現代化整體程式碼載入和打包。

xterm.js 依賴於 VS Code

終端中的新捲軸需要大量的幕後工作。VS Code 中的終端基於 xterm.js OSS 專案構建,並且在其即將釋出的版本中還將包含 VS Code 程式碼庫的一小部分,特別是 base/ 資料夾的一部分。

Electron 30 更新

在此里程碑中,我們將 Electron 30 更新推廣給穩定版使用者。此更新附帶 Chromium 124.0.6367.243 和 Node.js 20.14.0。我們要感謝所有在 Insiders 版本上自行託管並提供早期反饋的人。

生成 .bat.cmd 檔案時 API 發生重大更改的通知

此 Electron 更新中的 Node 版本包含一項重大更改,這是為了響應 CVE 而進行的,如果您在 Windows 上執行 .bat.cmd 檔案,這可能會影響您。您可以在使用 shell 選項生成這些檔案時遵循 Node.js 制定的指南

我們已根據簡單的原始碼掃描主動通知可能受影響的擴充套件,但我們可能遺漏了您的擴充套件。如果您受影響,在 Windows 上生成 .bat.cmd 檔案時將遇到 EINVAL 異常。請參閱Node.js 文件以獲取如何處理這些問題的指南。

我們建議擴充套件作者始終使用我們的Insiders 版本測試其擴充套件,以便提前發現這些更改。

值得注意的修復

  • 211199 在啟用平滑滾動時,終端中的 Ctrl+c 不會滾動到最底部。

感謝

最後但同樣重要的是,向 VS Code 的貢獻者們致以衷心的感謝

問題跟蹤

對我們問題跟蹤的貢獻

拉取請求

vscode 的貢獻

vscode-black-formatter 的貢獻

vscode-hexeditor 的貢獻

vscode-languageserver-node 的貢獻

vscode-markdown-tm-grammar 的貢獻

vscode-pull-request-github 的貢獻

vscode-textmate 的貢獻

debug-adapter-protocol 的貢獻

language-server-protocol 的貢獻

monaco-editor 的貢獻

node-request-light 的貢獻

python-environment-tools 的貢獻