2024 年 1 月 (版本 1.86)
更新 1.86.2:此更新解決了這些 問題。
更新 1.86.1:此更新解決了這些 問題。
下載:Windows:x64 Arm64 | Mac:通用 Intel Silicon | Linux:deb rpm tarball Arm snap
歡迎使用 Visual Studio Code 2024 年 1 月發行版本。此版本包含許多更新,希望您會喜歡,以下是一些重點功能:
- 每個視窗的縮放層級 - 獨立調整每個視窗的縮放層級。
- 「Hey Code」語音命令 - 使用語音命令開始聊天工作階段。
- 多檔案差異編輯器 - 在差異編輯器中快速檢閱多個檔案的差異。
- 觸發式中斷點 - 透過中斷點相依性進行有效率的偵錯。
- 擴展的固定捲動支援 - 樹狀檢視和筆記本中的固定捲動。
- Markdown 貼上選項 - 豐富的貼上支援,適用於連結、影片和音訊元素。
- 彈性的自動儲存選項 - 略過錯誤時的自動儲存,或僅針對特定檔案類型儲存。
- 原始檔控制輸入 - 自訂提交輸入和每個語言的編輯器設定。
- 擴充功能通知 - 細緻地控制每個擴充功能的通知停用。
- GitHub Copilot 更新 - 改善預設內容、新增檔案作為內容、AI 修正。
如果您想線上閱讀這些發行說明,請前往 更新,網址為 code.visualstudio.com。
搶先體驗版: 想要盡快試用新功能嗎?您可以下載每日搶先體驗版組建,並在最新更新發布後立即試用。
協助工具
警示
螢幕閱讀器和點字使用者現在擁有更多可設定的警示,例如在命中偵錯中斷點、目前行上有錯誤等情況。這些可以透過以 accessibility.alert
開頭的設定進行設定,或使用 說明:列出警示 命令探索和設定。
使用「Hey Code」語音命令
透過新的 accessibility.voice.keywordActivation
設定,您可以啟用 VS Code 聆聽「Hey Code」語音命令,以開始與 Copilot Chat 的語音會話。語音辨識是在您的電腦本機計算,絕不會傳送到任何伺服器。
可用的選項有
chatInView
:從「聊天」檢視開始語音聊天quickChat
:從「快速聊天」控制項開始快速語音聊天inlineChat
:從編輯器中的行內聊天開始語音聊天chatInContext
:如果焦點在編輯器中,則從行內聊天開始語音聊天,否則從「聊天」檢視開始語音聊天
以下範例顯示配置了 inlineChat
選項的「Hey Code」
當 VS Code 使用麥克風辨識「Hey Code」時,狀態列中的小型麥克風圖示會發出訊號。
語音聊天工作階段完成後,VS Code 將再次聆聽「Hey Code」以再次啟動它。
若要使用此新功能,則需要以下擴充功能
注意:語音辨識在本機電腦上執行,絕不會傳送到任何伺服器。
工作台
還原輔助視窗
在此版本中,當您重新啟動應用程式時,所有與主視窗關聯的已開啟浮動視窗都將還原。這包括已開啟的編輯器,以及輔助視窗的大小和位置。
樹狀檢視中的固定捲動
基於編輯器中固定捲動的成功,我們已將此功能擴展到所有樹狀檢視,讓使用者能夠更輕鬆地導航專案樹。可以使用 workbench.tree.enableStickyScroll
設定啟用或停用樹狀檢視的固定捲動。
為了確保固定捲動不會佔用太多空間,它限制為檢視高度的 40%。此外,使用者可以透過設定 workbench.tree.stickyScrollMaxItemCount
來自訂固定元素的最大數量,預設值為 7。如果固定元素超過可以顯示的數量,則固定捲動會將最後的固定元素合併在一起(如果樹狀檢視支援此功能)。
為了改善樹狀導航體驗,您可以選取固定元素以直接跳到樹狀結構中的元素。或者,按下父元素的 chevron 以隱藏其所有子元素。此外,啟用固定捲動後,存取核取方塊和動作項目也更容易。
設定每個視窗的縮放層級
新的設定 window.zoomPerWindow
(預設為啟用)可讓您設定縮放命令(放大、縮小、重設縮放)僅適用於活動視窗,而不適用於所有已開啟的視窗。先前使用這些命令不僅會將其套用至所有已開啟的視窗,還會更新 window.zoomLevel
設定。
我們認為使用這些命令更像是一種臨時手勢,例如在進行簡報時,因此應僅適用於從中調用它們的視窗。
從此範例中可以看出,只有活動視窗的縮放層級會變更,其他視窗則不會變更
當視窗的自訂縮放層級與 window.zoomLevel
設定值不符時,狀態列中會顯示縮放層級指示器。選取狀態列指示器以尋找用於變更縮放層級、重設縮放層級或快速前往相關設定的控制項。
具有自訂縮放層級的視窗會在重新啟動和跨工作區變更時保留該縮放層級。
注意:將
window.zoomPerWindow
設定為false
以還原先前的縮放層級行為。
更強大且彈性的自動儲存選項
VS Code 長期以來提供自動儲存選項。在此版本中,我們使此功能更加強大。
為每個資源或語言設定自動儲存
現在可以為每個資料夾或語言設定所有自動儲存設定,這可讓您選擇性地僅為特定語言或資料夾啟用自動儲存。
在以下範例中,設定配置為
{
"[markdown]": {
"files.autoSave": "afterDelay"
}
}
如您所見,編輯過的 markdown 檔案會立即儲存,而 TypeScript 檔案仍保持未儲存狀態。
發生錯誤時停用自動儲存
新的 files.autoSaveWhenNoErrors
設定可讓您在檔案中存在錯誤標記時停用自動儲存,而自動儲存通常會儲存編輯器。
當您有外部工具監看檔案變更時,這可能很有用,您希望避免這些工具對包含錯誤的已變更檔案執行操作。
僅針對工作區檔案自動儲存
最後,新的設定 files.autoSaveWorkspaceFilesOnly
將自動儲存限制為僅限於工作區內的檔案。
允許為每個擴充功能停用通知
我們現在提供更細緻的控制,以停用來自擴充功能的通知。從通知快顯視窗中,您可以停用擴充功能的通知
在通知中心中,有一個中心位置可以管理所有已觸發通知的擴充功能的通知啟用
這項新功能補充了我們現有的「請勿打擾模式」,後者會全域停用所有通知。與全域開關一樣,錯誤通知將始終顯示且無法停用。
允許交換左右差異編輯器
當您比較兩個檔案(例如從檔案總管)時,會出現一個新動作來交換差異編輯器的左右側。
注意:比較兩個可編輯檔案允許您在任一側進行變更。
從命令列從 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
引數從命令列更新擴充功能。這會將所有已安裝的擴充功能更新到其最新版本。
快速選取中的 hover 現在使用自訂 hover
我們已將「快速選取」中的多個 hover 移至使用自訂 hover 而非原生轉譯。這可實現更豐富的轉譯和產品之間更一致。
在差異編輯器中檢閱多個檔案
在此版本中,多差異編輯器現在已為所有使用者啟用。多差異編輯器可讓您在一個可捲動的檢視中檢視多個檔案的變更
目前,多差異編輯器可用於檢閱本機變更、已暫存變更、傳入/傳出變更、stash 和來自提取請求的變更。可以透過選取各種新的 檢視變更 動作來開啟它,這些動作可以透過多檔案差異圖示來識別。
當從「原始檔控制」檢視開啟差異編輯器時,它會在檔案變更或暫存時動態更新檢視。
多差異編輯器仍在開發中,因此預期在即將發布的版本中會看到更多改進和錯誤修正。
GitHub Pull Requests 擴充功能中的多檔案差異
安裝 GitHub Pull Requests and Issues 擴充功能後,您可以設定 "githubPullRequests.focusedMode": "multiDiff"
,以便在開啟提取請求時自動開啟多檔案差異編輯器。
當您為 github.dev 設定時,您可以按下 GitHub 上提取請求上的 .
,而 github.dev 會開啟多檔案差異編輯器以檢閱變更。
編輯器
貼上 text/html 內容
貼上為... 命令現在可讓您貼上剪貼簿中的 text/html
內容
例如,當您從網頁複製內容時,您可以使用此功能來貼上內容的 HTML,而不是將其貼為純文字
原始檔控制
提交輸入自訂
在此里程碑中,我們新增了一個新設定 scm.inputMinLineCount
,可用於控制提交輸入欄位的初始高度。控制提交輸入欄位最大大小的設定已從 scm.inputMaxLines
重新命名為 scm.inputMaxLineCount
,以便與類似設定的命名慣例相符。
使用者現在可以使用語言特定的編輯器設定來進一步自訂提交輸入欄位。語言特定的編輯器設定可用於定義編輯器規則和停用自動換行
"[scminput]": {
"editor.rulers": [
50,
72
],
"editor.wordWrap": "off"
}
原始檔控制儲存庫檢視改進
為了協助更好地管理具有大量儲存庫的工作區,我們在儲存庫關聯式選單中新增了一個新命令:關閉其他儲存庫。我們也為 關閉儲存庫 和 關閉其他儲存庫 命令新增了多重選取支援,因此使用者可以一次關閉多個儲存庫,或關閉除少數儲存庫外的所有儲存庫。
由於擴充功能貢獻的動作,「原始檔控制儲存庫」檢視可能會變得擁擠。為了協助解決此問題,我們新增了隱藏貢獻動作的功能,方法是右鍵按一下動作並選擇 隱藏。隱藏的動作會移至 ... 選單中。除了 簽出 和 同步 之外的所有動作都可以隱藏。
傳入/傳出變更改進
我們繼續潤飾「原始檔控制」檢視中的傳入/傳出變更區段。在此里程碑中,我們進行了變更,以便僅當目前分支具有追蹤遠端分支時,才會顯示 傳入變更 節點。
我們已將 提取 和 拉取 動作新增至 傳入變更 節點,並將 推送 動作新增至 傳出變更 節點。
我們已新增檢視每個個別提交以及利用多檔案差異編輯器的所有傳入/傳出變更的動作。
使用者現在可以使用新的設定 scm.showChangesSummary
來隱藏 所有變更 項目。
合併標籤的能力
我們已透過新增合併標籤的功能來解決長期以來的功能請求。命令面板中新增了一個新命令 Git:合併...,取代了 Git:合併分支... 命令。調用 Git:合併... 命令將顯示一個快速選取控制項,其中列出分支和標籤。
檢視 Stash 命令
我們新增了一個新命令 Git:檢視 Stash...,讓使用者能夠在多檔案差異編輯器中檢視儲存庫中的任何 stash。檢視 git stash 時,編輯器標題選單將包含應用/彈出或捨棄 stash 的動作。
使用 SSH 金鑰簽署提交
在此里程碑中,我們新增了使用帶有密碼的 SSH 金鑰簽署提交的功能。當使用 SSH 金鑰簽署提交時,VS Code 會在螢幕頂端顯示快速選取控制項,以提示輸入密碼。VS Code 不會快取密碼,並且每次簽署提交時都會提示輸入密碼。
筆記本
浮動視窗支援
現在可以在浮動視窗中開啟筆記本編輯器。您可以將筆記本標籤頁拖曳出主視窗以在新視窗中開啟,或使用 檢視:將編輯器移至新視窗 命令。
內建變數檢視
我們已在「執行和偵錯」檢視中新增實驗性變數檢視,可用於檢視筆記本核心的變數(如果擴充功能提供)。可以使用此設定啟用此功能
"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 Speech 擴充功能。
工作
路徑分隔符號變數的簡寫
新的 ${/}
變數可以用作現有 ${pathSeparator}
變數的簡寫。
偵錯
觸發式中斷點
您現在可以設定中斷點,這些中斷點會在另一個中斷點被命中時自動啟用。例如,這在診斷僅在特定前提條件之後發生的程式碼中的失敗案例時非常有用。觸發式中斷點適用於所有語言,條件式中斷點也可用作觸發器。
可以透過在字形邊距上按一下滑鼠右鍵,選取 新增觸發式中斷點...,然後選擇哪個其他中斷點啟用此中斷點來設定觸發式中斷點。
主題:Codesong(在 vscode.dev 上預覽)
當會話結束時關閉唯讀檔案
當連接到偵錯器時,可能會有一些不存在於磁碟上的內部或虛擬原始檔,這些檔案會以唯讀方式開啟。有一個新的設定 debug.closeReadonlyTabsOnEnd
,可讓 VS Code 在會話結束時自動關閉從偵錯會話開啟的任何唯讀檔案。
測試
更多執行測試的方式
按住 Alt 並按一下測試裝飾,現在會以偵錯模式執行該測試(如果可用)。
檔案總管檢視中現在有關聯式選單動作,可用於執行在檔案或資料夾中宣告的所有測試。
為擴充功能作者最終確定 TestRunProfile.isDefault/onDidChangeDefault
API
先前,TestRunProfile.isDefault
僅控制測試執行配置的初始預設狀態,並且在那之後從未更改或讀取。
在此版本中,使用者變更其選取的配置將反映在 TestRunProfile.isDefault
屬性中,並觸發對應的 TestRunProfile.onDidChangeDefault
事件。同樣地,當擴充功能變更 isDefault
時,這將導致 UI 中的選取配置更新。
語言
貼上 URL 以自動建立 Markdown 連結
想要將您複製的連結轉換為 Markdown 連結嗎?當您將 URL 貼到選取了文字的 Markdown 檔案中時,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,與先前的文法相比,它維護得更積極。
遠端開發
遠端開發擴充功能可讓您使用 Dev Container、透過 SSH 或 遠端通道的遠端機器,或 Windows Subsystem for Linux (WSL) 作為功能完整的開發環境。
重點包括
- 在您的使用者資料夾中建立
devcontainer.json
。 - 在使用 Dockerfile 時,在
devcontainer.json
中指定組建選項。
您可以在遠端開發發行說明中了解有關這些功能的更多資訊。
擴充功能的貢獻
GitHub Copilot
現在可以使用設定 editor.inlineSuggest.fontFamily
來變更行內建議的字型系列。
在儲存之前確認行內聊天
我們強調負責任地使用 AI,尤其是在原始碼方面。因此,我們新增了一個新設定,要求使用者在儲存由 Copilot 產生的程式碼之前進行確認。此設定 inlineChat.acceptedOrDiscardBeforeSave
預設為啟用。
主題:GitHub Light Default(在 vscode.dev 上預覽)
啟用此設定後,檔案儲存將等待使用者接受或捨棄任何擱置中的行內聊天工作階段。這也適用於啟用自動儲存時,這將暫時停用,直到行內聊天結束為止。
按住說話模式
不久前,我們為 VS Code 新增了語音支援。安裝 VS Code Speech 擴充功能,這會為「聊天」輸入欄位新增語音轉文字支援。
對於行內聊天,我們現在新增了「按住說話」,其運作方式如下
- 按下 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
,然後從出現的快速選取中選取檔案。
如果可能,將包含檔案的完整內容。如果太大而無法放入內容視窗,則將包含檔案的輪廓,其中包含函數及其描述,但不包含實作。如果輪廓也太大,則檔案將不會成為提示的一部分。
聊天中的預設內容
先前,預設情況下,我們會在您的聊天請求中包含來自活動程式碼編輯器的兩種內容類型
- 如果有文字選取範圍,則將包含選取範圍
- 如果沒有選取範圍,則將包含活動編輯器可見視窗中的程式碼範圍
我們發現,當您想提出一個通用問題時,第二種類型可能會導致混淆,因為 LLM 會將其解釋為關於您編輯器中包含在上下文中的程式碼的問題。我們正在實驗預設不包含視窗中的程式碼,而是僅包含選取的程式碼。
當然,您通常會想詢問關於您在編輯器中看到的程式碼,因此我們新增了一個新的上下文變數 #editor
。
新增「清除所有工作區聊天記錄」命令
每次您使用 +
按鈕開始新的聊天時,您之前的聊天記錄都會儲存在您的工作區聊天記錄中,您可以透過聊天檢視標題中的時鐘圖示來存取。為了方便起見,我們新增了清除所有工作區聊天記錄命令,以清除您過去的所有聊天記錄。
Commit 訊息語言
現在,產生 git commit 訊息的程式碼會使用 github.copilot.chat.localeOverride
設定,以特定語言產生 commit 訊息。
要求私人儲存庫的額外權限
為了啟用私人儲存庫的額外工作區搜尋功能,我們需要額外權限。如果我們偵測到我們尚未擁有這些權限,我們會在啟動時要求這些權限。一旦授權,我們將安全地儲存會話以供未來使用。
Python
預設安裝 Python Debugger 擴充功能
Python Debugger 擴充功能現在與 Python 擴充功能一起預設安裝。
Python Debugger 擴充功能旨在將偵錯功能與主要的 Python 擴充功能分開,以防止相容性問題。這確保即使 Python 擴充功能停止支援舊版本的 Python(例如 Python 3.7),您仍然可以使用這些版本繼續偵錯專案,而無需降級您的 Python 擴充功能。它還提供平台特定的組建,確保您只收到與您的特定作業系統相關的組件,從而減少下載時間和不必要的額外負荷。
這個新的擴充功能複製了主要 Python 擴充功能中提供的所有功能,甚至更多。
為了確保您正在使用新的 Python Debugger 擴充功能,請將您 launch.json
組態檔案中的 "type": "python"
替換為 "type": "debugpy"
。未來,Python 擴充功能將不再提供偵錯支援,我們將把所有偵錯支援轉移到 Python Debugger 擴充功能,以支援所有偵錯功能。
Python 解譯器快速選擇中的「建立環境」選項
您現在可以更方便地從 Python 解譯器快速選擇中建立 Python 環境。執行Python: 選擇解譯器命令,然後選擇建立環境選項,為您的專案建立新的虛擬環境。
佈景主題:Catppuccin Mocha(在 vscode.dev 上預覽)
改良工作區 conda 環境的顯示
Python 解譯器快速選擇現在會顯示位於工作區中的 conda 環境名稱,以便更容易識別它們。
支援多層級 pytest 類別
當使用多層級 pytest 類別時,頂層類別現在會顯示在測試總管中。先前,僅顯示較低層級的類別。
佈景主題:Catppuccin Mocha(在 vscode.dev 上預覽)
Jupyter
針對擴充功能作者最終確定 Jupyter Kernel Execution API
Jupyter 擴充功能的 API,用於針對 Jupyter 核心執行程式碼,已最終確定。擴充功能可以使用 API 針對核心執行程式碼。
API 用法範例可以在 Jupyter Kernel Execution Sample 中找到。
npm 套件 @vscode/jupyter-extension
包含所有 TypeScript 類型定義。
當擴充功能嘗試存取 Jupyter 核心時,會提示使用者授與或撤銷對核心的存取權。使用者依擴充功能授與對 Jupyter 核心的存取權。這表示使用者可以授與擴充功能 A
存取權,並撤銷擴充功能 B
的存取權。
使用者可以透過 Jupyter: 管理 Jupyter 核心的存取權 命令,管理(授與/撤銷)每個擴充功能對 Jupyter 核心的存取權。
GitHub Pull Requests and Issues
GitHub Pull Requests and Issues 擴充功能取得了更多進展,可讓您處理、建立和管理 pull request 和 issue。新功能包括
- 解決目前簽出的 PR 的衝突。
- issue 查詢的
groupBy
屬性。 - 點擊簽出 PR 中的永久連結將在編輯器中開啟檔案。
- 將滑鼠游標停留在留言反應上會顯示誰反應了。
- 設定
"githubPullRequests.focusedMode": "multiDiff"
將在簽出時使用 PR 中的所有檔案開啟多重差異編輯器。
檢閱擴充功能 0.80.0 版本的 變更記錄,以了解其他重點。
預覽功能
TypeScript 5.4 beta 支援
我們現在支援 TypeScript 5.4 的 beta 版本。查看 TypeScript 5.4 beta 部落格文章 和 iteration plan,以取得有關此版本的詳細資訊。重點包括
- AI 驅動重構的初步工作。
- 新的
NoInfer
intrinsic,可以幫助程式庫和類型作者停止不正確的類型推斷。 - 改進 類型精簡 和類型檢查。
若要開始使用 TypeScript 5.4 beta,只需安裝 TypeScript Nightly 擴充功能。請分享意見反應,並讓我們知道您在使用 TypeScript 5.4 時是否遇到任何錯誤。
快速搜尋改進
在 1.82 版本中,我們推出了 快速存取文字搜尋(「快速搜尋」),讓使用者可以從選擇器中搜尋。🔎
快速搜尋現在具有以下功能
- 使用中選擇器的編輯器預覽。在您瀏覽時,在編輯器的上下文中查看結果。
- 從快速搜尋到搜尋檢視的更輕鬆導覽。選取輸入旁邊或結果旁邊的按鈕,將結果傳輸到搜尋檢視。
佈景主題:Night Owl(在 vscode.dev 上預覽)
建議的 API
每個里程碑都帶有新的建議 API,擴充功能作者可以試用它們。與往常一樣,我們希望收到您的意見反應。以下是試用建議 API 的步驟
- 尋找您想嘗試的建議,並將其名稱新增至
package.json#enabledApiProposals
。 - 使用最新的 @vscode/dts 並執行
npx @vscode/dts dev
。它會將對應的d.ts
檔案下載到您的工作區中。 - 您現在可以針對建議進行程式設計。
您不能發佈使用建議 API 的擴充功能。下一個版本中可能會出現重大變更,我們絕不希望破壞現有的擴充功能。
測試涵蓋率 API
這個里程碑,測試涵蓋率的 API 和編輯器內體驗已達到功能完整狀態。我們鼓勵擴充功能作者試用它們,並在預計於 VS Code 1.87 版本中最終確定之前提供意見反應。
雖然 API 太長而無法在此處包含,但我們相信它相當簡單明瞭,並歡迎您在 issue #123713 中對建議提供您的意見。
聊天代理程式 API
我們一直在開發 API,使擴充功能作者能夠將他們自己的聊天代理程式貢獻到 VS Code 的聊天檢視中。我們對 API 進行了一些變更,包括
- 傳遞給聊天代理程式的歷史記錄上下文現在正確地表示給定訊息調用了哪個聊天代理程式和命令、歷史記錄訊息中的變數值以及結果是什麼。
ChatAgentTask
已移除,現在可以在回應串流中使用ChatProgressMessage
,以涵蓋相同的場景。- 所有「slashCommand」相關術語都已重新命名為「subCommand」。
如果您想試用 API,您可以從我們的 範例聊天代理程式擴充功能 開始,並訂閱 issue #199908 以取得 API 的更新。
程式碼動作醒目提示 API
對於諸如「提取方法」或「移動到檔案」之類的重構,動作將應用於哪些程式碼並不總是清楚的。對於諸如 TypeScript 之類的語言尤其如此,這些語言會嘗試智慧地擴展使用者目前的選取範圍。
此 API 允許程式碼動作提供一個或多個範圍 (Range[]
),它們將應用於這些範圍。當使用者將滑鼠游標停留在程式碼動作清單上或在其中使用箭頭鍵瀏覽時,範圍將會醒目提示。
- 對於重構,此範圍將是目前檔案中將受到重構影響的程式碼。
- 對於快速修正,您可以醒目提示相關的診斷。這已經在從
editor.codeActionWidget.includeNearbyQuickFixes
叫用的快速修正中完成。
Issue Reporter API
對建議 API 的小幅新增,允許 IssueUriRequestHandler
和 IssueDataProvider
一起使用。
也改進了 vscode.commands.openIssueReporter
命令,該命令現在可以貢獻額外的擴充功能資料,並修改 GitHub issue 指向的 URL。
訂閱 issue #197863 以取得 API 和 openIssueReporter
命令的更新或變更。
留言反應 reactor API
CommentReaction
介面具有新的 reactors
屬性,以便擴充功能可以指示誰對留言做出反應。這些 reactors
目前顯示在留言反應的懸停提示中。
請參閱 issue #201131 以追蹤此 API 的進度。
最終 API
新的 workspace.save
和 workspace.saveAs
API
新的最終確定 API workspace.save
和 workspace.saveAs
允許擴充功能觸發儲存編輯器的流程,可以儲存到其資源,或要求使用者提供資源。
所有儲存方法都會傳回產生的 Uri
,如果操作取消,則傳回 undefined
。未命名的檔案將始終要求使用者提供目的地,除非已關聯路徑。
FileSystemProvider
API 的唯讀訊息
當使用 registerFileSystemProvider
註冊 FileSystemProvider
時,可以設定 options
以將整個檔案系統標記為唯讀。現在,如果 isReadonly
選項設定為 MarkdownString
,則當使用者嘗試在檔案系統中編輯檔案時,該訊息將顯示在編輯器中。
工程
內部整理
在 12 月初,我們進行了年度內部整理。我們在我們的儲存庫中淨減少了 1891 個 issue。下圖很好地說明了我們年度內部整理迭代的必要性和影響。
Markdown Language Service 0.4 版本
Markdown Language Service 套件 為 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。我們要感謝所有在 Insiders 組建上自行託管並提供早期意見反應的人。
Linux 最低需求更新
在這個里程碑中,我們更新了工具鏈以建置我們的桌面用戶端。從此版本開始,VS Code 桌面版僅與基於 glibc 2.28 或更高版本以及 glibcxx 3.4.25 或更高版本的 Linux 發行版相容,例如 Debian 10、RHEL 8 或 Ubuntu 20.04。
如果您無法升級您的 Linux 發行版,建議的替代方案是使用我們的 web client。如果您想使用桌面版本,則可以下載 VS Code 1.85 版本。根據您的平台,請務必停用更新以保持在該版本上。一個好的建議是使用可攜式模式設定安裝。
值得注意的修正
感謝您
最後但同樣重要的是,非常感謝 VS Code 的貢獻者。
Issue 追蹤
對我們的 issue 追蹤的貢獻
- @gjsjohnmurray (John Murray)
- @IllusionMH (Andrii Dieiev)
- @starball5 (starball)
- @RedCMD (RedCMD)
- @okineadev (Okinea Dev)
Pull request
對 vscode
的貢獻
- @a-stewart (Anthony Stewart)
- 在
editor.action.clipboardPasteAction
上觸發輸入事件 PR #198822 - 在
getCustomBuiltinExtensionsFromLocations
的錯誤訊息中記錄extensionLocation
而不是location
PR #200748
- 在
- @Ajaykumbhare (Ajay Kumbhare): 修正:終端機重新命名在編輯器區域中無法如預期運作 PR #202270
- @andrewbranch (Andrew Branch): 修正 preferTypeOnlyAutoImports 偏好設定 getter PR #201376
- @aramikuto (Aleksandr Kondrashov): 更新 IExplorerView 介面 PR #201992
- @audreygao (Audrey Ya Gao): 修正 #193468 - 修正按下不可展開的參考項目上的「l」時出現錯誤通知的錯誤。 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): 時間軸:使用追蹤選項,以便時間軸追蹤重新命名後的檔案 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: 合併分支...
選擇器在描述中重複分支名稱 (修正 #199562) PR #199742- 修正與活動列相關的
自訂版面配置
錯誤 (修正 #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): 修正:調整呼叫 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): # 修正部分 accepts 的丟失 PR #199663
- @MaxBR97: 新增 scm.inputMinLines 組態 PR #200551
- @mohammadamin16 (Mohammad Amin): debug:在結束偵錯工作階段時關閉唯讀索引標籤 PR #199898
- @mrienstra (Michael Rienstra): 文件:記錄新的
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 的 relatedInformation 樣式與 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)
- 修正:menubar 中的記憶體洩漏 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 Client 的成功結束通知 PR #1404
- @sh-cho (Seonghyeon Cho):使用 Azure pipeline 更新建置狀態徽章 PR #1392
- @werat (Andy Hippo):在
unregister()
中總是刪除功能提供者 PR #1380
對 vscode-pull-request-github
的貢獻
- @Balastrong (Leonardo Montini):從 markdown 範本建立 issue PR #5503
- @joshuaobrien
- @pouyakary (Pouya Kary ✨):修正 #5620 PR #5621
對 vscode-vsce
的貢獻
- @sebas2day (Sebastiaan Brouwer):feat:支援 yarn workspaces PR #493
- @whosafe:篩選來自其他平台的資料 PR #912
對 language-server-protocol
的貢獻
- @alcarney (Alex Carney)
- @asukaminato0721 (湊 あすか):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):feat:Python 3.12 關鍵字支援 PR #4212
- @tamayika:將 JSON 符號資訊變更為文件符號 PR #3894
對 node-jsonc-parser
的貢獻
- @H4ad (Vinicius Lourenço):perf(format):盡可能快取換行符號和空格 PR #81