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 伺服器 - 連線到程式碼空間中的遠端 Jupyter 伺服器。
- GitHub pull request 建立 - 更佳的基礎分支偵測,記住先前的建立 PR 選項。
- 預覽:GitHub Copilot UX - 快速聊天改進、反覆的 /fix 命令。
如果您想在線上閱讀這些版本資訊,請前往 更新,網址為 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 檔案命令識別碼
當使用者位於非預設設定檔中時,「喜好設定:開啟使用者設定 (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 更新中,我們在網頁工作者上實作了編輯器文件非同步語彙基元化,以改善轉譯器處理序的效能。從那時起,我們修正了由罕見的競爭條件引起的一些錯誤,並在此版本中,我們開始將此功能推廣給穩定版使用者。
如果您不想等待,可以將 editor.experimental.asyncTokenization
設定為 true
,立即取得非同步語彙基元化。
差異編輯器
在此迭代中,我們繼續致力於新的差異編輯器,並計畫逐步將其推廣給穩定版使用者。您可以立即透過設定 "diffEditor.experimental.useVersion2": true
來試用。新的差異編輯器包含以下描述的幾項新功能和錯誤修正。
折疊未變更的區域
使用 diffEditor.experimental.collapseUnchangedRegions
在新的差異編輯器中啟用隱藏未變更的區域。當檢閱具有大量未變更行的巨大差異時,此功能很有用。
可以拖曳或按一下隱藏行區塊的邊框,以顯示來自底部或頂部的文字。
差異區域對齊
新的差異編輯器現在會對齊差異區域內的文字,讓您更容易檢閱縮排已變更且已插入行的差異。
之前 (未啟用差異區域對齊和空白字元差異)
之後 (已啟用差異區域對齊)
新的差異演算法現在預設為啟用
我們已完成新的差異演算法的推廣,現在已成為 VS Code 中的預設演算法。您可以在過去的版本資訊中閱讀有關演算法改進的一些資訊。
差異雜訊降低
在此更新中,我們在新的差異演算法中新增了啟發法,以降低比對不相關字詞的可能性。
這是差異編輯器之前的外觀 (請注意 this
如何在兩側比對,即使比對沒有幫助)
這是現在使用啟發式改進後的外觀 (請注意,不相關的比對較少)
切換側邊
使用新的差異編輯器的並排檢視時,現在有一個新的命令「差異編輯器:切換側邊」,可讓您從一側跳到另一側。切換側邊時,作用中編輯器中的游標位置和目前選取範圍會對應到另一側。
還有更多
查看 1.80 版本資訊,以取得有關新差異編輯器中已變更內容的更詳細說明!
終端機
內嵌終端機索引標籤中的自訂浮動提示
當有單一終端機時顯示的面板內嵌終端機索引標籤,現在使用自訂浮動提示以獲得更一致的外觀,並支援內嵌連結。
原始檔控制
支援具有符號連結的 Git 存放庫
根據社群意見反應,現在支援路徑上具有符號連結的 Git 存放庫,方法是使用 --path-format
選項,該選項已新增至版本 2.31
中的 rev-parse
Git 命令。從此版本開始,當開啟此類存放庫時,所有原始檔控制功能 (例如,「原始檔控制」檢視、存放庫偵測、已新增/修改/刪除的行編輯器裝飾等等) 都應如預期般運作。
偵錯
JavaScript 偵錯工具
支援 Fast Node (Version) Manager
JavaScript 偵錯工具現在在其執行階段版本中支援 Fast Node Manager (fnm)。fnm 的使用者現在可以設定 launch.json
的 runtimeVersion
屬性,以選取 Node.js 版本。
筆記本
關閉筆記本的豐富內容搜尋
在先前的版本中,我們針對開啟的筆記本引入了豐富內容工作區搜尋。現在有預覽支援,也可查看關閉筆記本的豐富內容結果。
當您在「搜尋」檢視中搜尋文字時,來自筆記本的結果預覽應符合您開啟筆記本編輯器時字串的外觀。請注意,這只會在筆記本關閉時顯示輸入的結果。若要試用此功能,請在設定中啟用 search.experimental.closedNotebookRichContentResults
。
改善大型串流輸出的效能
我們已針對在執行期間串流的大型儲存格輸出進行效能改進。這減少了轉譯活動的數量,但目前僅適用於可捲動的儲存格輸出。
筆記本黏性捲動
此版本為筆記本編輯器帶來了「黏性捲動」的首次迭代。筆記本編輯器頂部的黏性捲動顯示目前可見的儲存格或儲存格輸出的 Markdown 標頭。選取黏性捲動「行」會將焦點放在該儲存格上,讓您可以快速導覽筆記本。此功能透過 notebook.stickyScroll.enabled
設定或「檢視:切換筆記本黏性捲動」命令啟用。
適用於網頁的 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 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 擴充功能的開發容器
現在有一個適用於 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 伺服器。
繼續在具有未提交變更的情況下進行
您可以選取筆記本工具列中的「繼續在...上進行」按鈕,切換到基礎程式碼空間,且工作區中的任何未提交變更都會帶到程式碼空間。
GitHub Pull Requests 和 Issues
在 GitHub Pull Requests 和 Issues 擴充功能上取得了更多進展,可讓您處理、建立和管理 pull request 和問題。在此迭代中,我們專注於更新「建立」檢視,使其更簡潔且更有用。
「建立」檢視的改進包括
- 檢視會嘗試偵測 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
中顯示圖示。
工程
透過名稱混淆縮減 VS Code
最近的工程努力將 VS Code 出貨 JavaScript 的大小縮減了 20%。在 透過名稱混淆縮減 VS Code 部落格文章中,您可以了解 VS Code 工程師 Matt Bierner 和 Johannes Rieken 如何研究識別碼名稱混淆以最佳化程式碼大小,並使用 TypeScript 提出有效的解決方案。
更多 pty 主機改進
延續 上個月對 pty 主機的改進,已進行以下改進
- 效能
- pty 主機現在僅在需要時啟動,因此從不開啟終端機的使用者將節省約 50-100 MB 的空間。
- 進一步平行化終端機重新連線,加快初始化終端機的時間。
- 終端機輸出訊息現在已緩衝,減少從 pty 主機和裝載終端機的視窗傳輸的流量。
- 診斷
- 當處於追蹤記錄層級時,會在每個處理序之間記錄延遲統計資料。
- 視窗 ID 會記錄到「終端機」輸出通道中的所有記錄。
- Pty 主機 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+向下鍵和 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 - 新增支援多字母大寫符號 PR #4041
- @philippleidig (PhilippLe):新增 TwinCAT 檔案支援結構化文字 (st) 語言 PR #3315
- @remcohaszing (Remco Haszing)