2025 年 2 月 (版本 1.98)
更新 1.98.1:此更新解決了這些問題。
更新 1.98.2:此更新解決了這些問題。
下載:Windows:x64 Arm64 | Mac:通用 Intel Apple 晶片 | Linux:deb rpm tarball Arm snap
歡迎使用 2025 年 2 月釋出的 Visual Studio Code。此版本中包含許多更新,我們希望您會喜歡,其中一些主要亮點包括:
- 下一編輯建議(預覽) - Copilot 預測您可能進行的下一個編輯。
- 代理模式(預覽) - Copilot 自主完成任務。
- Copilot 筆記本編輯支援 - 快速迭代筆記本編輯。
- Copilot Vision - 在聊天提示中附加影像並與之互動。
- 程式碼搜尋 - 讓 Copilot 為您的聊天提示查詢相關檔案。
- 終端 IntelliSense(預覽) - 為您的終端提供豐富的完成支援。
- 拖放引用 - 在新編輯器中快速開啟檢視引用。
- Linux 自定義標題欄 - 預設啟用 Linux 自定義標題欄支援。
- 未解決的診斷(預覽) - 提交時提示未解決的診斷。
- 原始碼控制中的軟刪除 - 將未跟蹤的檔案移動到回收站而不是刪除它們。
- 自定義指令 GA - 使用自定義指令根據您的需求定製 Copilot。
如果您想線上閱讀這些發行說明,請訪問 code.visualstudio.com 上的更新。Insiders:想盡快嘗試新功能嗎?您可以下載每晚Insiders版本並儘快嘗試最新更新。
GitHub Copilot
Copilot 功能可能會經歷不同的早期訪問階段,通常透過設定啟用和配置。
階段 | 描述 |
---|---|
實驗性 | 該功能仍在開發中,尚未準備好供一般使用。 檢視實驗性功能 ( @tag:experimental )。 |
預覽 | 該功能仍在完善中,但已可使用。歡迎提供反饋。 檢視預覽功能 ( @tag:preview )。 |
穩定版 | 該功能已準備好供一般使用。 |
Copilot 編輯
代理模式改進(實驗性)
上個月,我們在 VS Code Insiders 中為 Copilot Edits 引入了代理模式。在代理模式下,Copilot 可以自動搜尋您的工作區以獲取相關上下文、編輯檔案、檢查錯誤並執行終端命令(經您許可)以端到端地完成任務。
注意:代理模式目前在 VS Code Insiders 中可用,我們剛剛開始在 VS Code Stable 中逐步推出。一旦為您啟用了代理模式,您將在 Copilot Edits 檢視中看到一個模式下拉選單 — 只需選擇代理。
本月我們對工具使用的使用者體驗進行了一些改進:
- 終端命令現在以內聯方式顯示,因此您可以跟蹤運行了哪些命令。
- 您可以在執行之前編輯聊天回覆中建議的終端命令。
- 使用快捷鍵⌘Enter (Windows、Linux Ctrl+Enter)確認終端命令。
代理模式會自主搜尋您的程式碼庫以獲取相關上下文。展開訊息以檢視已完成搜尋的結果。
我們還對代理模式的提示和行為進行了各種改進:
- 聊天中的撤消和重做操作現在會撤消或重做聊天回覆中進行的上次檔案編輯。這對於代理模式非常有用,因為您現在可以撤消模型所採取的某些步驟,而無需回滾整個聊天回覆。
- 代理模式現在可以自動執行您的構建任務,或者在收到指令時執行。如果您發現模型在不應該執行任務時執行任務,可以透過 github.copilot.chat.agent.runTasks 設定停用此功能。
詳細瞭解Copilot 編輯代理模式或閱讀代理模式釋出部落格文章。
注意:如果您是 Copilot Business 或 Enterprise 使用者,您的組織管理員必須選擇啟用 Copilot“編輯器預覽功能”才能使用代理模式。
Copilot Edits 中的筆記本支援(預覽)
我們正在 VS Code Insiders 中作為預覽功能引入 Copilot Edits 的筆記本支援。您現在可以使用 Copilot 編輯筆記本檔案,其體驗與編輯程式碼檔案一樣直觀。從頭開始建立新筆記本,修改多個單元格中的內容,插入和刪除單元格,以及更改單元格型別。此預覽功能在處理資料科學或文件筆記本時提供了無縫的工作流程。
注意:此功能目前僅在安裝了 GitHub Copilot Chat 預釋出版本的 VS Code Insiders 中可用。我們將在未來的版本中將其引入 VS Code Stable 之前繼續改進體驗。
更精細的編輯器整合
我們優化了 Copilot Edits 與程式碼和筆記本編輯器的整合:
- 應用更改時不再滾動。視口保持原位,更容易專注於更改內容。
- 將編輯評審操作從“接受”重新命名為“保留”,將“丟棄”重新命名為“撤消”,以更好地反映實際發生的情況。Copilot Edits 的更改是即時的,它們在進行時即應用並儲存,使用者可以選擇保留或撤消它們。
- 保留或撤消檔案後,會自動顯示下一個檔案。
此影片演示了編輯如何即時應用和儲存。即時預覽會更新,使用者決定“保留”更改。撤消和進一步調整也仍然可能。
更新後的使用者介面
為統一 Copilot Edits 和 Copilot Chat 做準備,我們對 Copilot Edits 進行了改版。已附加但尚未傳送的檔案現在顯示為常規聊天附件。只有經過 AI 修改的檔案才會新增到更改檔案列表,該列表位於聊天輸入部分上方。
使用 chat.renderRelatedFiles 設定,您可以啟用獲取相關檔案建議。相關檔案建議顯示在聊天附件下方。
移除 Copilot Edits 限制
以前,您在 Copilot Edits 中只能將 10 個檔案附加到提示中。此版本中,我們取消了此限制。此外,我們還取消了每 10 分鐘 14 次互動的客戶端速率限制。
請注意,服務端使用速率限制仍然適用。
自定義指令全面可用
設定:github.copilot.chat.codeGeneration.useInstructionFiles
自定義指令使您能夠根據您和團隊的工作方式調整 GitHub Copilot,以提供聊天回覆和程式碼建議。在工作區的 .github/copilot-instructions.md
檔案中以 Markdown 格式描述您的具體要求。
在這個里程碑中,我們使帶有 .github/copilot-instructions.md
的自定義指令全面可用。確保啟用了 github.copilot.chat.codeGeneration.useInstructionFiles VS Code 設定,Copilot 在生成回覆時將使用這些指令。
瞭解有關Copilot 中自定義指令的更多資訊。
更流暢的聊天認證流程
如果您的原始碼託管在 GitHub 倉庫中,您可以使用多項功能,包括高階程式碼搜尋、@github
聊天參與者等!
但是,對於私有 GitHub 倉庫,VS Code 需要獲得許可權才能與您的 GitHub 倉庫進行互動。一段時間以來,這透過我們通常的 VS Code 身份驗證流程呈現,當您呼叫某些功能時(例如,詢問 @workspace
或 @github
問題,或使用 #codebase
工具)會彈出一個模態對話方塊。
為了使此體驗更流暢,我們引入了聊天中的此確認:
它不僅不像模態對話方塊那樣令人不適,而且還具有新功能:
- 授予: 您將像以前一樣(透過模態框)經歷常規的身份驗證流程。
- 稍後: VS Code 會記住您的選擇,並且在您下次 VS Code 視窗會話之前不會再次打擾您。唯一的例外是如果該功能需要此額外許可權才能執行,例如
@github
。 - 不再詢問: VS Code 會記住您的選擇並透過 github.copilot.advanced.authPermissions 設定將其持久化。任何需要此額外許可權的功能都將失敗。
需要注意的是,此確認不會確認或拒絕 Copilot(服務)訪問您的倉庫。這只是 VS Code 的 Copilot 體驗進行身份驗證的方式。要配置 Copilot 可以訪問的內容,請閱讀有關內容排除的文件。
Copilot Chat 中更高階的程式碼庫搜尋
設定:github.copilot.chat.codesearch.enabled
當您在 Copilot Chat 查詢中新增 #codebase
時,Copilot 會幫助您在工作區中為您的聊天提示找到相關程式碼。#codebase
現在可以執行文字搜尋和檔案搜尋等工具,以從您的工作區中獲取更多上下文。
將 github.copilot.chat.codesearch.enabled 設定為啟用此行為。工具的完整列表如下:
- 基於嵌入的語義搜尋
- 文字搜尋
- 檔案搜尋
- Git 修改檔案
- 專案結構
- 讀取檔案
- 讀取目錄
- 工作區符號搜尋
將問題作為聊天上下文附加
為了幫助解決工作區中的程式碼或其他問題,您現在可以將“問題”面板中的問題作為提示的上下文附加到聊天中。
您可以將“問題”面板中的專案拖放到“聊天”檢視中,或者在提示中鍵入 #problems
,或者選擇回形針 📎 按鈕。您可以附加特定問題、檔案中所有問題或程式碼庫中所有檔案。
將資料夾作為上下文附加
以前,您可以透過從資源管理器檢視中拖放來附加資料夾作為上下文。現在,您還可以透過選擇回形針 📎 圖示或在聊天提示中鍵入 #folder:
後跟資料夾名稱來附加資料夾。
下一編輯建議的摺疊模式(預覽)
設定:
我們為 NES 添加了摺疊模式。啟用此模式後,僅在左側編輯器邊距中顯示 NES 建議指示器。程式碼建議本身僅在您按 Tab 導航到它時才顯示。在接受建議之前,會立即顯示連續的建議。
摺疊模式預設停用,可以透過配置 editor.inlineSuggest.edits.showCollapsed 啟用,或者您可以在 NES 邊欄指示器選單中啟用或停用它。
更改完成模型
您已經可以更改 Copilot Chat 和 Copilot Edits 的語言模型,現在您也可以更改內聯建議的模型。
或者,您可以透過命令面板中的更改完成模型命令或標題欄中 Copilot 選單中的配置程式碼完成項來更改用於程式碼完成的模型。
注意: 可用模型的列表可能會有所不同並隨時間變化。如果您是 Copilot Business 或 Enterprise 使用者,您的管理員需要在 GitHub.com 上的Copilot 策略設定中選擇啟用
編輯器預覽功能
,以便為您的組織啟用某些模型。
模型可用性
此版本中,我們添加了更多 Copilot 模型供您選擇。以下模型現在在 Visual Studio Code 和 github.com 聊天中的模型選擇器中可用:
-
GPT 4.5(預覽):OpenAI 的最新模型 GPT-4.5 現已向 Copilot Enterprise 使用者在 GitHub Copilot Chat 中提供。GPT-4.5 是一個大型語言模型,在直覺、寫作風格和廣泛知識方面具有高階功能。在GitHub 部落格文章中瞭解有關 GPT-4.5 模型可用性的更多資訊。
-
Claude 3.7 Sonnet(預覽):Claude 3.7 Sonnet 現已向所有付費 Copilot 計劃客戶提供。這個新的 Sonnet 模型支援 Copilot 中的思考和非思考模式。在初步測試中,我們發現代理場景有特別顯著的改進。在GitHub 部落格文章中瞭解有關 Claude 3.7 Sonnet 模型可用性的更多資訊。
Copilot Vision(預覽)
我們正在此版本的 Copilot Chat 中快速推出端到端視覺支援。這使您可以在聊天提示中附加影像並與之互動。例如,如果您在除錯時遇到錯誤,可以附加 VS Code 的螢幕截圖,並請求 Copilot 幫助您解決問題。您還可以使用它來附加一些 UI 樣機,並讓 Copilot 提供一些 HTML 和 CSS 來實現該樣機。
您可以透過多種方式附加影像:
- 從您的作業系統或檔案資源管理器檢視中拖放影像
- 從剪貼簿貼上影像
- 附加 VS Code 視窗的螢幕截圖(選擇回形針 📎 按鈕 > 截圖視窗)
如果選定的模型目前不具備處理檔案型別的功能,將顯示警告。目前唯一支援的模型將是 GPT 4o
,但對 Claude 3.5 Sonnet
和 Gemini 2.0 Flash
的影像附件支援也將很快推出。目前支援的影像型別是 JPEG/JPG
、PNG
、GIF
和 WEBP
。
Copilot 狀態概覽(實驗性)
設定:chat.experimental.statusIndicator.enabled
我們正在試驗一個新的集中式 Copilot 狀態概覽,它提供您的 Copilot 狀態和關鍵編輯器設定的快速概覽:
- 如果您是 Copilot 免費使用者,則顯示配額資訊
- 編輯器相關設定,例如程式碼完成
- 使用其他 Copilot 功能的有用鍵盤快捷鍵
此 Copilot 狀態概覽可透過狀態列中的 Copilot 圖示訪問。
使用 chat.experimental.statusIndicator.enabled 設定啟用 Copilot 狀態概覽。
內聯完成的 TypeScript 上下文(實驗性)
設定:chat.languageContext.typescript.enabled
我們正在試驗 TypeScript 檔案的內聯完成和 /fix
命令的增強上下文。該實驗目前僅限於 Insider 版本,並且可以透過 chat.languageContext.typescript.enabled 設定啟用。
拉取請求標題和描述的自定義指令
您可以使用設定 github.copilot.chat.pullRequestDescriptionGeneration.instructions 為生成拉取請求標題和描述提供自定義指令。您可以將設定指向工作區中的檔案,也可以在設定中內聯提供指令。獲取有關在 VS Code 中自定義 Copilot 的更多詳細資訊。
以下示例展示瞭如何在設定中內聯提供自定義指令。
{
"github.copilot.chat.pullRequestDescriptionGeneration.instructions": [
{
"text": "Prefix every PR title with an emoji."
}
]
}
生成標題和描述需要安裝 GitHub 拉取請求擴充套件。
輔助功能
Copilot Edits 可訪問性
我們使 Copilot Edits 更易於訪問。
- 現在有針對修改檔案和更改區域(插入、修改和刪除)的音訊訊號。
- 現在,可用於修改檔案的可訪問差異檢視器。就像在差異編輯器中一樣,選擇 F7 以啟用它。
activeEditorState
視窗標題變數
我們有一個新的 window.title 變數,activeEditorState
,用於向螢幕閱讀器使用者指示編輯器資訊,例如修改狀態、問題數量以及檔案何時有待處理的 Copilot 編輯。在螢幕閱讀器最佳化模式下,預設會附加此變數,並且可以透過 accessibility.windowTitleOptimized 停用。
工作臺
Linux 上的自定義標題欄
自定義標題欄現在在 Linux 上預設啟用。自定義標題欄使您可以訪問佈局控制元件、Copilot 選單等。
您可以隨時恢復到本機標題裝飾,無論是從自定義標題上下文選單中,還是透過將 window.titleBarStyle 配置為 native
。
我們很高興能繼續收到關於此體驗的反饋,並且已經根據現有反饋努力改進未來的里程碑。
使用標籤表示輔助側邊欄檢視
我們決定更改輔助側邊欄中檢視的顯示方式,以顯示標籤而不是圖示,類似於面板區域中的做法。這使得區分不同的檢視(例如Copilot Edits和Copilot Chat檢視)變得更容易。您可以隨時透過配置workbench.secondarySideBar.showLabels切換回顯示圖示。
新的設定編輯器鍵匹配演算法(預覽)
設定:workbench.settings.useWeightedKeySearch
我們添加了一個新的“設定”編輯器搜尋演算法,該演算法優先考慮更相關的鍵匹配。該搜尋演算法嘗試以比以前更多的方式匹配設定 ID 和標籤,但它也更精細地篩選結果,以便只顯示最佳匹配型別。
您可以透過啟用 workbench.settings.useWeightedKeySearch 設定來試用此預覽功能。
主題:淺粉色(在 vscode.dev 上預覽)
簡單檔案選擇器中隱藏點檔案的選項
當使用簡單檔案選擇器時(無論是連線到遠端還是使用files.simpleDialog.enable),您現在可以使用顯示/隱藏點檔案按鈕隱藏點檔案。
編輯器
檢視引用拖放支援
Peek 檢視現在支援拖放。呼叫檢視引用、檢視實現或任何其他 Peek 命令,並從其樹中拖動條目以將其作為單獨的編輯器開啟。
主題:GitHub Light Colorblind (Beta)(在 vscode.dev 上預覽)
出現次數高亮延遲
編輯器內出現次數高亮延遲現在預設設定為 0。這使得編輯器整體響應更靈敏。您仍然可以使用 editor.occurrencesHighlightDelay 設定控制延遲。
原始碼管理
更新的檢視標題
當我們將“源控制圖”檢視新增到“源控制”檢視時,它突出了“源控制”檢視中各部分標題的重複性:“源控制儲存庫”、“源控制”和“源控制圖”。在這個里程碑中,我們重新審視了檢視的標題,使其更短且不再重複檢視標題:“儲存庫”、“更改”和“圖”。
丟棄未跟蹤更改的改進
設定:git.discardUntrackedChangesToTrash
多年來,我們收到了多份關於資料丟失的報告,因為丟棄未跟蹤的檔案將永久刪除該檔案,儘管 VS Code 顯示了一個模態對話方塊,明確指出該檔案將被永久刪除。
從這個里程碑開始,如果可能,丟棄未跟蹤的檔案將把檔案移動到回收站/垃圾桶,以便可以輕鬆恢復檔案。您可以使用 git.discardUntrackedChangesToTrash 設定停用此功能。
診斷提交鉤子(實驗性)
設定:
在此里程碑中,我們引入了一個新的提交鉤子,當更改的檔案存在任何未解決的診斷問題時,它會提示您。這目前是一個實驗性功能,可以透過 git.diagnosticsCommitHook.Enabled 設定啟用。
預設情況下,提交鉤子會提示任何錯誤級別的診斷資訊,但可以使用 git.diagnosticsCommitHook.Sources 設定自定義診斷來源和級別。請嘗試一下並告訴我們您的反饋。
Notebook
內聯筆記本差異檢視(實驗性)
設定:notebook.diff.experimental.toggleInline
您現在可以為筆記本啟用內聯差異檢視。此功能使您可以在單個內聯檢視中檢視筆記本單元格內的更改,而不是傳統的並排比較。
透過將 notebook.diff.experimental.toggleInline 設定為 true
來啟用此功能。然後,您可以使用右上角的編輯器選單將差異檢視切換為內聯。
筆記本內聯值懸停
筆記本內聯值現在會截斷其修飾以適應視口寬度,並具有豐富的懸停以顯示完整值,同時保持空白格式。這保持了資料幀等變數的形狀,使值一目瞭然。
終端 IntelliSense(預覽)
設定:terminal.integrated.suggest.enabled
我們透過新增完成規範(例如 git
)、最佳化命令列解析以提供更好的建議以及增強檔案和資料夾完成功能,顯著改進了 bash、zsh、fish 和 PowerShell 的終端 shell 完成功能。透過 terminal.integrated.suggest.enabled 啟用此功能。
增強的 Fig 完成支援
我們利用 Fig 完成規範為特定的 CLI 提供智慧完成。以前我們只有少量這些規範,但此次迭代中,我們將以下 CLI 新增到 VS Code 隨附的列表中:
- 基本工具:
cat
、chmod
、chown
、cp
、curl
、df
、du
、echo
、find
、grep
、head
、less
、ls
、mkdir
、more
、mv
、pwd
、rm
、rmdir
、tail
、top
、touch
、uname
- 程序工具:
kill
、killall
、ps
- 包管理器:
apt
、brew
- Node.js 生態系統:
node
、npm
、npx
、nvm
、pnpm
、yarn
- SCM、語言、編輯器:
git
、nano
、python
、python3
、vim
- 網路:
scp
、ssh
、wget
除了新的規範之外,我們現在還支援*生成器*,它們透過在請求時執行命令來動態生成完成。一個實際的例子是為 git checkout
顯示所有分支:
主題:Sapphire(在 vscode.dev 上預覽)
在幕後,這會執行 git --no-optional-locks branch -a --no-color --sort=-committerdate
來獲取分支列表,然後將其處理為完成。類似的方法也用於獲取標籤。
可配置的快速建議
設定:terminal.integrated.suggest.quickSuggestions
與編輯器類似,*快速建議*是指在鍵入*任何內容*時自動顯示 IntelliSense,而不是*觸發字元*,後者在使用 \
或 -
等特定字元時顯示。新的 terminal.integrated.suggest.quickSuggestions 設定允許精確控制何時顯示快速建議。
預設值啟用命令和引數的快速建議,現在預設停用,回退到路徑,我們聽說這可能會變得嘈雜和令人沮喪,因為它們通常不適用。這是預設值
"terminal.integrated.suggest.quickSuggestions": {
"commands": "on",
"arguments": "on",
"unknown": "off"
}
內聯建議檢測
設定:terminal.integrated.suggest.inlineSuggestion
迄今為止,內聯建議檢測的一個問題是不同來源的建議之間的競爭造成的混亂。具體來說,當在 shell 中鍵入時經常出現的內聯建議
這些建議實際上是 shell 級別的功能(fish/zsh 中的自動建議,pwsh 中的預測等),這對於使用者來說可能不明顯,尤其是在與 IntelliSense 同時出現時。
IntelliSense 功能要求我們檢測此內聯建議,以前使用的天真實現只檢查文字是否使用模糊或斜體SGR 屬性進行樣式設定。事實證明,這還不夠,不僅在使用者自定義樣式時,而且 fish shell 預設也不使用這兩種樣式。我們現在透過分析命令列上下文和游標位置來檢測大多數情況。
基於這種新的改進檢測,內聯建議現在作為帶有星形圖示的頂部選項呈現,既與編輯器行為更一致,也更清楚在這種情況下 kstyle(Tab)
將做什麼。
預設情況下,始終將此建議顯示為頂部建議,但可以使用 terminal.integrated.suggest.inlineSuggestion 進行配置。
詳細的命令完成
bash 和 zsh 內建命令以及 PowerShell 命令的完成現在更加詳細,提供了可用引數的詳細資訊。此資訊來源於 shell 的文件或幫助命令。
對於 bash,使用 help
獲取基本描述
對於 zsh,使用 man zshbuiltins
獲取詳細描述
對於 PowerShell,Get-Command
的更多屬性顯示在完成中
改進的排序
命令完成現在具有改進的排序功能,具體而言:
- 包含更多詳細資訊的完成通常顯示在詳細資訊較少的完成上方
- 內建命令優先於
$PATH
中的路徑
對於路徑,進行了以下改進:
- 以
_
開頭的路徑會受到懲罰,因為這通常表示它們是特殊的,通常不應更改太多(例如,__init__.py
)。 - 排序時忽略標點符號,因此以
.
開頭的檔案將與其他檔案混在一起。
CDPATH 支援
設定:terminal.integrated.suggest.cdPath
$CDPATH
環境變數是一種常見的 shell 功能,包含一個由冒號分隔的路徑列表,類似於 $PATH
,允許像它們是相對路徑一樣導航它們,無論當前工作目錄如何。Fish 實際上在 cd
補全中顯示 CDPATH 條目
我們現在支援在使用 cd
時將 $CDPATH
條目顯示為完成項
此功能也適用於 Windows(;
分隔符),並且不需要 shell 本機支援該功能,因為預設情況下使用絕對路徑。
使用 terminal.integrated.suggest.cdPath 進行配置。
絕對路徑
現在支援絕對路徑。
別名支援
現在還檢測 bash、zsh 和 fish 的命令別名,並具有一個新的獨特圖示
區分選項和標誌
CLI 選項(有值)和標誌(無值)現在透過不同的圖示在 UI 中進行區分
任務
任務重新執行操作
我們為終端添加了一個新的重新執行任務操作,⌃⇧R (Windows, Linux Ctrl+Shift+R)。此操作顯示在終端選項卡的內聯工具欄和終端的上下文選單中。
除錯
除錯內聯值懸停
如果啟用了 debug.inlineValues 設定,內聯值裝飾現在具有內聯懸停功能,使得一眼就能更容易地讀取更長的值。
語言
TypeScript 5.8
VS Code 現在包含 TypeScript 5.8.2。此重大更新帶來了新的語言改進,包括改進了條件表示式的型別檢查和支援編寫符合 Node 新的 --experimental-strip-types 選項的程式碼。它還包含了一些工具改進和錯誤修復。
請檢視TypeScript 5.8 釋出部落格,瞭解此更新的更多詳細資訊。
遠端開發
遠端開發擴充套件允許您透過 SSH 或遠端隧道使用開發容器、遠端機器或適用於 Linux 的 Windows 子系統 (WSL) 作為功能齊全的開發環境。
亮點包括:
- Linux 舊伺服器終止支援
- 擴充套件代理可配置性
您可以在遠端開發發行說明中瞭解有關這些功能的更多資訊。
企業支援
允許擴充套件的多行支援
您現在可以使用多行字串在 Windows 組策略中配置允許的擴充套件。這允許更靈活和更廣泛地配置允許的擴充套件。瞭解有關配置允許的擴充套件的更多資訊。
對擴充套件的貢獻
Python
中斷長字串時自動插入引號
Pylance 現在支援自動插入引號,以在中斷長字串時實現無縫體驗。
Pylance 記憶體消耗改進
進行了一些最佳化以改進 Pylance 的記憶體消耗,特別是在處理大型工作區時。此增強功能已新增到 Pyright,它是為 Pylance 語言伺服器功能提供支援的靜態型別檢查器。
Python Shell 整合改進
修改 python.terminal.shellIntegration.enabled 後,您不再需要重新載入才能使更改生效。只需建立一個新終端即可在終端中的 Python REPL 中檢視所需的更改。
Windows Git Bash 的正確工作區提示
在 Windows 上使用 Git Bash 的 Python 使用者現在將在其終端提示中看到正確的工作目錄。這些更改適用於選擇加入 pythonTerminalEnvVarActivation
實驗的使用者。
自動測試發現檔案模式的新設定
您現在可以透過在 python.testing.autoTestDiscoverOnSavePattern 設定中指定 glob 模式來最佳化自動測試發現發生的檔案。其預設值設定為 **/*.py
。
從 settings.json 讀取測試除錯配置作為備用
我們現在在 settings.json
和 launch.json
檔案中查詢測試除錯配置,擴充套件了您可以定義這些配置的位置。
GitHub 身份驗證
透過採用 Electron fetch
改進代理支援
GitHub 身份驗證擴充套件現在利用 Electron 版本的 fetch
來發出 Web 請求。這有助於使用某些代理和防火牆設定的使用者。如果您知道您在具有代理設定的環境中執行,並且無法在 VS Code 中向 GitHub 進行身份驗證,請隨時建立問題!
擴充套件創作
身份驗證
重要:我們正在將
AuthenticationForceNewSessionOptions
重新命名為AuthenticationGetSessionPresentationOptions
,並暫時保留已棄用的AuthenticationForceNewSessionOptions
。功能上沒有區別,因此這在執行時不是一個重大更改,但您應該更新您的程式碼以使用AuthenticationGetSessionPresentationOptions
而不是AuthenticationForceNewSessionOptions
,因為它將在將來移除。
檢視這兩個身份驗證呼叫:
vscode.authentication.getSession(provider, scopes, { createIfNone: options });
vscode.authentication.getSession(provider, scopes, { forceNewSession: options });
createIfNone
和 forceNewSession
現在將接受 boolean
或 AuthenticationGetSessionPresentationOptions
/**
* Optional options to be used when calling {@link authentication.getSession} with interactive options `forceNewSession` & `createIfNone`.
*/
export interface AuthenticationGetSessionPresentationOptions {
/**
* An optional message that will be displayed to the user when we ask to re-authenticate. Providing additional context
* as to why you are asking a user to re-authenticate can help increase the odds that they will accept.
*/
detail?: string;
}
這是 createIfNone
的新新增功能,但它是對 forceNewSession
的修改,後者過去接受一個與新的 AuthenticationGetSessionPresentationOptions
具有相同簽名的 AuthenticationForceNewSessionOptions
。
如果您明確使用 AuthenticationForceNewSessionOptions
,您會發現它被標記為已棄用,您應該將其替換為 AuthenticationGetSessionPresentationOptions
,因為 AuthenticationForceNewSessionOptions
將在未來的版本中移除。
重要的是要注意,這裡唯一改變的是型別。沒有執行時更改,因此從這個角度來看,這不是一個破壞性更改。
此外,authLearnMore
提議的 API 已從 AuthenticationForceNewSessionOptions
更新為 AuthenticationGetSessionPresentationOptions
。
以下是利用 detail
和 learnMore
提案的示例
精簡的片段 API
您現在可以控制插入片段時的空白標準化。這適用於 insertSnippet
-API 和 SnippetTextEdit
-API,並控制是否調整片段附加行的縮排。
const snippet = `This is an indented
snippet`;
// keepWhitespace: false, undefined
function indentedFunctionWithSnippet() {
return `This is an indented
snippet`; // adjusted indentation
}
// keepWhitespace: true
function indentedFunctionWithSnippet() {
return `This is an indented
snippet`; // original indentation
}
提議的 API
文字編碼
我們添加了新的提議 API,用於在 VS Code 中處理文字編碼。
具體來說,這個新的 API 允許
- 獲取
TextDocument
的當前encoding
- 使用特定
encoding
開啟TextDocument
- 將
string
編碼為帶有特定encoding
的Uint8Array
- 使用特定
encoding
將Uint8Array
解碼為string
請嘗試一下,並在此 GitHub 問題中告訴我們您的想法。
Shell 環境
擴充套件能夠訪問從 VS Code 整合終端開啟的 pwsh、zsh、bash 和 fish shell 的使用者當前活動 shell 環境資訊。這僅在啟用 terminal.integrated.shellIntegration.enabled 時可用。
使用者可以透過 terminal.integrated.shellIntegration.environmentReporting 決定是否報告其 shell 環境資訊。
請嘗試一下,並在此 GitHub 問題中告訴我們您的想法。
工程
Electron 34 更新
在此里程碑中,我們將 Electron 34 更新推廣給我們的穩定版本使用者。此更新附帶 Chromium 132.0.6834.196 和 Node.js 20.18.2。我們要感謝所有在 Insider 版本上自託管並提供早期反饋的使用者。
macOS 10.15 支援已終止
VS Code 1.97
是最後一個支援 macOS 10.15 (macOS Catalina) 的版本。請參閱我們的常見問題以獲取更多資訊。
開發時跟蹤洩露的可支配物件
VS Code 使用可支配模式進行顯式資源管理,例如關閉檔案、清理 DOM 元素或刪除事件監聽器。不處理資源意味著記憶體浪費,記憶體使用量會隨著時間的推移而累積。
我們一直在尋找此類洩漏,並添加了另一個檢測工具。我們利用 FinalizationRegistry
API,因為它會在物件被垃圾回收時通知我們。如果這樣的物件代表一個未被處理的 disposable
,這意味著我們有一個洩漏。這些被收集並顯示給 VS Code 的開發人員,以便我們可以在工作時進行清理。
值得注意的修復
感謝
最後但同樣重要的是,向 VS Code 的貢獻者們致以衷心的感謝。
問題跟蹤
對我們問題跟蹤的貢獻
- @gjsjohnmurray (John Murray)
- @albertosantini (Alberto Santini)
- @IllusionMH (Andrii Dieiev)
- @RedCMD (RedCMD)
拉取請求
對 vscode
的貢獻
- @a-stewart (Anthony Stewart):差異選擇指示線應使用 menu.separatorBackground 而不是 menu.border PR #228825
- @bchu1 (Bryan Chu):修復小地圖中標題錯位的問題 PR #217581
- @cassidoo (Cassidy Williams):修復 #241903:在 settingsLayout.ts 中新增 GitHub 覆蓋 PR #241911
- @cdce8p (Marc Mueller):新增 panelTitleBadge 顏色變數 PR #240645
- @cenviity (Vincent Ging Ho Yim):修復
editorOptions.ts
中的拼寫錯誤 PR #239929 - @cmbrose (Caleb Brose):更新聊天的
newEditSession
命令以接受輸入提示 PR #241796 - @devm33 (Devraj Mehta):修復:將 electron 新增為 webpack 的外部依賴 PR #239134
- @dmotte (Motte):修復 terminal.integrated.confirmOnExit 的行為 PR #240074
- @dvangonen (Daniil Vangonen):從 body 中移除不必要的類 PR #240633
- @gabritto (Gabriela Araujo Britto):撤銷“[typescript-language-features] 可展開懸停 (#_228255)” PR #240011
- @gjsjohnmurray (John Murray)
- 將多選提供給
scm/resourceGroup/context
選單命令(修復 #92337)PR #192172 - 新增
scmResourceGroupState
上下文鍵 (#_192009) PR #194804 - SCM - SCM 檢視上更簡潔的標題 PR #230693
- 修復鍵盤快捷鍵編輯器上的“顯示使用者鍵繫結”選項(修復 #240068)PR #240085
- “新增觸發斷點...”中“確定”大寫錯誤(修復 #240490)PR #240492
- 將多選提供給
- @hickford (M Hickford):在“tunnel user show”中記錄提供程式 PR #240692
- @ihavecoke (ihavecoke):將 tab_size 設定限制在 1 到 16 之間 PR #228957
- @jakebailey (Jake Bailey):在擴充套件主機開發中保留 --disable-extensions PR #240415
- @jamestut (James Nugraha):在初始化分詞器之前計算 TextModel 限制 PR #240919
- @jeanp413 (Jean Pierre)
- 修復終端拆分檢視可釋放物件洩露 PR #241597
- 修復損壞的終端連結懸停,在能夠懸停內容之前隱藏 PR #241599
- 修復時間線檢視洩露事件監聽器 PR #241607
- @KexyBiscuit (Kexy Biscuit a.k.a. るる):允許檢測 powershell-preview snap PR #240054
- @klaussner (Christian Klaussner):修復 macOS 上的紅綠燈居中問題 PR #212471
- @naman108 (Natha Paquette):儲存 URI 文件中的拼寫錯誤 PR #241600
- @nknguyenhc (Nguyen):擴充套件詳細內容超出容器 PR #240134
- @notoriousmango (Seong Min Park)
- 使命令中心除錯啟動器首先提供最近使用的配置 PR #240744
- 採用 Markdown 以使用 vscode 日誌輸出通道 PR #241342
- @pouyakary (Pouya Kary ✨):功能:自定義迷你地圖部分標題標記檢測正則表示式 ✨ PR #210271
- @rgrunber (Roland Grunberg):將 adjustWhitespace 暴露給 TextEditor API。 PR #234858
- @silamon (Simon Lamon):差異編輯器:將
1 files
更正為1 file
PR #240092 - @simon-id (simon-id):修復:工作臺搜尋使用正確的 findMatch 顏色(修復 #237909)PR #237910
- @SimonSiefke (Simon Siefke):修復:設定指示器中的記憶體洩漏 PR #236417
- @ssigwart (Stephen Sigwart):修復嘗試縮排時意外的 Tab 補全 PR #136572
- @SunsetTechuila (Grigory):功能:新增
insertFinalNewLine
PR #241126 - @tcvdh (Thijs van den Heuvel):修復:等待 clear 命令執行,然後才能重新使用終端 PR #240970
- @terrymun (Terry Mun-Andersen):修復:刪除 CONTRIBUTING.md 中多餘的反引號 PR #240305
- @tmm1 (Aman Karmani):tsb:修復已刪除並重新新增的原始檔未重新生成的問題 PR #238409
- @xymopen (xymopen_Official)
- 新增 node 作為 npm 指令碼執行器 PR #236967
- 新增 node 作為 npm 指令碼執行器 (2nd) PR #240527
- @zardoy (Vitaly):[Git] 遷移到 git autostash 以便在拉取時獲得更好的效能 PR #187850
對 vscode-css-languageservice
的貢獻
- @GauravB159 (Gaurav Bhagchandani):新增 lab() 和 lch() 顏色預覽 PR #306
對 vscode-eslint
的貢獻
- @edemaine (Erik Demaine):Civet 的探測支援 PR #1965
- @mustevenplay (mustevenplay):新增 Typescript 配置檔案檢測 PR #1968
對 vscode-hexeditor
的貢獻
- @tomilho (Tomás Silva):將 Hex Compare Selected 移至 Compare Selected 下方 PR #561
對 vscode-jupyter
的貢獻
- @thesuperzapper (Mathew Wicks):修復讀取
JUPYTER_RUNTIME_DIR
和XDG_RUNTIME_DIR
的問題 PR #16451
對 vscode-languageserver-node
的貢獻
- @MariaSolOs (Maria José Solano)
- @mciccale (Marco Ciccalè Baztán):semaphore.ts 中的小拼寫錯誤 PR #1618
- @yf-yang:修復:避免處理不匹配的處理器 PR #1614
對 vscode-mypy
的貢獻
- @DetachHead
- @hamirmahal (Hamir Mahal):修復:CI 中使用已棄用的
node12
PR #336 - @ivirabyan (Ivan Virabyan):新增 dmypy 狀態檔案設定 PR #347
對 vscode-pull-request-github
的貢獻
- @christianvuerings (Christian Vuerings):修復帶有自定義 SSH 的複製 GitHub Permalink PR #6669
對 vscode-python-debugger
的貢獻
- @TCPsoftware (tcpsoft):將 "args": "${command:pickArgs}" 作為預設除錯配置 PR #548
對 vscode-vsce
的貢獻
- @mohankumarelec (mohanram):更新了語義版本比較 PR #1078
- @stevedlawrence (Steve Lawrence):允許可重現的 .vsix 包 PR #1100
對 debug-adapter-protocol
的貢獻
- @angelozerr (Angelo):新增 IntelliJ / LSP4IJ DAP 支援 PR #529
- @samisalreadytaken:將 Squirrel Debugger 新增到 adapters.md PR #530
- @SpartanJ (Martín Lucas Golini):更新 tools.md,新增新的 DAP 客戶端:ecode PR #526
- @sssooonnnggg (Song):雜項:新增 luau 偵錯程式 PR #516
- @theIDinside (Simon Farre):將 Midas 新增到除錯介面卡列表,帶有 VSCode PR #528
對 language-server-protocol
的貢獻
- @ind1go (Ben Cox):工作區診斷中的拼寫錯誤 PR #2086
- @MariaSolOs (Maria José Solano)
- @MuntasirSZN (Muntasir Mahmud):功能:伺服器列表中的 copilot 語言伺服器 PR #2107
- @Szasza (Szasza Palmer):將 Wing 語言伺服器新增到伺服器列表 PR #2101
- @the-mikedavis (Michael Davis):澄清
$0
不應使用任何其他片段語法 PR #2087 - @yassun7010 (yassun7010):將 Tombi 新增到 LSP 列表。 PR #2089
對 python-environment-tools
的貢獻
- @pantheraleo-7:新增對檢測
$VIRTUAL_ENV
的支援 PR #181