2024 年 1 月 (1.86 版本)
更新 1.86.2:此更新解決了這些 問題。
更新 1.86.1:此更新解決了這些 問題。
下載:Windows:x64 Arm64 | Mac:通用 Intel Apple 晶片 | Linux:deb rpm tarball Arm snap
歡迎使用 Visual Studio Code 2024 年 1 月版。此版本包含許多更新,我們希望您會喜歡,其中一些主要亮點包括:
- 每個視窗的縮放級別 - 獨立調整每個視窗的縮放級別。
- “嘿,Code”語音命令 - 透過語音命令啟動聊天會話。
- 多檔案差異編輯器 - 在差異編輯器中快速檢視多個檔案的差異。
- 觸發的斷點 - 使用斷點依賴項高效除錯。
- 擴充套件的粘性滾動支援 - 在樹檢視和筆記本中支援粘性滾動。
- Markdown 貼上選項 - 對連結、影片和音訊元素提供豐富的貼上支援。
- 靈活的自動儲存選項 - 在出現錯誤時跳過自動儲存,或僅儲存特定檔案型別。
- 原始碼管理輸入 - 自定義提交輸入和每個語言的編輯器設定。
- 擴充套件通知 - 對每個擴充套件停用通知進行精細控制。
- GitHub Copilot 更新 - 改進的預設上下文,新增檔案作為上下文,AI 修復。
如果您想線上閱讀這些發行說明,請訪問 code.visualstudio.com 上的更新頁面。
內測版:想盡快嘗試新功能?您可以下載每晚的內測版構建,並儘快嘗試最新的更新。
輔助功能
警報
螢幕閱讀器和盲文使用者現在可以配置更多警報,例如命中斷點時、當前行有錯誤時等。這些警報可以透過以 accessibility.alert
開頭的設定進行配置,也可以使用幫助:列出警報命令進行探索和配置。
使用“嘿,Code”語音命令
透過新的 accessibility.voice.keywordActivation
設定,您可以啟用 VS Code 監聽“嘿,Code”語音命令,以啟動與 Copilot Chat 的語音會話。語音識別在您的本地計算機上計算,絕不會發送到任何伺服器。
可用選項包括
chatInView
: 從聊天檢視開始語音聊天quickChat
: 從快速聊天控制元件開始快速語音聊天inlineChat
: 從編輯器中的內聯聊天開始語音聊天chatInContext
: 如果焦點在編輯器中,則從內聯聊天開始語音,否則從聊天檢視開始語音聊天
以下示例顯示了配置了 inlineChat
選項的“嘿,Code”
狀態列中的小麥克風圖標表示 VS Code 正在使用麥克風識別“嘿,Code”。
語音聊天會話完成後,VS Code 將再次監聽“嘿,Code”以重新開始。
要使用此新功能,需要以下擴充套件:
注意:語音識別在您的本地計算機上執行,絕不會發送到任何伺服器。
工作臺
恢復輔助視窗
在此版本中,與主視窗關聯的所有已開啟的浮動視窗將在您重新啟動應用程式時恢復。這包括已開啟的編輯器以及輔助視窗的大小和位置。
樹檢視中的粘性滾動
在編輯器中粘性滾動成功的基礎上,我們已將此功能擴充套件到所有樹檢視,使使用者能夠更輕鬆地導航專案樹。樹檢視的粘性滾動可以透過 workbench.tree.enableStickyScroll
設定啟用或停用。
為確保粘性滾動不會佔用太多空間,它被限制為檢視高度的最大 40%。此外,使用者可以透過配置 workbench.tree.stickyScrollMaxItemCount
(預設設定為 7)來自定義粘性元素的最大數量。如果粘性元素多於可顯示數量,如果樹檢視支援此功能,粘性滾動將合併最後幾個粘性元素。
為了改善樹導航體驗,您可以選擇一個粘性元素以直接跳轉到樹中的該元素。或者,按下父元素的展開箭頭以隱藏其所有子元素。此外,啟用粘性滾動後,訪問複選框和操作項會更容易。
按視窗配置縮放級別
新的設定 window.zoomPerWindow
預設啟用,允許您配置縮放命令(放大、縮小、重置縮放)僅應用於活動視窗,而不應用於所有已開啟的視窗。以前,使用這些命令不僅會將其應用於所有已開啟的視窗,還會更新 window.zoomLevel
設定。
我們認為使用這些命令更多是一種即興手勢,例如在演示時,因此它們應該只應用於呼叫它們的視窗。
如您在此示例中看到的,只有活動視窗的縮放級別發生變化,而其他視窗的縮放級別沒有變化
當視窗的自定義縮放級別與 window.zoomLevel
設定值不匹配時,狀態列中會顯示一個縮放級別指示器。選擇狀態列指示器以查詢更改縮放級別、重置縮放級別或快速轉到相關設定的控制元件。
具有自定義縮放級別的視窗在重新啟動和工作區更改後會保留該縮放級別。
注意:將
window.zoomPerWindow
配置為false
可恢復以前的縮放級別行為。
更強大靈活的自動儲存選項
VS Code 長期以來一直提供自動儲存選項。在此版本中,我們使此功能更加強大。
按資源或語言配置自動儲存
所有自動儲存設定現在都可以按資料夾或語言配置,這使您可以選擇性地僅為特定語言或資料夾啟用自動儲存。
在下面的示例中,設定配置如下:
{
"[markdown]": {
"files.autoSave": "afterDelay"
}
}
如您所見,編輯的 Markdown 檔案會立即儲存,而 TypeScript 檔案仍未儲存。
出現錯誤時停用自動儲存
新的 files.autoSaveWhenNoErrors
設定允許您在自動儲存通常儲存編輯器時,如果檔案中存在錯誤標記,則停用自動儲存。
當您有外部工具監視檔案更改時,這可能很有用,您希望避免這些工具對包含錯誤的檔案進行操作。
僅針對工作區檔案自動儲存
最後,一個新的設定 files.autoSaveWorkspaceFilesOnly
將自動儲存限制為僅限工作區內的檔案。
允許按擴充套件停用通知
我們現在提供更精細的控制,用於停用來自擴充套件的通知。從通知 Toast 中,您可以停用該擴充套件的通知
在通知中心,有一箇中心位置可以管理所有已觸發通知的擴充套件的通知啟用狀態
此新功能補充了我們現有的“請勿打擾”模式,該模式全域性停用所有通知。與全域性開關一樣,錯誤通知將始終出現且無法停用。
允許交換左右差異編輯器
當您比較兩個檔案(例如從檔案資源管理器中)時,會出現一個新操作,用於交換差異編輯器的左側和右側。
注意:比較兩個可編輯檔案允許您在任一側進行更改。
從命令列讀取 stdin 時不強制執行 --wait
使用終端時,您可以將程序的輸出直接傳遞到 VS Code 以作為編輯器開啟,例如
- 在 Linux 或 macOS 上執行
ps aux | grep code | code -
- 在 Windows 上執行
echo Hello World | code -
到目前為止,這也意味著 --wait
標誌,這意味著您必須關閉編輯器視窗或整個 VS Code 才能返回終端提示符。在此里程碑中,我們不再在從 stdin 讀取時強制執行 --wait
,因此您可以立即返回終端提示符。
注意:要恢復以前的行為,只需在命令列呼叫中附加
--wait
。
支援帶有原生標題欄的自定義標題欄
我們引入了 window.customTitleBarVisibility
設定,它允許即使在使用原生標題欄時也顯示自定義標題欄。這對於喜歡原生選項卡的 macOS 使用者尤其有利。透過此新設定,原生標題欄使用者現在可以訪問自定義標題欄功能,例如
- 命令中心:直接從自定義標題欄輕鬆訪問命令中心。
- 佈局控制元件:更靈活地自定義您的工作區佈局。
- 活動欄自定義:將活動欄操作移到頂部。
- 編輯器操作自定義:將編輯器操作重新定位到自定義標題欄。
此外,對於喜歡全屏模式下簡潔檢視的使用者,window.customTitleBarVisibility: "windowed"
選項允許您在全屏模式下隱藏自定義標題欄。此功能可確保更專注、無干擾的編碼環境,同時仍提供在非全屏模式下使用自定義標題欄功能的選項。
強制執行系統顏色主題的新設定
新的設定 window.systemColorTheme
允許您顯式覆蓋應用於 VS Code 中原生元素(例如 macOS 上的選單或對話方塊)的系統顏色主題。該設定支援以下值:
default
: 顏色主題與作業系統(預設選項)的顏色主題匹配。auto
: 根據 VS Code 主題選擇light
或dark
light
: 選擇light
系統主題dark
: 選擇dark
系統主題
下面是此設定如何應用於 macOS 上下文選單的示例,上半部分顯示 light
,下半部分顯示 dark
允許不經確認關閉無標題工作區
新的設定 window.confirmSaveUntitledWorkspace
允許您在關閉包含無標題工作區的視窗時停用顯示確認對話方塊。現在對話方塊上還有一個複選框可以停用顯示它。window.confirmSaveUntitledWorkspace
設定預設啟用以保持當前行為。
注意:在我們的文件中瞭解有關無標題工作區的更多資訊。
在輸出面板中切換自動換行
輸出面板現在支援透過使用檢視:切換自動換行命令來切換自動換行。這對於在輸出面板中檢視長行文字很有用。
在新視窗中開啟輸出面板
輸出面板現在在面板標題選單中有一個在新視窗中開啟輸出操作,用於在單獨的視窗中檢視輸出面板。
從 CLI 更新擴充套件
您現在可以使用 --update-extensions
引數從命令列更新擴充套件。這將把所有已安裝的擴充套件更新到最新版本。
快速選擇中的懸停現在使用自定義懸停
我們已將快速選擇中的幾個懸停改為使用自定義懸停,而不是原生渲染。這允許更豐富的渲染和產品範圍內更高的一致性。
在差異編輯器中審查多個檔案
在此版本中,多檔案差異編輯器現在已為所有使用者啟用。多檔案差異編輯器允許您在一個可滾動檢視中檢視多個檔案的更改
目前,多檔案差異編輯器可用於審查本地更改、暫存更改、傳入/傳出更改、暫存區以及拉取請求中的更改。可以透過選擇各種新的檢視更改操作來開啟它,這些操作可以透過多檔案差異圖示識別。
當從原始碼管理檢視開啟差異編輯器時,它會隨著檔案更改或暫存而動態更新檢視。
多檔案差異編輯器仍在開發中,因此預計在未來的版本中會看到更多改進和錯誤修復。
GitHub 拉取請求擴充套件中的多檔案差異
當安裝了GitHub 拉取請求和問題擴充套件時,您可以設定 "githubPullRequests.focusedMode": "multiDiff"
以在開啟拉取請求時自動開啟多檔案差異編輯器。
當您設定好github.dev後,您可以在 GitHub 上對拉取請求按 .
鍵,然後github.dev 將開啟多檔案差異編輯器以審查更改。
編輯器
貼上文字/HTML 內容
“貼上為...”命令現在允許您貼上剪貼簿中的 text/html
內容
例如,當您從網頁複製內容時,您可以使用此功能貼上內容的 HTML,而不是將其貼上為純文字
原始碼管理
提交輸入自定義
在此里程碑中,我們添加了一個新設定 scm.inputMinLineCount
,可用於控制提交輸入欄位的初始高度。控制提交輸入欄位最大大小的設定已從 scm.inputMaxLines
重新命名為 scm.inputMaxLineCount
,以使其與類似設定的命名約定匹配。
使用者現在可以使用特定語言的編輯器設定進一步自定義提交輸入欄位。特定語言的編輯器設定可用於定義編輯器規則和停用自動換行
"[scminput]": {
"editor.rulers": [
50,
72
],
"editor.wordWrap": "off"
}
原始碼管理儲存庫檢視改進
為了更好地管理包含大量儲存庫的工作區,我們向儲存庫上下文選單添加了一個新命令:“關閉其他儲存庫”。我們還為“關閉儲存庫”和“關閉其他儲存庫”命令添加了多選支援,因此使用者可以一次關閉多個儲存庫,或者關閉除少數幾個儲存庫之外的所有儲存庫。
由於擴充套件貢獻的操作,原始碼管理儲存庫檢視可能會變得混亂。為了解決這個問題,我們添加了隱藏貢獻操作的功能,只需右鍵單擊該操作並選擇“隱藏”即可。隱藏的操作將移至“...”選單。除“簽出”和“同步”之外的所有操作都可以隱藏。
傳入/傳出更改改進
我們繼續完善原始碼管理檢視中的傳入/傳出更改部分。在此里程碑中,我們進行了更改,以便僅噹噹前分支具有跟蹤遠端分支時才顯示傳入更改節點。
我們已將獲取和拉取操作新增到傳入更改節點,並將推送操作新增到傳出更改節點。
我們已新增操作以檢視每個單獨的提交,以及利用多檔案差異編輯器的所有傳入/傳出更改。
使用者現在可以使用新設定 scm.showChangesSummary
來隱藏所有更改條目。
合併標籤的能力
我們透過新增合併標籤的功能,解決了長期以來的功能請求。命令面板中添加了一個新命令:Git: 合併...,它取代了Git: 合併分支...命令。呼叫Git: 合併...命令將顯示一個快速選擇控制元件,其中列出了分支和標籤。
檢視暫存命令
我們添加了一個新命令,Git: 檢視暫存...,它使使用者能夠在多檔案差異編輯器中檢視儲存庫中的任何暫存。當檢視 Git 暫存時,編輯器標題選單將包含應用/彈出或刪除暫存的操作。
使用 SSH 金鑰簽署提交
在此里程碑中,我們添加了使用帶有密碼的 SSH 金鑰簽署提交的功能。使用 SSH 金鑰簽署提交時,VS Code 將在螢幕頂部顯示一個快速選擇控制元件,以提示輸入密碼。VS Code 不會快取密碼,並且每次簽署提交時都會提示輸入密碼。
Notebook
浮動視窗支援
現在可以在浮動視窗中開啟筆記本編輯器。您可以將筆記本選項卡從主視窗拖出以在新視窗中開啟,或使用“檢視:將編輯器移動到新視窗”命令。
內建變數檢視
我們已在“執行和除錯”檢視中添加了一個實驗性變數檢視,可用於檢視筆記本核心中的變數(如果擴充套件提供了這些變數)。此功能可以透過此設定啟用
"notebook.experimental.variablesView": true
筆記本粘性滾動
筆記本編輯器的粘性滾動功能經過了顯著的完善,以使其風格與工作臺的其餘部分保持一致,併為每個 Markdown 元素添加了摺疊控制元件。
終端
選擇下方顯示背景
當啟用 GPU 加速時,具有非預設背景顏色的單元格現在將“在”常規選擇顏色下方渲染。
透過滑鼠滾輪縮放終端
在啟用此設定後,按住 Ctrl 的同時,可以使用滑鼠滾輪放大和縮小終端。
"terminal.integrated.mouseWheelZoom": true
多行貼上警告改進
在之前的版本中,terminal.integrated.enableMultiLinePasteWarning
接受 true
(預設)或 false
。當 true
處於活動狀態時,它總是顯示警告,除非啟用了括號貼上模式或行以 \n
字元結尾。此設定現在接受包含以下選項的字串:
auto
: 以前的 true 行為always
: 始終顯示警告never
: 從不顯示警告
此外,對話方塊中有一個新按鈕,用於將字串貼上為單行,這將刪除所有 \r
和 \n
字元。
連結改進
檔案協議 URI (file://
) 現在支援末尾的行號和列號擴充套件,就像大多數其他連結一樣。還支援新的 #<line>
格式。
終端語音命令
新的終端:啟動終端語音和終端:停止終端語音命令可在終端中啟用語音轉文字會話。
要使用此新功能,請安裝 VS Code 語音擴充套件。
任務
路徑分隔符變數的簡寫
新的 ${/}
變數可以用作現有 ${pathSeparator}
變數的簡寫。
除錯
觸發斷點
您現在可以設定在另一個斷點命中後自動啟用的斷點。例如,這在診斷僅在滿足特定前置條件後才發生的程式碼故障情況時可能很有用。觸發斷點適用於所有語言,並且條件斷點也可以用作觸發器。
可以透過右鍵單擊字形邊距,選擇“新增觸發斷點...”,然後選擇啟用此斷點的其他斷點來設定觸發斷點。
主題:Codesong(在vscode.dev上預覽)
會話結束時關閉只讀檔案
當連線到偵錯程式時,可能會存在磁碟上不存在的內部或虛擬原始檔,這些檔案以只讀方式開啟。有一個新設定 debug.closeReadonlyTabsOnEnd
,它會在除錯會話結束時,VS Code 自動關閉從除錯會話中開啟的所有隻讀檔案。
測試
更多執行測試的方法
在單擊測試裝飾時按住 Alt,現在會在可用時以除錯模式執行該測試。
現在,在資源管理器檢視中有上下文選單操作,可用於執行檔案中或資料夾中宣告的所有測試。
為擴充套件作者最終確定 TestRunProfile.isDefault/onDidChangeDefault
API
以前,TestRunProfile.isDefault
只控制測試執行配置檔案的初始預設狀態,之後從未更改或讀取。
在此版本中,使用者更改其選定配置檔案將反映在 TestRunProfile.isDefault
屬性中,並觸發相應的 TestRunProfile.onDidChangeDefault
事件。同樣,當擴充套件更改 isDefault
時,這將導致 UI 中的選定配置檔案更新。
語言
貼上 URL 以自動建立 Markdown 連結
想要將您複製的連結轉換為 Markdown 連結嗎?當您在選中文字的 Markdown 檔案中貼上 URL 時,VS Code 現在會自動插入 Markdown 連結
此功能由 markdown.editor.pasteUrlAsFormattedLink.enabled
設定控制。您可以更改它以自定義此行為
smartWithSelection
— 預設值。當您選中文字且不在特殊元素(例如程式碼塊)內時,此功能啟用。smart
— 與smartWithSelection
相同,但不需要選擇。always
— 始終將 URL 貼上為 Markdown 連結never
— 停用貼上為 Markdown 連結。
貼上值後,您始終可以使用“貼上”控制元件切換以不同方式貼上內容。
配置 Markdown 的音訊/影片片段
新的 markdown.editor.filePaste.audioSnippet
和 markdown.editor.filePaste.videoSnippet
設定允許您自定義音訊和影片檔案在拖放或貼上時如何插入到 Markdown 中。片段可以使用以下變數:
${src}
— 音訊/影片檔案的解析路徑。${title}
— 用於音訊/影片的標題。將自動為此變數建立一個片段佔位符。
新的 Less 語法
以前的 Less 語法已存檔,VS Code 現在使用來自 Better-Less 的語法進行 Less 語法高亮。
新的 Go 語法
Go 語法高亮語法已更改為使用 Go Syntax,它比以前的語法更積極地維護。
遠端開發
遠端開發擴充套件允許您透過 SSH 或遠端隧道使用開發容器、遠端機器或適用於 Linux 的 Windows 子系統 (WSL) 作為功能齊全的開發環境。
亮點包括:
- 在使用者資料資料夾中建立
devcontainer.json
。 - 使用 Dockerfile 時,在
devcontainer.json
中指定構建選項。
您可以在遠端開發發行說明中瞭解有關這些功能的更多資訊。
對擴充套件的貢獻
GitHub Copilot
現在可以使用設定 editor.inlineSuggest.fontFamily
更改內聯建議的字體系列。
儲存前確認內聯聊天
我們強調負責任地使用 AI,尤其是在原始碼方面。因此,我們添加了一個新設定,要求使用者在儲存由 Copilot 生成的程式碼之前進行確認。此設定 inlineChat.acceptedOrDiscardBeforeSave
預設啟用。
主題:GitHub Light Default (在 vscode.dev 上預覽)
當該設定啟用時,檔案儲存將等待使用者接受或放棄任何待處理的內聯聊天會話。這也適用於啟用自動儲存時,自動儲存將暫時停用,直到內聯聊天結束。
按住說話模式
不久前,我們為 VS Code 添加了語音支援。安裝 VS Code 語音擴充套件,它為聊天輸入欄位添加了語音轉文字支援。
對於內聯聊天,我們現在添加了“按住說話”功能,其工作方式如下:
- 按 Cmd+I 或 Ctrl+I 觸發內聯聊天。
- 按住按鍵,並注意語音錄製如何自動開始。
- 鬆開按鍵以停止錄製並將您的請求傳送給 Copilot。
主題:GitHub Light Default (在 vscode.dev 上預覽)
此新模式還帶有一個設定,預設啟用,但可以透過 inlineChat.holdToSpeech
停用。
預覽:內聯聊天快速語音
除了“按住說話”之外,我們還在試驗此功能的更輕量級的替代 UI。透過按 Cmd+K 或 Ctrl+K 然後按住 I
來啟用快速語音。在按住 I
的同時,會顯示一個更輕量級的錄製 UI。釋放後,請求將傳送。
內聯聊天即時模式
上一個版本有一個新的實驗性內聯聊天模式,名為 live3
。它提供更流暢的流媒體體驗和更易於理解的差異檢視。現在它已經畢業並取代了以前的 live
模式。預設仍然是 livePreview
,但我們鼓勵使用者嘗試 live
。我們還在進行一項實驗,以瞭解哪種模式效果最好。
AI 修復的燈泡(閃光)
要呼叫 Copilot,您還可以使用編輯器中的燈泡指示器。選擇一段文字或將游標移動到新行,選擇燈泡,然後選擇使用 Copilot 修改或使用 Copilot 生成。
如果沒有其他程式碼操作,燈泡會顯示為閃光,並會直接開啟內聯聊天。
#file
上下文變數
您可以透過在聊天輸入中鍵入 #
來使用一些上下文變數,我們添加了 #file
,讓您可以將工作區中指定的檔案作為上下文包含在聊天提示中。從輸入中的建議控制元件中選擇 #file
,然後從出現的快速選擇中選擇一個檔案。
如果可能,將包含檔案的全部內容。如果內容太大無法放入上下文視窗,則將包含檔案的大綱,其中包含函式及其描述,但不包含實現。如果大綱也太大,則該檔案將不作為提示的一部分。
聊天中的預設上下文
以前,我們預設會將活動程式碼編輯器中的兩種上下文型別包含在您的聊天請求中:
- 如果存在文字選擇,則會包含該選擇。
- 如果沒有任何選擇,則會包含活動編輯器可見視口中的程式碼範圍。
我們發現第二種型別在您想提出一般性問題時可能會導致混淆,但大型語言模型會將其解釋為關於編輯器中作為上下文包含的程式碼的問題。我們正在嘗試預設不包含視口中的程式碼,而只包含選定的程式碼。
當然,您經常會想詢問您在編輯器中可以看到的程式碼,因此我們添加了一個新的上下文變數 #editor
。
新增“清除所有工作區聊天”命令
每次您使用 +
按鈕開始新聊天時,您之前的聊天都會儲存在您的工作區聊天曆史記錄中,您可以透過聊天檢視標題中的時鐘圖示訪問該歷史記錄。我們添加了“清除所有工作區聊天”命令,以便方便地清除您過去的所有聊天曆史記錄。
提交訊息語言
現在,用於生成 git 提交訊息的程式碼使用 github.copilot.chat.localeOverride
設定以特定語言生成提交訊息。
請求私有儲存庫的額外許可權
為了啟用私有儲存庫的額外工作區搜尋功能,我們需要額外許可權。如果檢測到我們尚未擁有這些許可權,我們將在啟動時請求它們。一旦授予,我們將安全地儲存會話以備將來使用。
Python
預設安裝 Python 偵錯程式擴充套件
Python 偵錯程式擴充套件現在與 Python 擴充套件一起預設安裝。
Python 偵錯程式擴充套件旨在將除錯功能與主 Python 擴充套件分離,以防止相容性問題。這確保了即使 Python 擴充套件放棄對舊 Python 版本(例如 Python 3.7)的支援,您也可以繼續除錯使用這些版本的專案,而無需降級 Python 擴充套件。它還提供特定於平臺的構建,確保您只接收與您的特定作業系統相關的元件,從而減少下載時間和不必要的開銷。
此新擴充套件複製了主 Python 擴充套件中所有可用功能,甚至更多。
為了確保您正在使用新的 Python 偵錯程式擴充套件,請將 launch.json
配置檔案中的 "type": "python"
替換為 "type": "debugpy"
。將來,Python 擴充套件將不再提供除錯支援,我們將把所有除錯支援轉換為 Python 偵錯程式擴充套件以實現所有除錯功能。
Python 直譯器快速選擇中的“建立環境”選項
您現在可以更方便地從 Python 直譯器快速選擇中建立 Python 環境。執行“Python:選擇直譯器”命令,然後選擇“建立環境”選項以為您的專案建立一個新的虛擬環境。
主題:Catppuccin Mocha (在 vscode.dev 上預覽)
工作區 conda 環境的顯示改進
Python 直譯器快速選擇現在顯示工作區中 conda 環境的名稱,以便更容易識別它們。
支援多級 pytest 類
使用多級 pytest 類時,頂級類現在顯示在測試資源管理器中。以前,只顯示較低級別的類。
主題:Catppuccin Mocha (在 vscode.dev 上預覽)
Jupyter
為擴充套件作者最終確定 Jupyter 核心執行 API
Jupyter 擴充套件用於針對 Jupyter 核心執行程式碼的 API 已最終確定。擴充套件可以使用 API 針對核心執行程式碼。
API 用法示例可在 Jupyter 核心執行示例中找到。
npm 包 @vscode/jupyter-extension
包含所有 TypeScript 型別定義。
當擴充套件嘗試訪問 Jupyter 核心時,會提示使用者授予或撤銷對核心的訪問許可權。對 Jupyter 核心的訪問許可權由使用者按擴充套件授予。這意味著使用者可以授予擴充套件 A
訪問許可權,並撤銷擴充套件 B
的訪問許可權。
使用者可以透過命令Jupyter:管理對 Jupyter 核心的訪問來管理(授予/撤銷)對 Jupyter 核心的訪問許可權。
GitHub 拉取請求和議題
GitHub 拉取請求和問題擴充套件取得了更多進展,該擴充套件允許您處理、建立和管理拉取請求和問題。新功能包括:
- 解決當前簽出的 PR 的衝突。
- 用於問題查詢的
groupBy
屬性。 - 在簽出的 PR 中單擊永久連結將在編輯器中開啟檔案。
- 懸停在評論反應上會顯示誰做出了反應。
- 設定
"githubPullRequests.focusedMode": "multiDiff"
將在簽出時開啟包含 PR 中所有檔案的多差異編輯器。
檢視擴充套件 0.80.0 版本的更新日誌,瞭解其他亮點。
預覽功能
TypeScript 5.4 beta 支援
我們現在支援 TypeScript 5.4 的 beta 版本。請檢視TypeScript 5.4 beta 部落格文章和迭代計劃以獲取此版本的詳細資訊。亮點包括:
- AI 驅動的重構的初步工作。
- 一個新的
NoInfer
intrinsic,可以幫助庫和型別作者停止不正確的型別推斷。 - 型別細化和型別檢查的改進。
要開始使用 TypeScript 5.4 beta,只需安裝 TypeScript Nightly 擴充套件。請分享反饋,並告訴我們您在使用 TypeScript 5.4 時是否遇到任何錯誤。
快速搜尋改進
在 1.82 版本中,我們引入了快速訪問文字搜尋(“快速搜尋”),它允許使用者從選擇器中進行搜尋。🔎
快速搜尋現在具有以下功能:
- 在活動選擇上預覽編輯器。在瀏覽時在編輯器上下文中檢視結果。
- 從快速搜尋到搜尋檢視的更輕鬆導航。選擇輸入旁邊的按鈕或結果以將結果傳輸到搜尋檢視。
主題:Night Owl (在 vscode.dev 上預覽)
提議的 API
每個里程碑都會帶來新的提議 API,擴充套件作者可以嘗試這些 API。一如既往,我們希望得到您的反饋。以下是嘗試提議 API 的步驟
- 查詢您要嘗試的提議並將其名稱新增到
package.json#enabledApiProposals
。 - 使用最新的 @vscode/dts 並執行
npx @vscode/dts dev
。它會將相應的d.ts
檔案下載到您的工作區。 - 您現在可以根據該提議進行程式設計。
您不能釋出使用提議 API 的擴充套件。下個版本中可能會有破壞性更改,我們絕不希望破壞現有擴充套件。
測試覆蓋率 API
在此里程碑中,測試覆蓋率的 API 和編輯器內體驗已達到功能完整狀態。我們鼓勵擴充套件作者在 VS Code 1.87 版本中正式釋出之前試用並提供反饋。
儘管 API 篇幅太長無法在此處包含,但我們認為它相當簡單,並歡迎您對問題 #123713中的提議提出意見。
聊天代理 API
我們一直在開發一個 API,以使擴充套件作者能夠將其自己的聊天代理貢獻給 VS Code 中的聊天檢視。我們對 API 進行了一些更改,包括:
- 傳遞給聊天代理的歷史上下文現在正確地表示了給定訊息呼叫了哪個聊天代理和命令、歷史訊息中變數的值以及結果是什麼。
ChatAgentTask
已刪除,現在可以在響應流中間使用ChatProgressMessage
來覆蓋相同的場景。- 所有“slashCommand”相關術語已重新命名為“subCommand”。
如果您想試用該 API,可以從我們的示例聊天代理擴充套件開始,並訂閱問題 #199908以獲取 API 的更新。
程式碼操作高亮 API
對於提取方法或移動到檔案等重構,程式碼操作將應用於哪些程式碼並不總是很清楚。對於像 TypeScript 這樣嘗試智慧地擴充套件使用者當前選擇的語言尤其如此。
此 API 允許程式碼操作提供一個或可能多個它們將應用於的範圍 (Range[]
)。當用戶懸停或透過程式碼操作列表箭頭移動時,該範圍將被突出顯示。
- 對於重構,此範圍將是當前檔案中受重構影響的程式碼。
- 對於快速修復,您可以突出顯示相關的診斷。這已在從
editor.codeActionWidget.includeNearbyQuickFixes
呼叫的快速修復中完成。
問題報告器 API
對提案 API 的少量新增,允許 IssueUriRequestHandler
和 IssueDataProvider
一起使用。
還改進了 vscode.commands.openIssueReporter
命令,該命令現在可以貢獻額外的擴充套件資料並修改 GitHub 問題指向的 URL。
訂閱問題 #197863以獲取 API 和 openIssueReporter
命令的更新或更改。
評論反應反應器 API
CommentReaction
介面有一個新的 reactors
屬性,因此擴充套件可以指示誰對評論做出了反應。這些 reactors
當前顯示在評論反應的懸停中。
請參閱問題 #201131以跟蹤此 API 的進展。
最終確定的 API
新的 workspace.save
和 workspace.saveAs
API
新的最終確定的 API workspace.save
和 workspace.saveAs
允許擴充套件觸發儲存編輯器的流程,無論是儲存到其資源,還是透過要求使用者提供資源。
所有儲存方法都返回結果 Uri
,如果操作被取消,則返回 undefined
。無標題檔案將始終要求使用者提供目標,除非已關聯路徑。
FileSystemProvider
API 的只讀訊息
使用 registerFileSystemProvider
註冊 FileSystemProvider
時,可以將 options
設定為將整個檔案系統標記為只讀。現在,如果將 isReadonly
選項設定為 MarkdownString
,則當用戶嘗試編輯檔案系統中的檔案時,該訊息將顯示在編輯器中。
工程
內務管理
12 月初,我們進行了年度清理。我們在各個儲存庫中淨減少了 1891 個問題。下圖很好地說明了我們年度清理迭代的必要性和影響。
Markdown 語言服務 0.4 版釋出
Markdown 語言服務包為 VS Code 的內建 Markdown 支援提供支援。新的 0.4 版本捆綁了我們過去半年所做的一些改進,其他工具和編輯器也可以從中受益。以下是一些亮點:
- 為 Markdown 中的 HTML 片段啟用文件連結、引用和重新命名。
- 修復正則表示式中潛在的災難性回溯。
- 避免在補全中新增額外的編碼。
- 使用模糊匹配進行工作區符號搜尋。
- 修復了一些連結檢測/驗證方面的問題。
新的 localize2
函式,使建立 ILocalizedString
更加容易
在 VS Code 的核心程式碼庫中,我們使用一種名為 ILocalizedString
的型別來並排呈現本地化字串和英文字串。如果您使用語言包並開啟命令面板,您可能已經見過這種情況。
以前,我們必須像這樣編寫這些表示式:
const str = { value: localize('id', 'Hello World'), original: 'Hello World' };
現在可以表示如下:
const str = localize2('id', 'Hello World');
然後,我們的本地化管道將識別這些 localize2
出現。
Electron 27 更新
在此里程碑中,我們將 Electron 27 更新推廣給穩定版使用者。此更新附帶 Chromium 118.0.5993.159 和 Node.js 18.17.1。我們要感謝所有在 Insider 版本上自託管並提供早期反饋的人。
Linux 最低要求更新
在此里程碑中,我們更新了用於構建桌面客戶端的工具鏈。從該版本開始,VS Code 桌面版僅相容基於 glibc 2.28 或更高版本以及 glibcxx 3.4.25 或更高版本的 Linux 發行版,例如 Debian 10、RHEL 8 或 Ubuntu 20.04。
如果您無法升級您的 Linux 發行版,建議的替代方案是使用我們的網頁客戶端。如果您想使用桌面版本,則可以下載 VS Code 1.85 版。根據您的平臺,請確保停用更新以保留在該版本。一個好的建議是使用便攜模式進行安裝。
值得注意的修復
感謝
最後但同樣重要的是,向 VS Code 的貢獻者們致以衷心的感謝。
問題跟蹤
對我們問題跟蹤的貢獻
- @gjsjohnmurray (John Murray)
- @IllusionMH (Andrii Dieiev)
- @starball5 (starball)
- @RedCMD (RedCMD)
- @okineadev (Okinea Dev)
拉取請求
對 vscode
的貢獻
- @a-stewart (Anthony Stewart)
- 在
editor.action.clipboardPasteAction
上觸發輸入事件 PR #198822 - 在
getCustomBuiltinExtensionsFromLocations
的錯誤訊息中記錄extensionLocation
而不是location
PR #200748
- 在
- @Ajaykumbhare (Ajay Kumbhare): 修復:編輯器區域中的終端重新命名功能不正常 PR #202270
- @andrewbranch (Andrew Branch): 修復 preferTypeOnlyAutoImports 偏好設定獲取器 PR #201376
- @aramikuto (Aleksandr Kondrashov): 更新 IExplorerView 介面 PR #201992
- @audreygao (Audrey Ya Gao): 修復 #193468 - 修復在不可擴充套件引用項上按“l”時錯誤通知的 bug。 PR #199996
- @bricker (Bryan Ricker): 文件拼寫錯誤修復 PR #202429
- @callumok2004 (Callum OKane): 將
bun.lockb
新增到 package.json 下的預設檔案巢狀 PR #201065 - @CGNonofr (Loïc Mangeonjean): 考慮之前建立的模型 PR #199652
- @chartrandf (Francis Chartrand): timeline: 使用 follow 選項,使 timeline 在重新命名後仍能跟蹤檔案 PR #187174
- @conwnet (netcon): 修復:
workbench.editorAssociations
在 workbench configurationDefaults 中不起作用 PR #194087 - @cpendery (Chapman Pendery)
- 修復:終端建議定位 PR #199420
- 修復:接受終端補全游標位置 PR #199706
- 構建:當 'shellIntegration.suggestEnabled' 為 true 時啟用建議 PR #199821
- 重構:xterm 建議外掛到 terminalContrib PR #200107
- @DiscreteTom (DiscreteTom): 修復 #193746 PR #197523
- @effectivecui: 避免在 item.children 為空時進入無限迴圈。 PR #201701
- @Flanker32 (Hanxiao Liu): 更新 java 工作區標籤 PR #197729
- @gayanper (Gayan Perera): 新增對斷點依賴項的支援 PR #166202
- @GenericTSDeveloper: 修復了建議詳細資訊小部件對齊不正確的問題 (https://github.com/microsoft/monaco-editor/issues/3373) PR #198730
- @gjsjohnmurray (John Murray)
- 實現列表查詢/篩選匹配之間的鍵盤導航 PR #180078
- 篩選 Git 分支/標籤快速選擇時保留排序順序 (修復 #199471) PR #199473
Git: Merge Branch...
選擇器在描述中重複分支名稱 (修復 #199562) PR #199742- 修復與活動欄相關的“自定義佈局”bug (修復 #200571) PR #200572
- @gregvanl (Greg Van Liew): 新增缺少的逗號 PR #201137
- @harbin1053020115 (ermin.zem): 修復:在開發模式下根據當前顏色主題選擇主題 PR #190035
- @hsfzxjy (Xie Jingyi): 將 onDidStyleChange 推遲到 Repl 可見時 PR #200473
- @iisaduan (Isabel Duan): 修復 typescript/54492: 檢查檔案重新命名是否更改了副檔名 PR #200220
- @impressivewebs (Louis Lazaris)
- 修復了一些 CSS 術語 PR #202125
- 更正了 CSS 懸停文件文字 PR #202142
- @irgendwr (Jonas Bögle): 新增:“關閉其他儲存庫”到 git scm 選單 PR #130931
- @jacekkopecky (Jacek Kopecký): 修復 #198566: 省略左側截斷的搜尋預覽 PR #198567
- @jaraco (Jason R. Coombs): 新增對從 xonsh 提取環境的支援。 PR #201036
- @jeanp413 (Jean Pierre)
- 修復 vscode.tasks.executeTask 錯誤 “意外:任務在 task.terminate() 後不存在” PR #200872
- 修復單個選項卡上下文選單操作有時不起作用 PR #201021
- 修復任務進度指示器在第一次後不出現 PR #201064
- 修復單個終端選項卡重新命名操作不起作用 PR #201128
- @johnsoncodehk (Johnson Chu): 修復 optionalReplacementSpan 未應用於完成條目 PR #200945
- @JoyceGu (Joyce Gu): 新增 JS Vector DB 庫 PR #199980
- @jtbandes (Jacob Bandes-Storch): 更新 Swift.tmLanguage PR #200698
- @keerthivasansa (Keerthi Vasan S A): 樹模糊搜尋切換的工作臺操作 PR #175137
- @khreenberg (Kim Reenberg): 修復:對於不可執行的 libc.so.6 回退到字串 PR #202581
- @kkocdko (kkocdko): 修復 Node.js 21 後的平臺檢測 PR #200935
- @ksg97031 (KSG): 文件:修復 Go To 命令的多個引數描述中的拼寫錯誤 PR #201122
- @Leask (Sixia "Leask" Huang): 修復:調整 check-requirements 以呼叫 ldconfig PR #202645
- @loganrosen (Logan Rosen): 更新 CONTRIBUTING.md 中的 Stack Overflow 標籤 PR #126199
- @mahmoudsalah1993 (Mahmoud Salah): 對於開啟的差異編輯器,解析底層原始編輯器以設定 ... PR #201597
- @Malix-off (Malix): 刪除
extensions/git/src/api/git.d.ts
中未使用的匯入 PR #200797 - @marrej (Marcus Revaj): # 修復 partialAccepts 的丟失 PR #199663
- @MaxBR97: 新增 scm.inputMinLines 配置 PR #200551
- @mohammadamin16 (Mohammad Amin): 除錯:結束除錯會話時關閉只讀選項卡 PR #199898
- @mrienstra (Michael Rienstra): docs: 文件化新的
configuration.markdown.copyFiles.destination
選項 PR #203391 - @MrJithil (Jithil P Ponnan): chore: 將已棄用的八進位制轉義序列替換為十六進位制 PR #197518
- @ngarside (Nathan Garside): 新增
*.repo
檔案的語法高亮 PR #199859 - @nrayburn-tech (Nicholas Rayburn): npm 擴充套件 - 在 findFiles 之前檢查根 package.json PR #124803
- @poeck (Paul Köck): chore: 更新版權年份 PR #202344
- @r3m0t (Tomer Chachamu): 在貼上命令中等待貼上完成 (修復 #196161) PR #196516
- @RedCMD (RedCMD)
- 將小寫
l
更改為大寫L
。asp-vb-net.tmLanguage.json
PR #201981 onDidChangeEmmiter
在不應該觸發時持續觸發 PR #202198
- 將小寫
- @remcohaszing (Remco Haszing): 刪除 bigNumbersDelta PR #194712
- @RobbyCBennett (Robby Bennett): 使 gotoErrorWidget 相關資訊樣式與 markerHoverParticipant 更一致 PR #195409
- @robertohuertasm (Roberto Huertas): feat(stash): 返回 stash 結果 PR #177732
- @ronakj (Ronak Jain): 修復使用自定義節點路徑時 tsserver 崩潰 PR #201966
- @russelldavis (Russell Davis): 修復關閉檔案時恢復問題時的競態條件 PR #183271
- @samhanic: [CLI] 擴充套件更新命令 PR #199893
- @shubhisroking (Shubh): 將已棄用的 canceled 替換為 Cancellation Error。 PR #197605
- @SimonSiefke (Simon Siefke)
- 修復:選單欄中的記憶體洩漏 PR #198052
- 修復:defaultWorkerFactory 中的記憶體洩漏 PR #198710
- @sparxooo (sparxooo): 修復 #200257 以及現有的尾部非數字正則表示式修復 PR #200919
- @Splizard (Quentin Quaadgras): 移動/Android:支援用筆/觸控筆選擇文字。 PR #198578
- @susiwen8 (susiwen8)
- 修復:#200046 PR #200485
- 修復:
npm script
中的install
不應開啟 PR #201082
- @VDisawal: #198975: saveValue => historyNavigator.add PR #199142
- @wenfangdu (Wenfang Du): feat(git): 在語言配置檔案中新增
autoClosingPairs
PR #131403 - @Yesterday17 (Yesterday17): 修復 ExtHostLabelService 拼寫錯誤 PR #198855
- @yiliang114 (易良): 修復:fetchUrl 的控制檯格式 PR #198909
- @zWingz (zWing):修復 registerProfileContentHandler 拼寫錯誤 PR #183197
對 vscode-flake8
的貢獻
- @maxg203 (Max Goodridge):修復 README.md 中的連結 PR #269
對 vscode-hexeditor
的貢獻
- @IngilizAdam (Hasan Tuna):在偏移量之間選擇 PR #470
對 vscode-languageserver-node
的貢獻
- @debonte (Erik De Bonte):在
workspace/applyEdit
中支援WorkspaceEditMetadata
PR #1390 - @MariaSolOs (Maria José Solano)
- @rroessler (Reuben Roessler):更改了 Node 客戶端的成功退出通知 PR #1404
- @sh-cho (Seonghyeon Cho):使用 Azure pipeline 更新構建狀態徽章 PR #1392
- @werat (Andy Hippo):始終在
unregister()
中刪除功能提供程式 PR #1380
對 vscode-pull-request-github
的貢獻
- @Balastrong (Leonardo Montini):從 markdown 模板建立問題 PR #5503
- @joshuaobrien
- @pouyakary (Pouya Kary ✨):修復 #5620 PR #5621
對 vscode-vsce
的貢獻
- @sebas2day (Sebastiaan Brouwer):功能:支援 yarn workspaces PR #493
- @whosafe:過濾來自其他平臺的資料 PR #912
對 language-server-protocol
的貢獻
- @alcarney (Alex Carney)
- @asukaminato0721 (Asuka Minato):add-vscoq PR #1869
- @BeardedFish (Darian Benam):將 Apache Dispatcher Config 新增到語言伺服器實現列表 PR #1875
- @DanTup (Danny Tuppeny):澄清程式碼片段轉義規則 PR #1868
- @Fomys (Louis Chauvet):澄清 CompletionItem.textEdit 註釋 PR #1722
- @mhanberg (Mitchell Hanberg):修復 workspace/configuration 中的拼寫錯誤 PR #1823
對 monaco-editor
的貢獻
- @kokovtsev (Dmitry Kokovtsev):修復:在 JSON 補全詳情中啟用 markdown PR #4210
- @mevisioam:暴露 JSON worker PR #4299
- @nora-soderlund (Nora Söderlund):chore(docs):修復 monaco.d.ts 連結 PR #4243
- @OfekShilon (Ofek)
- @soof-golan (Soof Golan):功能:支援 Python 3.12 關鍵字 PR #4212
- @tamayika:將 JSON 符號資訊更改為文件符號 PR #3894
對 node-jsonc-parser
的貢獻
- @H4ad (Vinicius Lourenço):效能(格式):儘可能快取換行符和空格 PR #81