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

2023 年 7 月 (版本 1.81)

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

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


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

如果您想線上閱讀這些發行說明,請訪問 code.visualstudio.com 上的更新頁面。

內測版:想盡快嘗試新功能?您可以下載每晚的內測版構建,並儘快嘗試最新的更新。

輔助功能

輔助檢視改進

開啟輔助檢視 (⌥F2 (Windows Alt+F2, Linux Shift+Alt+F2)) 命令允許螢幕閱讀器使用者逐字元、逐行檢查內容。上一個迭代中,我們為編輯器懸停和聊天面板響應添加了輔助檢視。

現在,通知、內聯聊天響應、Jupyter 筆記本輸出和工作臺懸停都有輔助檢視。

當具有輔助檢視的元素獲得焦點時,ARIA 標籤中會提供一個提示。該提示可以透過 accessibility.verbosity 設定針對每個功能停用。

在輔助檢視中顯示下一個 (⌥] (Windows, Linux Alt+])) 和在輔助檢視中顯示上一個 (⌥[ (Windows, Linux Alt+[)) 命令,便於在聊天面板和通知列表中的元素之間輕鬆導航。

麵包屑符號資訊

在使用聚焦並選擇麵包屑 (breadcrumbs.focusAndSelect) 命令後,麵包屑導航現在包含螢幕閱讀器的符號資訊。

輸入控制元件和結果導航一致性

現在,透過使用 (⌘↓ (Windows, Linux Ctrl+Down)) 和 (⌘↑ (Windows, Linux Ctrl+Up)),在擴充套件檢視、鍵盤快捷方式編輯器以及註釋、問題和除錯控制檯面板中的輸入控制元件(例如,搜尋或篩選輸入)及其結果之間導航的體驗現在是一致的。

輔助差異檢視器

在差異編輯器中,差異審查窗格已重新命名為輔助差異檢視器。輔助差異檢視器解決了差異編輯器的輔助功能缺陷,可以透過 F7 或差異編輯器更多操作選單中的開啟輔助差異檢視器命令開啟。除了重新命名之外,我們還修復了一些錯誤並添加了一些新功能,例如能夠從檢視器啟動輔助功能幫助對話方塊或跳轉到已修改的編輯器。

配置檔案

支援部分配置檔案

您現在可以建立一個配置檔案,在該配置檔案中僅自定義一部分配置(設定、鍵盤快捷方式、程式碼片段、任務和擴充套件)。例如,您可以建立一個除了鍵盤快捷方式之外的所有配置的配置檔案,當此配置檔案處於活動狀態時,VS Code 將應用預設配置檔案中的鍵盤快捷方式。

在下面的建立新配置檔案截圖中,鍵盤快捷方式未選中,並顯示使用預設配置檔案訊息。在該 VS Code 會話期間活動的任何鍵盤快捷方式都不會應用於新配置檔案。

Create New Profile dropdown with keyboard shortcuts unchecked

在使用複製自下拉選單從配置檔案模板或現有配置檔案複製時,您也可以建立部分配置檔案。

Create a profile by copying from a Project Template or existing profile

您還可以透過在編輯配置檔案 UI 中編輯配置檔案來配置現有配置檔案以使用預設配置檔案中的配置。

Edit Profile dropdown with Keyboard Shortcuts unchecked

匯出部分配置檔案時,您可以選擇只匯出配置檔案中已自定義的配置,或者也包括預設配置檔案中的配置。

Profile view with Keyboard Shortcuts unchecked and Export button visible

將設定應用於所有配置檔案

您現在可以透過在“設定”編輯器中選擇將設定應用於所有配置檔案選項,將設定應用於所有配置檔案。

Apply Setting to all Profiles context menu item in the Settings editor

這將把設定的值應用於所有配置檔案。從此設定的任何配置檔案的任何更新都將應用於所有配置檔案。您可以透過取消選中將設定應用於所有配置檔案選項來撤消此同步。

將擴充套件應用於所有配置檔案

您現在可以透過在“擴充套件”檢視中選擇將擴充套件應用於所有配置檔案選項,將擴充套件包含在所有配置檔案中。

Apply Extension to all Profiles context menu item in the Extensions view

這使得此擴充套件在所有配置檔案中都可用。您可以透過取消選中將擴充套件應用於所有配置檔案選項來撤消此操作。

非預設配置檔案上的設定 JSON 檔案命令 ID 已調整

當用戶處於非預設配置檔案時,首選項:開啟使用者設定 (JSON) (workbench.action.openSettingsJson) 命令現在將開啟特定於配置檔案的設定 JSON 檔案。要顯示應用程式範圍的設定,請改用首選項:開啟應用程式設定 (JSON) (workbench.action.openApplicationSettingsJson) 命令。

工作臺

即將到來的更新的發行說明

每當每月穩定更新準備安裝時,您現在可以透過“活動欄”底部“管理”選單(齒輪按鈕)中的顯示更新發行說明命令預覽發行說明。

編輯器

markdown.editor.pasteUrlAsFormattedLink 設定現在有一個新選項 smartsmart 貼上功能可以檢測您何時貼上到可能不希望自動 Markdown 連結格式化的文字中。smart 貼上忽略的一些情況包括貼上在 Markdown 連結內、覆蓋另一個 Markdown 連結以及在程式碼塊內。

預設情況下,pasteUrlAsFormattedLink 功能當前處於關閉狀態 (never),但您可以將設定更改為 smartalways(始終建立格式化 URL 連結)。

非同步標記化推廣

1.76 更新中,我們在 web worker 上實現了編輯器文件非同步標記化,以提高渲染器程序的效能。從那時起,我們修復了由罕見的競態條件引起的幾個錯誤,並且在此版本中,我們開始向穩定版使用者推廣此功能。

如果您不想等待,可以將 editor.experimental.asyncTokenization 設定為 true 以立即獲取非同步標記化。

差異編輯器

在此迭代中,我們繼續開發新的差異編輯器,並計劃逐步將其推廣給穩定版使用者。您可以透過將 "diffEditor.experimental.useVersion2": true 設定為 true 立即嘗試。新的差異編輯器包括下面描述的幾個新功能和錯誤修復。

摺疊未更改區域

使用 diffEditor.experimental.collapseUnchangedRegions 可以在新的差異編輯器中隱藏未更改區域。此功能在審查具有大量未更改行的大型差異時非常有用。

可以拖動或單擊隱藏行塊的邊框以顯示底部或頂部的文字。

A screenshot of the "Collapse Unchanged Regions" feature in the new diff editor

差異區域對齊

新的差異編輯器現在對齊差異區域內的文字,使得在縮排已更改且已插入行的差異中審查差異變得更容易。

之前(沒有差異區域對齊和啟用空白差異)

A side by side diff without diff region alignment

之後(有差異區域對齊)

A side by side diff with diff region alignment

新差異演算法現已預設啟用

我們已經完成了新差異演算法的推廣,它現在是 VS Code 中的預設演算法。您可以在過去的發行說明中瞭解一些演算法改進。

差異降噪

在此更新中,我們為新差異演算法添加了啟發式演算法,以減少匹配不相關單詞的可能性。

這是以前差異編輯器的外觀(請注意,this 在兩側都匹配,即使匹配沒有幫助)

Before using the new diff algorithm

這是現在啟發式改進後的外觀(請注意,不相關的匹配更少)

After using the new diff algorithm heuristics

切換側

當使用新差異編輯器的並排檢視時,現在有一個新命令差異編輯器:切換側,允許您從一側跳到另一側。切換側時,活動編輯器中的游標位置和當前選擇會對映到另一側。

還有更多

檢視 1.80 發行說明,瞭解新差異編輯器中更改的更詳細描述!

終端

內聯終端選項卡中的自定義懸停

當只有一個終端時顯示的面板內聯終端選項卡現在使用自定義懸停,以獲得更一致的外觀並支援嵌入式連結。

Hovering the inline terminal tab will show information about the terminal

原始碼管理

根據社群反饋,現在支援路徑中帶有符號連結的 Git 儲存庫,方法是使用 --path-format 選項,該選項已新增到 2.31 版本的 rev-parse Git 命令中。從這個版本開始,當開啟這樣的儲存庫時,所有原始碼管理功能(例如,原始碼管理檢視、儲存庫檢測、新增/修改/刪除行編輯器裝飾等)都應該按預期工作。

除錯

JavaScript 偵錯程式

支援 Fast Node (Version) Manager

JavaScript 偵錯程式現在在其執行時版本中支援 Fast Node Manager (fnm)。fnm 使用者現在可以設定 launch.jsonruntimeVersion 屬性來選擇 Node.js 版本。

Notebook

對關閉的筆記本進行富文字搜尋

在之前的版本中,我們為開啟的筆記本引入了富文字工作區搜尋。現在,還支援預覽關閉筆記本的富文字結果。

當您在搜尋檢視中搜索文字時,來自筆記本的結果預覽應該與您開啟筆記本編輯器時字串的外觀匹配。請注意,這僅在筆記本關閉時顯示輸入結果。要嘗試此功能,請在設定中啟用 search.experimental.closedNotebookRichContentResults

針對大型流式輸出的效能改進

我們針對執行期間流式傳輸的大型單元格輸出進行了效能改進。這減少了渲染活動量,但目前僅適用於可滾動單元格輸出。

筆記本粘滯滾動

此版本帶來了筆記本編輯器“粘滯滾動”的首次迭代。筆記本編輯器頂部的粘滯滾動顯示了當前可見的單元格或單元格輸出的 Markdown 標題。選擇一個粘滯滾動“行”會聚焦該單元格,讓您能夠快速導航筆記本。此功能透過 notebook.stickyScroll.enabled 設定或檢視:切換筆記本粘滯滾動命令啟用。

Web 版 VS Code

始終載入最新版本的內建擴充套件

vscode.dev 現在始終載入最新版本的內建擴充套件。這意味著當您開啟 vscode.dev 時,您將不再看到“需要重新載入”通知來更新內建擴充套件到最新版本。

遠端開發

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

亮點包括:

  • 從 VS Code 將遠端隧道作為服務安裝。
  • 簡化 @devcontainers/cli 安裝。
  • 在鎖檔案中記錄 Dev Container 功能依賴項。

您可以在 遠端開發發行說明中瞭解新的擴充套件功能和錯誤修復。

對擴充套件的貢獻

GitHub Copilot

快速聊天使用者體驗改進

快速聊天體驗在此迭代中得到了改進。

像以前一樣,您可以使用 ⇧⌥⌘L (Windows, Linux Ctrl+Shift+Alt+L) 切換此檢視。具體改進包括:

  • 對話式聊天:快速聊天體驗現在顯示您的完整對話,同時仍將最後一個問題和答案保持在焦點。
  • 斜槓命令補全:當您鍵入 / 時,現在有斜槓命令的補全。

此外,還有一個實驗性設定 chat.experimental.defaultMode,用於控制顯示聊天的哪些部分。它有三個選項:

  • chatView - 在活動欄中顯示聊天圖示,以在聊天檢視中啟動聊天(預設)。
  • quickQuestion - 在標題欄中顯示聊天圖示,以啟動快速聊天。
  • both - 兩個聊天圖示都可見,允許您開啟任一聊天 UI。

我們想了解您對此設定以及整體快速聊天體驗的看法,因此請隨時透過反饋在 問題中提出。

斜槓命令改進

我們對面板、內聯和快速聊天中的斜槓命令進行了以下可用性改進:

  1. 斜槓命令現在以塊的形式呈現,並且可以使用單個退格鍵刪除。
  2. 從建議列表中接受斜槓命令,例如 /clear/help,現在會執行該命令,從而無需在接受補全後明確提交聊天請求。
  3. /createWorkspace 面板聊天斜槓命令在首次在問題中使用後會在聊天輸入中重新填充,從而可以輕鬆地提出有關工作區的後續問題。

以下錄製演示了所有三項改進:

迭代修復

在使用 /fix 命令時,您可以透過設定 github.copilot.editor.iterativeFixing 啟用迭代修復。當迭代修復啟用時,如果在第一次修復後,選擇中仍然存在診斷錯誤,則會再次執行修復。此設定預設啟用。

筆記本生成改進

在生成筆記本時,有額外的步驟可以提高生成程式碼的質量,並修復語言擴充套件在生成程式碼中檢測到的診斷。此功能預設停用,但可以透過以下設定啟用:

"github.copilot.notebook": {
  "iterativeFixing": true,
  "iterativeImproving": true
}

內聯聊天

在使用內聯聊天時,您現在可以使用 inlineChat.showDiff 設定啟用和停用差異檢視。您可以右鍵單擊內聯聊天以顯示上下文選單來更改此設定。

終端上下文

Copilot Chat 現在瞭解活動終端的緩衝區和選擇。

Python

容錯 pytest 發現

作為我們新測試架構推廣的一部分,“測試資源管理器”面板現在支援容錯 pytest 發現。當 pytest 在發現期間丟擲可處理的錯誤時,例如來自未知匯入的錯誤,所有其他測試仍將在有錯誤的檔案之外被發現。此功能僅在新測試重寫中可用,該重寫仍處於實驗階段。該重寫目前對 100% 的 Insiders 使用者和 25% 的穩定版使用者處於活動狀態,但很快將普遍採用。在此期間,您可以使用 pythonTestAdapter 設定選擇啟用或停用。

使用引數執行檔案的偵錯程式配置

新的 Debugpy 擴充套件現在提供了帶有引數的 Python 檔案 launch.json 配置,當您希望為 Python 檔案提供不同的輸入值而無需每次執行都修改程式碼或偵錯程式配置時,這非常有用。

要使用此配置,請確保您已安裝 Debugpy 擴充套件。按 ⇧⌘D (Windows, Linux Ctrl+Shift+D) 開啟執行和除錯檢視,然後選擇建立 launch.json 檔案或齒輪圖示以訪問 launch.json 檔案。選擇Debugpy,然後從可用配置中選擇Python:帶有引數的檔案

現在,當您想要除錯 (F5) 需要命令列引數的 Python 檔案時,會出現一個提示,允許您輸入要傳遞給 Python 檔案的所需引數。

輸入引數後,按 Enter,偵錯程式將啟動,讓您逐步執行程式碼。

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

Python 擴充套件 API 的 npm 包

Python 擴充套件現在提供了一個 npm 包,使其他擴充套件作者更容易訪問和跟蹤 Python 擴充套件 API 中的更改。檢視 @vscode/python-extension npm 模組,以處理使用者計算機上可用的 Python 環境。

Python 擴充套件的 Dev Container

現在有一個 Python 擴充套件的 Dev Container,它使用了微軟官方的 Node.js 映象。透過這個 自定義開發容器,使用者可以在 GitHub Codespace 中開啟 Python 擴充套件儲存庫,並立即開始開發和測試 Python 擴充套件,無需任何安裝。Python 3.7、3.8、3.9、3.10 和 3.11 版本都已預裝,因此使用者可以使用 pyenv 輕鬆切換 Python 版本。

Jupyter

連線到 Codespace 上的 Jupyter 伺服器

github.dev 上處理 Jupyter 筆記本時,您現在可以透過核心選擇器連線到在 GitHub Codespace 例項上執行的 Jupyter 伺服器。

繼續處理未提交的更改

您可以透過選擇筆記本工具欄中的繼續按鈕切換到底層 codespace,並且工作區中任何未提交的更改都會帶到 codespace。

GitHub 拉取請求和議題

GitHub Pull Requests and Issues 擴充套件取得了更多進展,該擴充套件允許您處理、建立和管理拉取請求和問題。本次迭代,我們專注於更新建立檢視,使其更清晰、更有用。

建立檢視的改進包括:

  • 該檢視會嘗試為您​​的 PR 檢測最佳基礎分支,而不是始終使用預設分支。
  • 您可以從建立檢視向您的 PR 新增審閱者、經辦人、標籤和里程碑。
  • 預設情況下,會記住您的最後一個“建立選項”(例如,草稿或自動合併)。
  • 檢視效能大大提高。
  • 您可以在釋出分支之前檢視差異。
  • 分支釋出後,您還可以檢視提交(未釋出分支即將推出此功能)。

GitHub Pull Request and Issues extension Create view

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

GitHub 身份驗證

登出時撤銷 GitHub OAuth 令牌

以前,當您在 VS Code 中登出 GitHub 帳戶時,它只會從秘密儲存中刪除 OAuth 令牌。該令牌仍然有效,並且能夠向 GitHub 的 API 發出請求。為了提高令牌管理的安全性,我們現在嘗試刪除後端上的令牌,使令牌在登出後不再有效。

擴充套件創作

revealSetting 和 focusSearch 已新增到 IOpenSettingsActionOptions

擴充套件現在可以將 revealSetting 物件和 focusSearch 布林值傳遞給接受 IOpenSettingsActionOptions 引數的命令,例如 workbench.action.openSettingsJson

例如,以下命令:

vscode.commands.executeCommand('workbench.action.openSettingsJson', {
  revealSetting: { key: 'editor.renderWhitespace' }
});

開啟使用者設定 JSON 檔案,如果存在,則顯示 editor.renderWhitespace 設定。

新的 TestController.invalidateTestResults 方法

測試擴充套件可以呼叫新的方法 TestController.invalidateTestResults,以向用戶指示一個或多個測試的任何結果可能不再適用。例如,擴充套件可能會做如下事情:

onFileChange(uri => {
  // invalidate tests in a file when a file changes:
  testController.invalidateTestResults(getTestsInFile(uri));
});
onConfigurationChange(() => {
  // invalidate results for all tests:
  testController.invalidateTestResults();
});

網路代理的 Kerberos 認證

使用 https Node.js 模組的擴充套件現在可以使用需要 Kerberos 認證的網路代理。本地機器需要配置 Kerberos,但擴充套件無需執行任何操作即可使用此功能。

在自動選擇的服務主體名稱不起作用的情況下,使用者可以使用 http.proxyKerberosServicePrincipal 設定提供一個:

Kerberos Service Principal setting

QuickPickItem 中的圖示已定稿

QuickPickItem 中圖示的 API 已定稿。您現在可以使用 iconPath 屬性在 QuickPickItem 中顯示圖示。

A quick pick with GitHub avatars as the item icons

工程

透過名稱重整縮小 VS Code

最近的工程工作將 VS Code 的釋出 JavaScript 大小減少了 20%。在透過名稱修飾縮小 VS Code 部落格文章中,您可以瞭解 VS Code 工程師 Matt BiernerJohannes Rieken 如何研究識別符號名稱修飾以最佳化程式碼大小,並提出了使用 TypeScript 的有效解決方案。

Pty 主機更多改進

上個月對 pty 主機的改進的基礎上,進行了以下改進:

  • 效能
    • pty 主機現在只在需要時才啟動,因此從不開啟終端的使用者將節省約 50-100 MB。
    • 進一步並行化終端重新連線,加快了終端初始化時間。
    • 終端輸出訊息現在已緩衝,減少了從 pty 主機和託管終端的視窗之間的流量。
  • 診斷
    • 在跟蹤日誌級別時,會記錄每個程序之間的延遲統計資訊。
    • 視窗 ID 已記錄到終端輸出通道中的所有日誌。
    • Pty 主機 RPC 日誌記錄現在會記錄因異常而失敗的響應。

值得注意的修復

  • 133542 重新連線到錯誤的終端
  • 168021 JavaScript 偵錯程式中更好的物件補全
  • 184894 無法在終端中單擊和拖動捲軸

感謝

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

問題跟蹤

對我們問題跟蹤的貢獻

拉取請求

vscode 的貢獻

vscode-extension-samples 的貢獻

vscode-hexeditor 的貢獻

  • @lorsanta
    • 修復:按下 Home 鍵時滾動到頂部 PR #448
    • 修復:在選項卡組之間切換時更新選擇計數。 PR #449

vscode-js-debug 的貢獻

vscode-pull-request-github 的貢獻

vscode-vsce 的貢獻

inno-updater 的貢獻

language-server-protocol 的貢獻

monaco-editor 的貢獻