2024 年 6 月(版本 1.91)
更新 1.91.1:此更新解決了這些問題。
下載:Windows:x64 Arm64 | Mac:通用 Intel Apple 晶片 | Linux:deb rpm tarball Arm snap
歡迎使用 Visual Studio Code 2024 年 6 月版。此版本中有許多更新,希望您會喜歡,其中一些主要亮點包括:
- 預覽:傳入/傳出更改圖 - 在原始碼管理檢視中視覺化傳入和傳出更改。
- Python 環境 - 使用 python-environment-tools 增強環境發現。
- 本機 REPL 中的智慧傳送 - 在本機 REPL 中流暢地執行程式碼塊。
- GitHub Copilot 可擴充套件性 - VS Code 穩定版中提供了聊天和語言模型 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
設定,您可以配置一組在儲存檔案時自動應用的程式碼操作,例如組織匯入。我們透過提供基於工作區檔案和活動擴充套件的可用程式碼操作列表,改進了配置此設定的智慧感知。
注意:請注意,儘管
true
和false
目前仍然是有效配置,但它們將棄用,取而代之的是explicit
、always
和never
。有關示例,請參閱儲存時程式碼操作文件。
快速關閉只讀檔案狀態
如果您已透過files.readonlyInclude
設定將檔案配置為只讀,您現在可以從只讀編輯器訊息中快速關閉檔案的只讀狀態。
原始碼管理
傳入/傳出更改圖預覽
我們一直在探索使用傳入和傳出更改的替代視覺化。此里程碑包含一個實驗性功能,它使用圖表來視覺化傳入和傳出更改。該圖表包含當前分支、當前分支的上游分支以及可選的基礎分支。圖表的根是這些分支的公共祖先。
您可以使用scm.experimental.showHistoryGraph
設定啟用此新視覺化。試一試,並告訴我們您的想法,因為我們將繼續改進和擴充套件此視覺化中可用的功能。
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 的提交子樹中顯示提交日期。
- 大量錯誤修復。
檢視擴充套件 0.92.0 版本的更新日誌以瞭解其他亮點。
ESLint
ESLint 擴充套件現在支援平面配置檔案格式。該擴充套件仍然支援eslintrc
檔案,您可以使用eslint.useFlatConfig
設定來控制使用哪種配置檔案格式。
請查閱ESLint 平面配置推出計劃,以瞭解 ESLint 棄用和刪除對eslintrc
檔案格式支援的計劃。
擴充套件創作
聊天和語言模型 API
上個月,我們最終確定了使擴充套件能夠參與聊天並訪問語言模型的 API,但它們僅在 VS Code Insiders 中可用。在此版本中,這些 API 現在已在 VS Code Stable 中完全可用。
檢視我們的公告部落格文章,瞭解有關這些 API 的更多資訊,並檢視一些早期採用者如何使用它們。
要開始使用,請訪問我們的擴充套件示例和聊天可擴充套件性文件。
物件設定預設值的處理
當多個擴充套件為同一物件設定貢獻預設值時,這些預設值現在將合併。這可以防止擴充套件之間的衝突。
最終確定DebugSessionOptions.testRun
API
從測試執行啟動除錯會話的擴充套件現在可以在呼叫vscode.debug.startDebugging
時將該執行傳遞給DebugSessionOptions
。傳遞後,生命週期操作(例如重新啟動除錯會話)也會建立新的測試執行。
除錯介面卡協議
除錯介面卡協議進行了一些值得注意的更改
- 透過新的
Scope.presentationHint = returnValue
選項表示返回值。 - 在
evaluate
請求中新增源位置。VS Code 實現此功能並在評估懸停和內聯值時傳遞位置。
提議的 API
語言模型的工具和函式
我們添加了一個 API 提案,支援工具或函式呼叫。該 API 包含兩個主要部分
-
擴充套件註冊“工具”的能力。工具是旨在供語言模型使用的功能。例如,讀取檔案的 Git 歷史記錄。
-
語言模型支援工具的機制,例如:擴充套件在發出請求時傳遞工具,語言模型請求工具呼叫,以及擴充套件傳回工具呼叫的結果。
該提案可在vscode.proposed.lmTools.d.ts中找到。
注意:API 仍在積極開發中,內容將發生變化。另請注意,VS Code 將附帶合理的預設工具。
身份驗證getSessions
現在是getAccounts
雖然我們支援多賬戶身份驗證提供程式,但一直缺少的是獲取所有會話並對特定會話執行操作的能力。以前,我們有一個getSessions
API 提案試圖解決這個問題,但在實驗並借鑑流行的身份驗證庫的啟發後,我們正在採用不同的方法來解決這個問題。
我們從以前提議的getSessions
API 轉向了將“賬戶”和“會話”概念分離的方法。
希望使用身份驗證會話的擴充套件作者可以執行以下程式碼來獲取使用者已登入賬戶的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 和向量 db 庫 PR #216771
- 為 js 新增 auzre ai 包標記 PR #216857
- 為標記新增缺少的 azure ai py 包 PR #216861
- @dangerman (Anees Ahee):在 dev 容器中使用 node 20 PR #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-lib PR #216760
- @jeanp413 (Jean Pierre):修復無伺服器中的配置任務可能會刪除整個任務檔案 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
替換為remove
PR #213465 - 修復開啟選擇框 PR #214348
- 將
- @SimonSiefke (Simon Siefke)
- 功能:將 electron File.path 替換為 electron webUtils PR #213031
- 在設定中完成顏色鍵時,填寫當前值 PR #213451
- 功能:使 ripgrep 執行緒數可配置 PR #213511
- 功能:允許在設定中取消設定顏色主題值 PR #213512
- 修復設定編輯器記憶體洩漏 PR #216763
- 修復:SettingTreeRenderers 中可能存在的記憶體洩漏 PR #216768
- 修復:在 SettingEnumRenderer 的 renderElement 函式中,將 disposable 新增到 elementDisposables 而不是 templateDisposables PR #216855
- @swordensen (Michael Sorensen):修復 #182449:在拖放事件期間按下 Shift 會重新啟用 webview PR #209211
- @Timmmm (Tim Hutt):修復在終端中開啟帶有列號的連結 PR #210898
- @tisilent (xiejialong):在 IFindInFilesArgs 中新增 showIncludesExcludes PR #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):功能:新增對 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
的貢獻