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 設定檔 - 更精細的控制,包含部分設定檔和「套用至所有設定檔」選項。
- 新的差異編輯器功能 - 折疊未變更的區域、更佳的差異區域文字對齊。
- 具有符號連結的 Git 儲存庫 - 支援具有符號連結的儲存庫路徑。
- 筆記本更新 - 在關閉的筆記本中搜尋文字,「黏性捲動」顯示 Markdown 標題。
- Python 測試探索 - 容錯 pytest 探索會跨所有檔案繼續進行。
- 在 GitHub Codespaces 中存取 Jupyter 伺服器 - 連線到 codespace 中的遠端 Jupyter 伺服器。
- GitHub pull request 建立 - 更佳的基礎分支偵測,記住先前的建立 PR 選項。
- 預覽:GitHub Copilot UX - 快速聊天改進、迭代式 /fix 命令。
如果您想在線上閱讀這些版本資訊,請前往 Updates,網址為 code.visualstudio.com。
Insiders: 想要盡快試用新功能嗎?您可以下載每晚的 Insiders 組建,並在最新更新可用時立即試用。
協助工具
協助工具檢視改進
開啟協助工具檢視 (⌥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 工作階段期間處於作用中的任何鍵盤快速鍵都不會套用至新的設定檔。
當從設定檔範本或現有設定檔複製時,您也可以使用 從...複製 下拉式功能表來建立部分設定檔。
您也可以透過在 編輯設定檔 UI 中編輯設定檔,將現有設定檔設定為使用預設設定檔中的組態。
當匯出部分設定檔時,您可以選擇僅匯出在設定檔中自訂的組態,或也包含預設設定檔中的組態。
將設定套用至所有設定檔
您現在可以透過在「設定」編輯器中選取 將設定套用至所有設定檔 選項,將設定套用至所有設定檔。
這會將設定的值套用至所有設定檔。從任何設定檔對此設定進行的任何更新都會套用至所有設定檔。您可以透過取消勾選 將設定套用至所有設定檔 選項來還原此同步處理。
將擴充功能套用至所有設定檔
您現在可以透過在「擴充功能」檢視中選取 將擴充功能套用至所有設定檔 選項,將擴充功能包含在所有設定檔中。
這會使此擴充功能在所有設定檔中都可用。您可以透過取消勾選 將擴充功能套用至所有設定檔 選項來還原此動作。
在非預設設定檔上調整的設定 JSON 檔案命令 ID
當使用者位於非預設設定檔中時,喜好設定:開啟使用者設定 (JSON) (workbench.action.openSettingsJson
) 命令現在將開啟設定檔特定的設定 JSON 檔案。若要顯示應用程式範圍的設定,請改為使用 喜好設定:開啟應用程式設定 (JSON) (workbench.action.openApplicationSettingsJson
) 命令。
工作台
即將推出的更新的版本資訊
每當每月穩定更新準備好安裝時,您現在可以透過活動列底部的 管理 功能表 (齒輪按鈕) 中的 顯示更新版本資訊 命令來預覽版本資訊。
編輯器
Markdown 貼上 URL 作為格式化連結
markdown.editor.pasteUrlAsFormattedLink
設定現在有一個新的選項 smart
。當您貼到可能不想要自動 Markdown 連結格式化的文字中時,smart
貼上功能可以偵測到。smart
貼上忽略的一些情況包括貼到 Markdown 連結內、另一個 Markdown 連結上方以及程式碼區塊內。
依預設,pasteUrlAsFormattedLink
功能目前已關閉 (never
),但您可以將設定變更為 smart
或 always
(一律建立格式化的 URL 連結)。
非同步語法標記推出
在 1.76 更新 中,我們在 Web 工作執行緒上實作了編輯器文件非同步語法標記,以改善轉譯器程序的效能。從那時起,我們修正了由罕見的競爭條件引起的一些錯誤,並且在此版本中,我們開始將此功能推出給穩定版使用者。
如果您不想等待,可以將 editor.experimental.asyncTokenization
設定為 true
,以立即取得非同步語法標記。
差異編輯器
在此迭代中,我們繼續致力於新的差異編輯器,並計劃逐步將其推出給穩定版使用者。您可以立即嘗試使用,方法是將 "diffEditor.experimental.useVersion2": true
設定為 true。新的差異編輯器包含以下描述的幾個新功能和錯誤修正。
折疊未變更的區域
使用 diffEditor.experimental.collapseUnchangedRegions
以在新差異編輯器中啟用隱藏未變更的區域。當檢閱具有大量未變更行的較大差異時,此功能很有用。
可以拖曳或按一下隱藏行區塊的邊界,以顯示來自底部或頂端的文字。
差異區域對齊
新的差異編輯器現在會對齊差異區域內的文字,從而更容易檢閱縮排已變更且已插入行的差異。
之前 (未啟用差異區域對齊和空白字元差異)
之後 (已啟用差異區域對齊)
新的差異演算法現在預設為啟用
我們已完成新的差異演算法的推出,該演算法現在是 VS Code 中的預設演算法。您可以在過去的版本資訊中閱讀有關演算法改進的一些資訊。
差異雜訊降低
在此更新中,我們將啟發式方法新增至新的差異演算法,以降低比對不相關字詞的可能性。
這是差異編輯器之前的外觀 (請注意 this
如何在兩側都比對,即使比對沒有幫助)
這是現在使用啟發式改進後的外觀 (請注意,不相關的比對較少)
切換側邊
當使用新的差異編輯器的並排檢視時,現在有一個新的命令 差異編輯器:切換側邊,可讓您從一側跳到另一側。切換側邊時,作用中編輯器中的游標位置和目前選取範圍會對應到另一側。
還有更多功能
查看 1.80 版本資訊,以取得有關新的差異編輯器中已變更內容的更詳細說明!
終端機
內嵌終端機索引標籤中的自訂浮動提示
當只有一個終端機時顯示的面板內嵌終端機索引標籤現在使用自訂浮動提示,以獲得更一致的外觀並支援內嵌連結。
原始碼控制
支援具有符號連結的 Git 儲存庫
根據社群意見反應,現在支援路徑上具有符號連結的 Git 儲存庫,方法是使用 --path-format
選項,該選項已新增至版本 2.31
中的 rev-parse
Git 命令。從此版本開始,所有原始碼控制功能 (例如,原始碼控制檢視、儲存庫偵測、已新增/已修改/已刪除的行編輯器裝飾等) 在開啟此類儲存庫時應能如預期般運作。
偵錯
JavaScript 偵錯工具
支援快速節點 (版本) 管理員
JavaScript 偵錯工具現在在其執行階段版本中支援 快速節點管理員 (fnm)。fnm 的使用者現在可以設定 launch.json
的 runtimeVersion
屬性來選取 Node.js 版本。
筆記本
關閉的筆記本的豐富內容搜尋
在先前的版本中,我們推出了開啟的筆記本的豐富內容工作區搜尋。現在有預覽支援,也可以查看關閉的筆記本的豐富內容結果。
當您在「搜尋」檢視中搜尋文字時,來自筆記本的結果預覽應與您開啟筆記本編輯器時字串的外觀相符。請注意,這只會在筆記本關閉時顯示輸入的結果。若要試用此功能,請在您的設定中啟用 search.experimental.closedNotebookRichContentResults
。
改善大型串流輸出的效能
我們針對在執行期間串流的大型儲存格輸出進行了效能改進。這減少了轉譯活動的數量,但目前僅適用於可捲動的儲存格輸出。
筆記本黏性捲動
此版本為筆記本編輯器帶來了「黏性捲動」的第一次迭代。「黏性捲動」顯示在筆記本編輯器的頂端,顯示目前可見的儲存格或儲存格輸出的 Markdown 標題。選取黏性捲動「行」會將焦點放在該儲存格上,讓您可以快速導覽筆記本。此功能透過 notebook.stickyScroll.enabled
設定或 檢視:切換筆記本黏性捲動 命令啟用。
適用於 Web 的 VS Code
一律載入內建擴充功能的最新版本
vscode.dev 現在一律載入內建擴充功能的最新版本。這表示當您開啟 vscode.dev 時,您將不再看到「需要重新載入」通知來將內建擴充功能更新至最新版本。
遠端開發
遠端開發擴充功能,可讓您使用 開發容器、透過 SSH 或 遠端通道的遠端機器,或 Windows Subsystem for Linux (WSL) 作為全功能開發環境。
重點包括
- 從 VS Code 安裝遠端通道作為服務。
- 簡化 @devcontainers/cli 安裝。
- 在鎖定檔案中記錄開發容器功能相依性。
您可以在 遠端開發版本資訊中了解新的擴充功能和錯誤修正。
擴充功能的貢獻
GitHub Copilot
快速聊天 UX 改善
此迭代已改進快速聊天體驗。
與先前一樣,您可以使用 ⇧⌥⌘L (Windows、Linux Ctrl+Shift+Alt+L) 切換此檢視。具體改進包括
- 對話式聊天:快速聊天體驗現在顯示您的完整對話,同時仍保持最後一個問題和答案處於焦點。
- 斜線命令完成:現在當您輸入
/
時,會完成斜線命令。
此外,還有一個實驗性設定 chat.experimental.defaultMode
,可控制顯示哪些聊天部分。它有三個選項
chatView
- 在活動列中顯示「聊天」圖示,以在「聊天」檢視中啟動聊天 (預設值)。quickQuestion
- 在標題列中顯示「聊天」圖示,以啟動「快速聊天」。both
- 「聊天」圖示都可見,讓您可以開啟任一聊天 UI。
我們想知道您對此設定和一般快速聊天體驗的想法,因此請隨時開啟 問題 以提供意見反應。
斜線命令改進
我們對面板、內嵌和快速聊天中的斜線命令進行了以下可用性改進
- 斜線命令現在以區塊形式轉譯,並且可以使用單一退格鍵刪除。
- 從建議清單接受斜線命令 (例如
/clear
和/help
) 現在會執行命令,無需在接受完成後明確提交聊天要求。 /createWorkspace
面板聊天斜線命令在第一次在問題中使用後,會在聊天輸入中重新填入,讓您可以輕鬆地詢問有關工作區的後續問題。
以下錄製內容說明了所有三個改進
迭代式修正
當使用 /fix
命令時,您可以使用設定 github.copilot.editor.iterativeFixing
啟用迭代式修正。當啟用迭代式修正時,如果在第一次修正後,選取範圍中仍然存在診斷錯誤,則會再次執行修正。此設定預設為啟用。
筆記本產生改進
在產生筆記本時,還有其他步驟可以改善產生的程式碼品質,並修正語言擴充功能在產生的程式碼中偵測到的診斷。預設情況下會停用此功能,但可以使用以下設定啟用
"github.copilot.notebook": {
"iterativeFixing": true,
"iterativeImproving": true
}
內嵌聊天
當使用內嵌聊天時,您現在可以使用設定 inlineChat.showDiff
啟用和停用差異檢視。您可以按一下滑鼠右鍵內嵌聊天,以顯示內容功能表來變更此設定。
終端機內容
Copilot 聊天現在知道作用中終端機的緩衝區和選取範圍。
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 擴充功能的開發容器
現在有一個適用於 Python 擴充功能的 開發容器,其中包含 Microsoft 官方 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 Pull Requests 和 Issues
在 GitHub Pull Requests 和 Issues 擴充功能方面取得了更多進展,此擴充功能可讓您處理、建立和管理 pull request 和 issue。在此迭代中,我們專注於更新 建立 檢視,使其更簡潔且更有用。
建立 檢視的改進包括
- 檢視會嘗試偵測 PR 的最佳可能基礎分支,而不是一律使用預設分支。
- 您可以從 建立 檢視將審核者、受讓人、標籤和里程碑新增至您的 PR。
- 依預設,會記住您上次的「建立選項」(例如,草稿或自動合併)。
- 檢視效能快得多。
- 您可以在發佈分支之前檢視差異。
- 分支發佈後,您也可以檢視提交 (即將推出適用於未發佈分支)。
檢閱擴充功能 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();
});
網路 Proxy 的 Kerberos 驗證
使用 https
Node.js 模組的擴充功能現在可以使用需要 Kerberos 驗證的網路 Proxy。本機需要設定 Kerberos,但擴充功能不需要執行任何操作即可使用此功能。
如果自動選取的服務主體名稱無法運作,使用者可以使用 http.proxyKerberosServicePrincipal
設定來提供一個。
QuickPickItem 中最終確定的圖示
QuickPickItem
中圖示的 API 已最終確定。您現在可以使用 iconPath
屬性在 QuickPickItem
中顯示圖示。
工程
透過名稱 mangling 縮減 VS Code 的大小
最近的工程努力將 VS Code 隨附的 JavaScript 大小縮減了 20%。在 透過名稱 mangling 縮減 VS Code 的大小 部落格文章中,您可以了解 VS Code 工程師 Matt Bierner 和 Johannes Rieken 如何研究識別碼名稱 mangling 以最佳化程式碼大小,並提出使用 TypeScript 的有效解決方案。
更多 pty 主機改進
延續 上個月對 pty 主機的改進,已進行以下改進
- 效能
- pty 主機現在僅在需要時啟動,因此從不開啟終端機的使用者將節省約 50-100 MB 的記憶體。
- 進一步平行處理終端機重新連線,加快初始化終端機的時間。
- 終端機輸出訊息現在已緩衝,減少從 pty 主機和託管終端機的視窗傳輸的流量。
- 診斷
- 在追蹤記錄層級時,會記錄每個程序之間的延遲統計資料。
- 視窗 ID 會記錄到 終端機 輸出通道中的所有記錄。
- Pty 主機 RPC 記錄現在會記錄因例外狀況而失敗的回應。
值得注意的修正
感謝您
最後但同樣重要的是,非常感謝 VS Code 的貢獻者。
Issue 追蹤
對我們的 Issue 追蹤的貢獻
Pull request
對 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+向下箭頭和 Ctrl+向上箭頭通用化到大多數輸入結果小工具 (修正 #179967) PR #187077
- 修正內容功能表不精確的定位 PR #187157
- @jeanp413 (Jean Pierre)
- 修正升級後擴充功能啟用失敗,錯誤:找不到模組 'vscode' PR #187090
- 修正關閉尋找小工具後無法在終端機中使用 cmd+向上/向下鍵 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):處置
TerminalWordLinkDetector
接聽程式 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):正確地向後迭代跨檔案的差異 PR #5036
對 vscode-vsce
的貢獻
- @drewbrokke (Drew Brokke):(#_868) 發佈選項 --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): 語意符號 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)