2023 年 7 月 (版本 1.81)
更新 1.81.1:此更新解決了這些 問題。
下載:Windows:x64 Arm64 | Mac:通用 Intel silicon | Linux:deb rpm tarball Arm snap
歡迎來到 Visual Studio Code 2023 年 7 月的版本。此版本包含許多更新,我們希望您會喜歡,其中一些主要亮點包括:
- 可訪問性改進 - 通知、聊天響應和懸停的輔助功能檢視支援。
- VS Code 配置檔案 - 透過部分配置檔案和“應用於所有配置檔案”選項進行更精細控制。
- 新的 diff 編輯器功能 - 摺疊未更改的區域,改進的 diff 區域文字對齊。
- 支援帶符號連結的 Git 儲存庫 - 支援帶符號連結的儲存庫路徑。
- Notebook 更新 - 在已關閉的 Notebook 中搜索文字,“粘滯滾動”顯示 Markdown 標題。
- Python 測試發現 - 容錯 pytest 發現會跨所有檔案繼續。
- 在 GitHub Codespaces 中訪問 Jupyter 伺服器 - 連線到 codespace 中的遠端 Jupyter 伺服器。
- GitHub 拉取請求建立 - 改進的基礎分支檢測,記住之前的建立 PR 選項。
- 預覽:GitHub Copilot UX - 快速聊天改進,迭代式 /fix 命令。
如果您想線上閱讀這些發行說明,請訪問 code.visualstudio.com 上的更新頁面。
內測版:想盡快嘗試新功能?您可以下載每晚的內測版構建,並儘快嘗試最新的更新。
輔助功能
輔助功能檢視改進
開啟輔助功能檢視(⌥F2(Windows Alt+F2,Linux Shift+Alt+F2))命令允許螢幕閱讀器使用者逐個字元、逐行檢查內容。在上一個迭代中,我們為編輯器懸停和聊天面板響應添加了輔助功能檢視。
現在,通知、內聯聊天響應、Jupyter Notebook 輸出和工作臺懸停都有了輔助功能檢視。
當具有輔助功能檢視的元素獲得焦點時,將在 ARIA 標籤中提供提示。該提示可以透過 `accessibility.verbosity` 設定按功能停用。
有顯示輔助功能檢視中的下一個(⌥](Windows、Linux Alt+]))和顯示輔助功能檢視中的上一個(⌥[(Windows、Linux Alt+[))命令,以便在聊天面板和通知列表中的元素之間輕鬆導航。
麵包屑符號資訊
使用聚焦和選擇麵包屑(`breadcrumbs.focusAndSelect`)命令後,麵包屑導航現在包含螢幕閱讀器的符號資訊。
輸入控制元件和結果導航一致性
透過使用(⌘↓(Windows、Linux Ctrl+Down))和(⌘↑(Windows、Linux Ctrl+Up)),在輸入控制元件(例如搜尋或過濾器輸入)與其結果之間導航的體驗在擴充套件檢視、鍵盤快捷方式編輯器以及註釋、問題和除錯控制檯面板之間保持一致。
可訪問的 diff 檢視器
在 diff 編輯器中,差異審查窗格已重新命名為可訪問的 diff 檢視器。可訪問的 diff 檢視器解決了 diff 編輯器的可訪問性不足的問題,可以透過 F7 或 diff 編輯器更多操作選單中的開啟可訪問的 diff 檢視器命令來開啟。除了此重新命名之外,我們還修復了一些錯誤並添加了一些新功能,例如能夠從檢視器啟動輔助功能幫助對話方塊或跳轉到已修改的編輯器。
配置檔案
支援部分配置檔案
您現在可以建立一個配置檔案,僅在該配置檔案中自定義部分配置(設定、鍵盤快捷方式、片段、任務和擴充套件)。例如,您可以建立一個不包含鍵盤快捷方式但包含所有其他配置的配置檔案,當該配置檔案處於活動狀態時,VS Code 將應用預設配置檔案的鍵盤快捷方式。
在下面的建立新配置檔案截圖中,鍵盤快捷方式未選中,並顯示了使用預設配置檔案的訊息。在此 VS Code 會話期間活動的任何鍵盤快捷方式都不會應用於新配置檔案。

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

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

匯出部分配置檔案時,您可以選擇僅匯出配置檔案中自定義的配置,或同時包含預設配置檔案的配置。

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

這將將該設定的值應用於所有配置檔案。從此配置檔案的任何更新都將應用於所有配置檔案。您可以透過取消選中將設定應用於所有配置檔案選項來撤銷此同步。
將擴充套件應用於所有配置檔案
您現在可以透過在擴充套件檢視中選擇將擴充套件應用於所有配置檔案選項,將某個擴充套件包含在所有配置檔案中。

這將使該擴充套件在所有配置檔案中可用。您可以透過取消選中將擴充套件應用於所有配置檔案選項來撤銷此操作。
非預設配置檔案上的設定 JSON 檔案命令 ID 已調整
當用戶處於非預設配置檔案中時,首選項:開啟使用者設定 (JSON)(`workbench.action.openSettingsJson`)命令現在將開啟特定於配置檔案的設定 JSON 檔案。要顯示應用程式範圍的設定,請改用首選項:開啟應用程式設定 (JSON)(`workbench.action.openApplicationSettingsJson`)命令。
工作臺
即將更新的發行說明
每當每月的穩定版更新準備好安裝時,您現在可以透過活動欄底部的管理選單(齒輪按鈕)中的顯示更新發行說明命令來預覽發行說明。
編輯器
將 Markdown 貼上的 URL 格式化為連結
`markdown.editor.pasteUrlAsFormattedLink` 設定現在有一個新選項 `smart`。`smart` 貼上功能可以檢測您何時貼上到可能不希望自動進行 Markdown 連結格式化的文字中。`smart` 貼上忽略的一些情況包括在 Markdown 連結內貼上、覆蓋另一個 Markdown 連結以及在程式碼塊內貼上。
預設情況下,`pasteUrlAsFormattedLink` 功能當前處於關閉狀態(`never`),但您可以將其設定為 `smart` 或 `always`(始終建立格式化的 URL 連結)。
非同步標記化推出
在 1.76 更新中,我們在 Web Worker 上實現了編輯器文件的非同步標記化,以提高渲染器程序的效能。自那時以來,我們修復了由罕見競爭條件引起的幾個錯誤,並在此版本中,我們開始向穩定版使用者推出此功能。
如果您不想等待,可以將 `editor.experimental.asyncTokenization` 設定為 `true` 以立即獲得非同步標記化。
Diff 編輯器
在此迭代中,我們繼續對新的 diff 編輯器進行工作,並計劃逐步向穩定版使用者推出。您可以透過將 `"diffEditor.experimental.useVersion2": true` 設定來立即試用。新的 diff 編輯器包含以下描述的幾個新功能和錯誤修復。
摺疊未更改的區域
使用 `diffEditor.experimental.collapseUnchangedRegions` 在新的 diff 編輯器中啟用隱藏未更改的區域。在審查具有大量未更改行的長 diff 時,此功能很有用。
隱藏行的塊的邊框可以拖動或單擊以從底部或頂部顯示文字。

Diff 區域對齊
新的 diff 編輯器現在可以對齊 diff 區域內的文字,使得審查縮排已更改且行已插入的 diff 更加容易。
之前(未啟用 diff 區域對齊和空格 diffing)

之後(啟用 diff 區域對齊)

新的 diff 演算法現已預設啟用
我們已完成新 diff 演算法的推出,該演算法現在是 VS Code 中的預設設定。您可以在之前的發行說明中閱讀有關演算法改進的資訊。
Diff 噪聲抑制
在此更新中,我們在新的 diff 演算法中添加了啟發式方法,以減少匹配不相關單詞的機率。
這是 diff 編輯器之前的樣子(請注意 `this` 在兩邊是如何匹配的,即使匹配沒有幫助)

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

切換側邊
使用新的 diff 編輯器的並排檢視時,現在有一個新的命令Diff Editor: Switch Sides,允許您在兩側之間跳轉。切換側邊時,游標位置和活動編輯器中的當前選擇會對映到另一側。
還有更多
請檢視 1.80 發行說明,瞭解關於新 diff 編輯器中已更改內容的更詳細描述!
終端
內聯終端標籤中的自定義懸停
當只有一個終端時顯示的面板內聯終端標籤現在使用自定義懸停,以獲得更一致的外觀並支援嵌入式連結。

原始碼管理
支援帶符號連結的 Git 儲存庫
根據社群反饋,現在支援使用 `rev-parse` Git 命令(版本 `2.31` 中新增的 `--path-format` 選項)的 Git 儲存庫,這些儲存庫在其路徑中有符號連結。從這個版本開始,所有原始碼管理功能(例如,原始碼管理檢視、儲存庫檢測、已新增/已修改/已刪除行編輯器裝飾等)在開啟此類儲存庫時都應該按預期工作。
除錯
JavaScript 偵錯程式
支援 Fast Node (Version) Manager
JavaScript 偵錯程式現在在其執行時版本中支援 Fast Node Manager (fnm)。fnm 使用者現在可以設定 `launch.json` 的 `runtimeVersion` 屬性來選擇 Node.js 版本。
Notebook
已關閉 Notebook 的富內容搜尋
在之前的版本中,我們為開啟的 Notebook 引入了富內容工作區搜尋。現在有預覽支援,也可以檢視已關閉 Notebook 的富內容結果。
當您在搜尋檢視中搜索文字時,來自 Notebook 的結果預覽應與您開啟 Notebook 編輯器時的字串外觀匹配。請注意,這僅在 Notebook 關閉時顯示輸入的結果。要嘗試此功能,請在設定中啟用 `search.experimental.closedNotebookRichContentResults`。
大型流式輸出的效能改進
我們對執行期間流式傳輸的大型單元格輸出了效能改進。這減少了渲染活動量,但目前僅適用於可滾動單元格輸出。
Notebook 粘滯滾動
此版本帶來了 Notebook 編輯器的“粘滯滾動”的第一個迭代。“粘滯滾動”顯示在 Notebook 編輯器頂部,顯示當前可見的單元格或單元格輸出的 Markdown 標題。選擇粘滯滾動“行”會聚焦該單元格,使您能夠快速導航 Notebook。此功能透過 `notebook.stickyScroll.enabled` 設定或檢視:切換 Notebook 粘滯滾動命令啟用。
Web 版 VS Code
始終載入內建擴充套件的最新版本
vscode.dev 現在始終載入內建擴充套件的最新版本。這意味著當您開啟 vscode.dev 時,將不再看到“需要重新載入”的通知來將內建擴充套件更新到最新版本。
遠端開發
遠端開發擴充套件允許您透過 SSH 或遠端隧道使用開發容器、遠端機器或適用於 Linux 的 Windows 子系統 (WSL) 作為功能齊全的開發環境。
亮點包括:
- 從 VS Code 將 Remote Tunnels 安裝為服務。
- 簡化了 @devcontainers/cli 的安裝。
- 在鎖定檔案中記錄 Dev Container 功能依賴項。
您可以在 Remote Development 發行說明中瞭解新擴充套件功能和錯誤修復。
對擴充套件的貢獻
GitHub Copilot
快速聊天 UX 改進
本迭代對快速聊天體驗進行了改造。
與之前一樣,您可以使用 ⇧⌥⌘L(Windows、Linux Ctrl+Shift+Alt+L) 來切換此檢視。具體改進包括:
- 對話式聊天:快速聊天體驗現在顯示您的完整對話,同時仍然聚焦最後一個問題和答案。
- 斜槓命令補全:當您鍵入 `/` 時,現在有斜槓命令的補全。
此外,還有一個實驗性設定 `chat.experimental.defaultMode`,用於控制顯示聊天內容的哪些部分。它有三個選項:
chatView- 在活動欄中顯示聊天圖示,在聊天檢視中啟動聊天(預設)。quickQuestion- 在標題欄中顯示聊天圖示,以啟動快速聊天。both- 顯示兩個聊天圖示,允許您開啟任一聊天 UI。
我們想聽聽您對此設定以及總體快速聊天體驗的看法,因此請隨時 開啟 issue 提供反饋。
斜槓命令改進
我們對面板、內聯和快速聊天中的斜槓命令進行了以下可用性改進:
- 斜槓命令現在呈現為塊,並且可以透過按一次退格鍵刪除。
- 接受來自建議列表的斜槓命令(例如 `/clear` 和 `/help`)現在會執行該命令,從而無需在接受補全後顯式提交聊天請求。
- `/createWorkspace` 面板聊天斜槓命令會在第一次在問題中使用後重新填充到聊天輸入中,方便您對工作區提出後續問題。
以下錄屏演示了所有三個改進。
迭代修復
在使用 `/fix` 命令時,您可以透過設定 `github.copilot.editor.iterativeFixing` 來啟用迭代修復。當啟用迭代修復時,如果第一次修復後,選區中仍有診斷錯誤,則修復將再次執行。此設定預設啟用。
Notebook 生成改進
在生成 Notebook 時,有額外的步驟來提高生成程式碼的質量,並修復由語言擴充套件檢測到的生成程式碼中的診斷。此功能預設停用,但可以透過以下設定啟用:
"github.copilot.notebook": {
"iterativeFixing": true,
"iterativeImproving": true
}
內聯聊天
在使用內聯聊天時,您現在可以透過設定 `inlineChat.showDiff` 來啟用和停用 diff 檢視。您可以右鍵單擊內聯聊天以顯示上下文選單來更改此設定。
終端上下文
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: File with Arguments。
現在,當您想除錯(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,它使用 Microsoft 官方 Node.js 映象。使用這個 自定義 dev container,使用者可以在 GitHub Codespace 中開啟 Python 擴充套件倉庫,並立即開始開發和測試 Python 擴充套件,無需安裝。Python 版本 3.7、3.8、3.9、3.10 和 3.11 已預裝,因此使用者可以使用 pyenv 輕鬆切換 Python 版本。
Jupyter
連線到 Codespace 上的 Jupyter 伺服器
在 github.dev 上處理 Jupyter Notebook 時,您現在可以透過核心選擇器連線到執行在 GitHub Codespace 例項上的 Jupyter 伺服器。
使用未提交的更改繼續操作
您可以透過選擇 Notebook 工具欄中的繼續操作按鈕切換到底層的 codespace,並且工作區中任何未提交的更改都將被帶到 codespace。
GitHub 拉取請求和議題
GitHub Pull Requests and Issues 擴充套件取得了更多進展,它允許您處理、建立和管理拉取請求和問題。在此迭代中,我們專注於更新建立檢視,使其更簡潔、更有用。
建立檢視的改進包括:
- 該檢視嘗試檢測 PR 的最佳可能基礎分支,而不是始終使用預設分支。
- 您可以從建立檢視為您的 PR 新增審閱者、分配者、標籤和里程碑。
- 預設情況下,您上次的“建立選項”(例如,草稿或自動合併)將被記住。
- 該檢視的效能大大提高。
- 您可以在釋出分支之前檢視 diff。
- 釋出分支後,您還可以檢視提交(這即將為未釋出的分支提供)。

請查閱擴充套件的0.70.0 版本變更日誌 changelog,瞭解其他亮點。
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` 設定提供一個。

QuickPickItem 中的圖示已最終確定
`QuickPickItem` 中圖示的 API 已最終確定。您現在可以使用 `iconPath` 屬性在 `QuickPickItem` 中顯示圖示。
![]()
工程
透過名稱重整縮小 VS Code
最近的一項工程工作將 VS Code 的裝載 JavaScript 的大小減小了 20%。在 《透過名稱混淆縮小 VS Code》博文中,您可以瞭解 VS Code 工程師 Matt Bierner 和 Johannes Rieken 如何研究識別符號名稱混淆以最佳化程式碼大小,並透過 TypeScript 找到有效的解決方案。
更多的 pty host 改進
繼上個月對 pty host 的改進之後,已進行了以下改進:
- 效能
- pty host 現在僅在需要時啟動,因此從不開啟終端的使用者將節省大約 50-100 MB。
- 進一步並行化終端重新連線,加快終端初始化速度。
- 終端輸出訊息現在被緩衝,減少了從 pty host 和託管終端的視窗之間傳輸的流量。
- 診斷
- 在跟蹤日誌級別下會記錄每個程序之間的延遲統計資訊。
- 視窗 ID 將記錄在終端輸出通道的所有日誌中。
- Pty host RPC 日誌記錄現在會記錄因異常而失敗的響應。
值得注意的修復
感謝
最後但同樣重要的是,向 VS Code 的貢獻者們致以衷心的感謝。
問題跟蹤
對我們問題跟蹤的貢獻
拉取請求
對 vscode 的貢獻
- @a-stewart (Anthony Stewart):將操作小部件的最大寬度增加到瀏覽器寬度的 80% PR #186157
- @abhijit-chikane (Abhijit Chikane):修復斷點佔位符的大小寫 PR #185753
- @andrewbranch (Andrew Branch):[typescript-language-features] 更新 autoImportFileExcludePatterns 描述 PR #186528
- @colombod (Diego Colombo):為語言配置新增支援自動閉合配對的提議 API PR #186567
- @Dromantor (Andreas Pareis):修復 #173858 小地圖滑塊未滾動到頂部 PR #180728
- @EhabY (Ehab Younes):在 TreeView API 中暴露焦點元素和更改事件 PR #184268
- @gjsjohnmurray (John Murray)
- 在測試輸出內聯操作中使用 `go-to-file` codicon(修復 #186369)PR #188472
- 在測試檢視進度區域顯示佔位符文字(修復 #141181)PR #188484
- @hsfzxjy
- 將 Ctrl+DownArrow 和 Ctrl+UpArrow 通用化到大多數輸入-結果小部件(修復 #179967)PR #187077
- 修復上下文選單定位不準確的問題 PR #187157
- @jeanp413 (Jean Pierre)
- 修復升級後擴充套件啟用失敗的問題:Error: Cannot find module 'vscode' PR #187090
- 修復關閉查詢小部件後在終端中使用 cmd+up/down 的問題 PR #187781
- 修復終端查詢小部件工具提示中缺少快捷鍵的問題 PR #187787
- @lkct (Rickey K. Liang):還原 Python 文件字串顏色 PR #184938
- @m-ou-se (Mara Bos):接受 --goto 格式中的尾隨冒號。PR #186174
- @mwerschy (Malte Werschy):實現縮排指南著色選項。PR #178112
- @rielAsh24 (Ashriel):修復 #182014:ISO 日期格式 PR #185587
- @ssigwart (Stephen Sigwart):修復 Typescript 和 PHP 的單行 if/else 和迴圈縮排 PR #136577
- @SvanT (Svante Boberg):Dispose
TerminalWordLinkDetectorlisteners PR #187083 - @weartist (Hans):修復 #187223 PR #188144
- @yiliang114 (易良)
- 修復:拼寫錯誤 PR #186607
- 修復:關閉 #187788,恢復樹檢視狀態 PR #187902
- @yshaojun
- 修復:顏色提示可能顯示兩次(#_175476)PR #186926
- 修復:防止重複原因(#_186206)PR #187985
- 修復:修改後的編輯器寬度(#_175397)PR #188012
對 vscode-extension-samples 的貢獻
- @dsanders11 (David Sanders):修復 EACCES 錯誤程式碼名稱 PR #847
對 vscode-hexeditor 的貢獻
對 vscode-js-debug 的貢獻
- @zardoy (Vitaly):修復成員表示式補全 PR #1758
對 vscode-pull-request-github 的貢獻
- @mgyucht (Miles Yucht):正確地向後迭代跨檔案的 diff PR #5036
對 vscode-vsce 的貢獻
- @drewbrokke (Drew Brokke):(#_868) publish 選項 --skip-duplicate 不考慮目標平臺 PR #873
對 inno-updater 的貢獻
- @panekj (Jakub Panek):feat:使用 windows-sys 替換不受維護的 winapi PR #18
對 language-server-protocol 的貢獻
- @c-claeys (Cristopher Claeys):向規範新增透過 `textDocument/rangesFormatting` 進行的多範圍格式化 PR #1759
- @gundermanc (Christian Gunderman):Semantic Tokens LSIF 規範。PR #1754
- @semanticart (Jeffrey Chupp):修復拼寫錯誤 PR #1774
對 monaco-editor 的貢獻
- @claylibrarymarket:修復 Twig 的純文字類表示式 PR #4063
- @FossPrime (Ray Foss):使用新的 GitHub pages 工作流 PR #4000
- @leandrocp (Leandro Pereira):Elixir - 新增對多字母大寫 sigil 的支援 PR #4041
- @philippleidig (PhilippLe):為結構化文字 (st) 語言新增 TwinCAT 檔案支援 PR #3315
- @remcohaszing (Remco Haszing)