2024年6月 (版本 1.91)
更新 1.91.1:此更新解決了這些問題。
下載:Windows:x64 Arm64 | Mac:通用 Intel silicon | Linux:deb rpm tarball Arm snap
歡迎使用 Visual Studio Code 2024 年 6 月版本。此版本包含許多更新,我們希望您會喜歡,其中一些主要亮點包括:
- 預覽:傳入/傳出更改圖 - 在原始碼管理檢視中視覺化傳入和傳出更改。
- Python 環境 - 使用 python-environment-tools 增強環境發現。
- 原生 REPL 中的智慧傳送 - 在原生 REPL 中流暢執行程式碼塊。
- GitHub Copilot 可擴充套件性 - VS Code Stable 中提供了聊天和語言模型 API。
- 預覽:配置檔案編輯器 - 在一個地方管理您的配置檔案。
- 自定義選項卡標籤中的副檔名訪問 - 更多的變數選項和對多個副檔名的支援。
- TypeScript 5.5 - 正則表示式和其他語言功能的語法檢查。
- JavaScript 偵錯程式 - 在除錯 JavaScript 時檢查被遮蔽的變數。
如果您想線上閱讀這些發行說明,請訪問 code.visualstudio.com 上的更新。Insiders:想盡快嘗試新功能嗎?您可以下載每晚Insiders版本並儘快嘗試最新更新。
輔助功能
編輯器懸停資訊的輔助檢視
為了提高編碼時的可訪問性,輔助檢視和可訪問性幫助選單現在可以顯示編輯器懸停資訊的內容。根據懸停部分的焦點,它們會顯示關於焦點部分或整個懸停內容的資訊。

連結下劃線
為了使工作區中的連結比普通文字更容易區分,您可以啟用accessibility.underlineLinks設定來為連結新增下劃線。

工作臺
搜尋
我們添加了一個新設定search.ripgrep.maxThreads,它允許您限制 ripgrep 搜尋引擎使用的執行緒數。此設定無論搜尋是由核心產品還是透過擴充套件 API 使用,都適用。
將search.ripgrep.maxThreads設定為非零值以配置執行緒數。請謹慎操作,因為將此設定固定為特定值可能會減慢 ripgrep 的速度。
調整猜測允許的編碼
透過新設定files.candidateGuessEncodings,您可以在啟用files.autoGuessEncoding時配置一組應考慮的編碼。配置的順序決定了優先順序。此功能使您能夠將可以檢測到的可能編碼限制在一組較小的範圍內,並使一種編碼優先於另一種。
配置檔案編輯器預覽
在此里程碑中,我們引入了一個新的配置檔案編輯器,它允許您從一個地方管理配置檔案。此體驗包括建立新配置檔案、編輯和刪除現有配置檔案以及匯入和匯出配置檔案與他人共享。在建立新配置檔案時,您可以預覽該配置檔案並在儲存前根據需要進行自定義。配置檔案編輯器還允許您使用特定配置檔案開啟新視窗,或將配置檔案設定為新視窗的預設配置檔案。

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

請嘗試使用,並就如何進一步改進此體驗給我們反饋。
使用配置檔案的“新建視窗”選單項
除了配置檔案編輯器之外,我們還在“檔案”選單中添加了操作,以使用特定配置檔案開啟新視窗。使用檔案 > **使用配置檔案新建視窗**選單以使用特定配置檔案開啟新視窗。

擴充套件安裝選項
我們添加了更多選項,為您在安裝擴充套件時提供更大的靈活性。
- 安裝擴充套件而不同步。
- 安裝擴充套件的特定版本。以前,您必須先安裝擴充套件的最新版本,然後才能選擇特定版本。
這些操作在擴充套件檢視中擴充套件的上下文選單中可用。

在自定義標籤中訪問副檔名
當您定義自定義標籤時,現在可以使用${extname(N)}語法更靈活地訪問單個副檔名。此外,${extname(N)}還支援負索引以反向順序捕獲副檔名。要獲取整個副檔名,請使用${extname}。
例如,對於檔案tests/editor.test.ts
${filename}=>editor${extname}=>test.ts${extname(0)}=>ts${extname(1)}=>test${extname(-1)}=>test${extname(-2)}=>ts
合併來自多個擴充套件的自定義標籤模式
當兩個擴充套件在其configurationDefaults中為workbench.editor.customLabels.patterns設定貢獻預設值時,貢獻的模式會合並在一起。
|
|
| 擴充套件 1 的預設貢獻 | 擴充套件 2 的預設貢獻 |
|
| 結果自定義標籤模式 |
取消設定主題顏色
如果主題設定了您不喜歡的顏色或邊框,您現在可以使用default將其設定回原始值。
"workbench.colorCustomizations": {
"diffEditor.removedTextBorder": "default"
}
更改摺疊佔位符顏色
現在可以使用editor.foldPlaceholderForeground顏色對摺疊佔位符(省略號)進行主題化。
編輯器
儲存時程式碼操作
透過editor.codeActionsOnSave設定,您可以配置一組在儲存檔案時自動應用的 Code Actions(例如,整理匯入)。我們透過提供基於工作區檔案和活動副檔名的可用 Code Actions 列表,改進了此設定的 IntelliSense。
注意:請注意,雖然
true和false目前仍是有效配置,但它們將被棄用,轉而使用explicit、always和never。有關示例,請參閱Code Actions on Save 文件。
快速關閉只讀檔案狀態
如果您已透過files.readonlyInclude設定將檔案配置為只讀,現在可以從只讀編輯器訊息中快速切換檔案的只讀狀態。

原始碼管理
傳入/傳出更改圖預覽
我們一直在探索使用替代的視覺化方式來展示傳入和傳出更改。此里程碑包含一項實驗性功能,它使用圖表來視覺化傳入和傳出更改。該圖包含當前分支、當前分支的向上遊分支以及可選的基礎分支。圖的根是這些分支的共同祖先。
您可以透過使用scm.experimental.showHistoryGraph設定來啟用此新視覺化。嘗試使用它,並告訴我們您的想法,因為我們將繼續改進和擴充套件此視覺化中可用的功能。

Notebook
在文字選擇中查詢
Notebook 的查詢控制元件現在具有“在選擇中查詢”功能,用於文字選擇和單元格選擇。此行為預設啟用,可透過控制元件內的按鈕進行控制。根據選擇的上下文,切換此按鈕會將查詢查詢範圍限定在一個或多個選定的單元格,或單元格內的行。
從上下文選單複製或開啟文字輸出
在處理 Notebook 中的文字輸出時,您現在可以使用文字輸出的上下文選單複製輸出值或在新編輯器中開啟輸出。此功能使審查大型流式輸出更加容易。
終端
支援複製和貼上轉義序列(OSC 52)
現在支援作業系統命令(OSC)52 轉義序列。終端中執行的任何內容都可以使用此功能,但主要用例是tmux的剪貼簿訪問。
新的自定義字形
終端現在支援 Powerline 符號的分支、行號和鎖定自定義字形。與我們支援的其他自定義字形一樣,當 GPU 加速啟用時,這些符號無需配置字型即可工作。

當調整字型大小、行高或字母間距時,這些符號也可以完美地與單元格縮放。

除錯
JavaScript 偵錯程式
JavaScript 偵錯程式現在在懸停在變數上以及在內聯值(透過debug.inlineValues設定啟用)時,會根據程式的範圍顯示被遮蔽變數的正確值。

主題:Codesong(在vscode.dev上預覽)
語言
TypeScript 5.5
我們現在包含 TypeScript 5.5。此主要更新帶來了許多新的語言功能和工具改進。請檢視TypeScript 5.5 部落格文章瞭解此版本的詳細資訊。
正則表示式的語法檢查
得益於 TypeScript 5.5,我們現在可以報告 JavaScript 和 TypeScript 正則表示式字面量中的許多語法錯誤。這包括未關閉的組、不正確的反向引用或無效轉義等錯誤。


有關更多詳細資訊,請檢視TypeScript 5.5 部落格文章。
對擴充套件的貢獻
GitHub Copilot
緊湊型內聯聊天
內聯聊天渲染現在更加緊湊,使其更易於閱讀和理解建議。我們還在嘗試使用更具敘述性的按鈕文字風格,您可以透過inlineChat.experimental.textButtons啟用。

終端初始提示
終端中會顯示一個新提示,以幫助發現內聯聊天。

此提示僅在安裝了 Copilot 擴充套件且存在一個未進行任何互動的終端時顯示。透過右鍵單擊該訊息,可以輕鬆地永久隱藏它。當您首次使用終端內聯聊天后,該訊息也會消失。
應用程式碼塊
聊天檢視中程式碼塊上的在編輯器中應用命令使用語言模型來確定將更改應用於當前編輯器的最佳方法。

Python
使用 python-environment-tools 進行 Python 環境發現
我們很高興推出一項新工具,python-environment-tools,旨在顯著提高檢測全域性 Python 安裝和 Python 虛擬環境的速度。該工具使用 Rust 來確保快速準確的發現過程。
我們目前正在測試此新功能,並與現有支援並行執行,以評估 Python 擴充套件中新的發現效能。因此,您會看到一個名為Python Locator的新日誌通道,其中顯示了使用此新工具的發現時間。
此增強功能是我們不斷最佳化 VS Code 中 Python 支援效能和效率的努力的一部分。請訪問python-environment-tools 倉庫以瞭解有關此功能、正在進行的工作以及提供反饋的更多資訊。
原生 REPL 中的智慧傳送
Python 擴充套件現在已在VS Code 原生 REPL中啟用了智慧傳送。
以前,當您將游標放在一行 Python 程式碼上並按Shift+Enter時,Python 擴充套件會發送確切的行內容到原生 REPL,即使它會失敗,例如因為它是一個多行命令的一部分。
現在,Shift+Enter在非巢狀場景中傳送最小的可執行程式碼,或在巢狀場景中傳送最高級別的頂層程式碼塊。這使使用者能夠快速地在整個檔案中Shift+Enter,以最少的努力執行最多的可執行程式碼。
支援 reStructuredText 文件字串
Pylance 現在支援在懸停時渲染 reStructuredText 文件字串(docstrings)!
此功能尚處於早期階段,目前由一個標誌控制,因為我們致力於確保它能有效地處理各種 Sphinx、GoogleDoc 和 Epytext 場景。要嘗試使用,您可以啟用實驗性設定python.analysis.supportRestructuredText。

請嘗試此更改,並在Pylance GitHub 倉庫報告任何問題或提供反饋。
注意:此設定是實驗性的,並且很可能在未來被移除,因為我們正在穩定此新功能並預設啟用它。
GitHub 拉取請求和議題
GitHub Pull Requests 擴充套件取得了更多進展,該擴充套件使您能夠處理、建立和管理拉取請求和問題。新功能包括:
- 已簽出的 PR 在**Commits**子樹中顯示提交日期。
- 大量的錯誤修復。
檢視擴充套件的 0.92.0 版本更改日誌以瞭解其他亮點。
ESLint
ESLint 擴充套件現在支援扁平化配置檔案格式。該擴充套件仍然支援eslintrc檔案,您可以使用eslint.useFlatConfig設定來控制使用哪種配置檔案格式。
查閱ESLint Flat Config 推廣計劃,以瞭解 ESLint 計劃棄用和刪除對eslintrc檔案格式支援的計劃。
擴充套件創作
聊天和語言模型 API
上個月,我們最終確定了使擴充套件能夠參與聊天和訪問語言模型的 API,但它們僅在 VS Code Insiders 中可用。在此版本中,這些 API 在 VS Code Stable 中已完全可用。
檢視我們的公告部落格文章,瞭解有關這些 API 的更多資訊,並檢視一些早期採用者如何使用它們。
要開始,請訪問我們的擴充套件示例和聊天可擴充套件性文件。
處理物件設定的預設值
當多個擴充套件為同一物件設定貢獻預設值時,這些預設值現在會被合併。這可以防止擴充套件之間的衝突。
最終確定的DebugSessionOptions.testRun API
從測試執行啟動除錯會話的擴充套件,現在可以在呼叫vscode.debug.startDebugging時將該執行傳遞給DebugSessionOptions。傳遞後,生命週期操作(例如重新啟動除錯會話)也會建立一個新的測試執行。
除錯介面卡協議
對Debug Adapter Protocol進行了一些值得注意的更改。
- 透過新的
Scope.presentationHint = returnValue選項表示返回值的符號。 - 為
evaluate請求新增源位置。VS Code 實現了這一點,並在評估懸停和內聯值時傳遞位置。
提議的 API
語言模型的工具和函式
我們添加了一個 API 提案,支援工具或函式呼叫。該 API 包含兩個主要部分:
-
擴充套件註冊“工具”的能力。工具是供語言模型使用的功能片段。例如,讀取檔案的 Git 歷史記錄。
-
語言模型支援工具的機制,例如:擴充套件在發出請求時傳遞工具,語言模型請求工具呼叫,以及擴充套件將工具呼叫的結果傳回。
該提案可在vscode.proposed.lmTools.d.ts中找到。
注意:API 仍在積極開發中,內容可能會發生變化。同時,也請注意 VS Code 會附帶合理的預設工具。
身份驗證getSessions現在是getAccounts
雖然我們支援多賬戶身份驗證提供程式,但一直缺少的是獲取所有會話並對特定會話執行操作的功能。以前,我們有一個getSessionsAPI 提案來解決這個問題,但在進行實驗並從流行的身份驗證庫中汲取靈感後,我們正在採取一種不同的方法來解決這個問題。
我們已從先前的建議getSessionsAPI 轉向一種分離“賬戶”和“會話”概念的方法。
希望使用身份驗證會話的擴充套件作者可以執行以下程式碼來獲取使用者登入的賬戶的AuthenticationSessionAccountInformation。
const accounts = vscode.authentication.getAccounts('microsoft');
從那裡,您可以使用這些賬戶為這些賬戶專門生成會話。
const session = vscode.authentication.getSession('microsoft', scopes, {
account: accounts[0]
});
注意:要使此功能正常工作,身份驗證提供程式需要處理一個新引數,您可以在下面的 API 提案中閱讀有關該引數的資訊。
我們相信這是一種處理多個身份驗證會話的更清晰的方法,並且能夠處理我們以前無法支援的各種場景。
該提案可在vscode.proposed.authGetSessions.d.ts中找到,它使用了此提案的先前名稱,以免破壞依賴此提案的現有程式碼。
評論執行緒顯示
我們添加了一個 API 提案,允許提供評論的擴充套件在編輯器中顯示其自己的評論執行緒。此 API 提供了是否在顯示執行緒時保留焦點,或將焦點移至執行緒回覆框的選項。
該提案可在vscode.proposed.commentReveal.d.ts中找到。
可歸因測試覆蓋率
我們正在開發一項 API,該 API 允許按每個測試來歸屬測試覆蓋率。這使使用者能夠看到哪些測試運行了哪些程式碼,從而過濾編輯器中顯示的覆蓋率以及“測試覆蓋率”檢視中的覆蓋率。
有關更多資訊和更新,請檢視vscode#212196。
工程
將 NLS 與 AMD 載入器解耦
在此里程碑中,我們開始移除 VS Code 核心原生語言支援 (NLS) 對我們提供的非同步模組定義 (AMD) 載入器的依賴。我們未來的目標是使用 ECMAScript 模組 (ESM) 載入並完全放棄 AMD。為了朝著這個方向取得進展,我們刪除了 AMD 載入器外掛的依賴。您應該不會注意到行為上的任何差異,並且我們過去支援的所有翻譯在 Web 和桌面環境中都仍然得到支援。
值得注意的修復
感謝
最後但同樣重要的是,向 VS Code 的貢獻者們致以衷心的感謝。
問題跟蹤
對我們問題跟蹤的貢獻
- @gjsjohnmurray (John Murray)
- @IllusionMH (Andrii Dieiev)
- @shelvesdragon (Shelves The Dragon)
- @starball5 (starball)
- @spartanatreyu (Jayden Pearse)
- @RedCMD (RedCMD)
拉取請求
對 vscode 的貢獻
- @bsShoham (Shoham Ben Shitrit):允許在自定義標籤中使用
extname(N)模板PR #213033 - @CGNonofr (Loïc Mangeonjean):更改配置檔案時更新首選項標記PR #214353
- @cobey (Cody Beyer)
- 更新了檔案以包含 py 和 js 的 ai 和 vector db 庫PR #216771
- 為 js 新增 azure ai 包標記PR #216857
- 為 tagging 添加了缺失的 azure ai py 包PR #216861
- @dangerman (Anees Ahee):在開發容器中使用 node 20PR #215434
- @francescov1 (Francesco Virga):新增遞迴切換PR #212218
- @franciscacarneiro (Francisca Carneiro):修復 #182308:在搜尋面板中按 PageUp 不再導致佈局更改。PR #213067
- @gabritto (Gabriela Araujo Britto):[typescript-language-features] TypeScript 的基於區域的語義診斷PR #208713
- @gjsjohnmurray (John Murray):在多提供商時間線上正確分頁(修復 #213452)PR #213453
- @grgar (George Garside):修復擴充套件市場 readme 渲染中合併的表單元格未合併的問題PR #211666
- @hecticme (H. Ngọc Minh):修復:單擊時不在活動欄顯示焦點邊框PR #217837
- @its-meny:修復:Markdown 中的標題引述未正確渲染PR #205227
- @jakebailey (Jake Bailey):修復 tsc -p ./src,移除 no-default-libPR #216760
- @jeanp413 (Jean Pierre):修復 serverless 中的配置任務可以刪除整個任務檔案PR #215810
- @mohankumarelec:添加了 http.noProxy 設定,它與當前已有的 NO_PROXY 環境變數值相同PR #211958
- @mtbaqer (Mohammad Baqer):使 collapsedText 可主題化PR #173203
- @powersagitar:為 C++20 模組介面單元新增副檔名PR #214800
- @r-sargento (Rafael Sargento):實現vscode的顯示變數型別設定(#_210258)PR #214315
- @rehmsen (Ole)
- 修復重用 CellComment 時評論執行緒的洩漏。PR #214589
- 修復 #214589 中的兩個錯誤,修復 #213535。PR #218357
- @remcohaszing (Remco Haszing)
- 將
removeChild替換為removePR #213465 - 修復開啟選擇框PR #214348
- 將
- @SimonSiefke (Simon Siefke)
- feature:用 electron webUtils 替換 electron File.pathPR #213031
- 在設定中完成顏色鍵時,填充當前值PR #213451
- feature:使 ripgrep 執行緒數可配置PR #213511
- feature:允許在設定中取消設定顏色主題值PR #213512
- 修復設定編輯器記憶體洩漏PR #216763
- fix:SettingTreeRenderers 中可能的記憶體洩漏PR #216768
- fix:在 SettingEnumRenderer 的 renderElement 函式中將 disposable 新增到 elementDisposables 而不是 templateDisposablesPR #216855
- @swordensen (Michael Sorensen):修復 #182449:按 Shift 鍵會在拖放事件期間重新啟用 webviewPR #209211
- @Timmmm (Tim Hutt):修復在終端中開啟帶有行號的連結PR #210898
- @tisilent (xiejialong):在 IFindInFilesArgs 中新增 showIncludesExcludesPR #212347
- @werat (Andy Hippo):修復錯誤訊息格式PR #214900
- @xiaoxianBoy (Snoppy):chore:修復拼寫錯誤PR #216562
- @y0sh1ne (y0sh1ne):更新 language-configuration.json(修復 #215999)PR #216394
- @yutotnh (yutotnh):新增在猜測編碼時指定候選編碼列表的能力(#_36951)PR #208550
對 vscode-css-languageservice 的貢獻
- @wkillerud (William Killerud):feat:新增對 Sass
pkg:匯入器的支援PR #384
對 vscode-extension-samples 的貢獻
- @AllanJard (Allan Jardine):修復 #863 - 自動啟動語言PR #864
對 vscode-html-languageservice 的貢獻
- @johnsoncodehk (Johnson Chu):
voidElements的惰性求值PR #187
對 vscode-languageserver-node 的貢獻
- @remcohaszing (Remco Haszing):使用客戶端 ID 作為診斷收集的回退PR #1445
對vscode-python-tools-extension-template的貢獻
- @caelean (Caelean Barnes):在 README 中一致地引用檔案路徑PR #208
對 node-jsonc-parser 的貢獻