2023 年 8 月 (版本 1.82)
更新 1.82.1:此更新解決了這個安全性問題。
更新 1.82.2:此更新解決了這些問題。
更新 1.82.3:此更新解決了這個安全性問題。
下載:Windows:x64 Arm64 | Mac:通用 Intel silicon | Linux:deb rpm tarball Arm snap
歡迎使用 Visual Studio Code 2023 年 8 月發行版本。此版本包含許多更新,我們希望您會喜歡,其中一些主要重點包括:
- 協助工具改進 - 行內完成的「協助工具檢視」支援、更新的按鍵繫結。
- 內建連接埠轉送 - 從 VS Code 內轉送本機伺服器連接埠。
- 「固定捲動」更新 - 隨編輯器水平捲動、顯示範圍中的最後一行、摺疊 UI。
- 新的差異編輯器功能 - 偵測移動的程式碼、動態切換行內和並排檢視。
- 預設開啟命令中心 - 從標題列快速開啟檔案或執行命令。
- 複製筆記本輸出 - 輕鬆複製儲存格輸出以及產生的影像。
- WebAssembly 偵錯 - 將 WASM 程式碼反編譯以逐步執行並設定中斷點。
- 新的 TypeScript 重構 - 「移動到檔案」和「行內變數」重構。
- 新的 Python 格式化主題 - 了解如何整合格式化工具,例如 autopep8 和 Black。
- 預覽:GitHub Copilot - CreateWorkspace 命令預覽建議程式碼的檔案結構。
如果您想在線上閱讀這些版本資訊,請前往 更新,網址為 code.visualstudio.com。
Insiders: 想盡快試用新功能嗎?您可以下載每晚組建的 Insiders 版本,並在最新更新可用時立即試用。
協助工具
視窗標題中的焦點檢視
window.title
設定現在有一個 ${focusedView}
變數,如果目前焦點在檢視上,則會在標題列中顯示檢視的名稱。
行內完成的「協助工具檢視」
行內完成,例如來自 GitHub Copilot 擴充功能的完成,現在可以在「協助工具檢視」中檢查。
工作台中更一致的導覽體驗
上次迭代中,我們在使用 ⌘↓ (Windows、Linux Ctrl+Down) 和 ⌘↑ (Windows、Linux Ctrl+Up) 在輸入控制項 (例如,搜尋或篩選輸入) 及其結果之間導覽時,在元件 (例如「擴充功能」檢視、「鍵盤快速鍵」編輯器等) 中提供一致的體驗。此功能已擴展到「設定」編輯器和 GitHub Pull Request 註解控制項。
這也適用於在終端機和終端機「協助工具緩衝區」之間導覽。
更新的終端機「協助工具緩衝區」按鍵繫結
先前,終端機「協助工具緩衝區」是透過 Shift+Tab 開啟。這與某些 Shell 中的現有鍵盤快速鍵衝突。因此,我們已移除該按鍵繫結,改用 ⌘↓ (Windows、Linux Ctrl+Down) 和 ⌥F2 (Windows Alt+F2、Linux Shift+Alt+F2),以與其他「協助工具檢視」對齊。
「協助工具檢視」中的動作
「協助工具檢視」中的動作可讓螢幕閱讀器使用者針對特定功能執行「前往下一個/上一個」、停用協助工具詳細資訊等操作。這些動作存在於檢視中的便利工具列中,以便可以保留目前的內容。
「協助工具檢視」中的「前往符號」
「協助工具說明」對話方塊和某些「協助工具檢視」現在具有「前往符號」 (⇧⌘O (Windows、Linux Ctrl+Shift+O)) 動作,以允許更快速地導覽內容。
執行後焦點放在終端機「協助工具緩衝區」
終端機現在有一個 terminal.integrated.focusAfterRun
設定,讓使用者可以指定在叫用「終端機:在作用中終端機中執行選取的文字」時,焦點應放在終端機的「協助工具緩衝區」(accessible-buffer
)、終端機本身 (terminal
) 還是不放任何焦點 (none
)。
工作台
內建連接埠轉送
VS Code 現在具有內建連接埠轉送系統。此功能可讓您透過網際網路將本機執行的服務分享給其他人和其他裝置。若要使用此功能,請選取面板區域中「連接埠」檢視中的「轉送連接埠」按鈕 (「連接埠:焦點放在連接埠檢視」)。
佈景主題:Codesong (在 vscode.dev 上預覽)
請參閱 連接埠轉送 使用者指南,以深入了解連接埠轉送。
預設開啟命令中心
命令中心在幾個月前推出,作為快速探索和與 VS Code 互動的方式。您可以將其用作啟動板,以在「命令面板」中尋找命令、執行工作和其他快速體驗。我們一直在執行一項實驗,在標題列中顯示命令中心,並獲得了正面回饋,因此我們認為現在是預設啟用它的時候了。
以下是使用命令中心以及返回和前進按鈕的影片。
我們看到命令中心有巨大的潛力成為在 VS Code 中尋找任何事物的中心,因此請留意未來更多的改進!
注意:如果您不希望命令中心可見,您可以按一下滑鼠右鍵標題列,然後取消選取下拉式選單中的「命令中心」項目以隱藏它。
控制釘選的編輯器如何從鍵盤或滑鼠關閉
有一個新的設定 workbench.editor.preventPinnedEditorClose
,可更精確地控制釘選的分頁如何回應鍵盤快速鍵或滑鼠中鍵以關閉編輯器。預設情況下,釘選的分頁不會因鍵盤或滑鼠互動而關閉 (預設值為 keyboardAndMouse
)。您可以據此變更此設定
keyboardAndMouse
- 釘選的分頁不會因鍵盤快速鍵或滑鼠中鍵而關閉 (自1.82.x
以來的預設值)。keyboard
- 釘選的分頁不會透過鍵盤快速鍵關閉 (1.81.x
之前的預設值)。mouse
- 釘選的分頁不會透過滑鼠中鍵關閉。never
- 釘選的分頁將永遠透過鍵盤快速鍵或滑鼠中鍵關閉。
狀態列的新增和更新的可佈景主題色彩
狀態列已為其項目提供許多可佈景主題的色彩。現在有更多色彩可允許佈景主題化懸停前景和背景色彩
statusBarItem.errorHoverBackground
statusBarItem.errorHoverForeground
statusBarItem.warningHoverBackground
statusBarItem.warningHoverForeground
statusBarItem.remoteHoverBackground
statusBarItem.remoteHoverForeground
statusBarItem.offlineHoverBackground
statusBarItem.offlineHoverForeground
以下兩個色彩名稱已更新,因為該色彩不再適用於整個狀態列,而僅適用於遠端指示器
statusBar.offlineBackground
已重新命名為statusBarItem.offlineBackground
statusBar.offlineForeground
已重新命名為statusBarItem.offlineForeground
編輯器
固定捲動
此迭代對編輯器頂端的「固定捲動」UI 進行了多項改進 (「檢視:切換固定捲動」)。
- 現在,預設情況下,當編輯器水平捲軸捲動時,「固定捲動」會側向捲動。此功能可以透過停用
editor.stickyScroll.scrollWithEditor
來關閉。 - 可以透過按住
Shift
鍵並將滑鼠懸停在「固定捲動」行上來檢視範圍的最後一行。在按住Shift
鍵的同時按一下行,會將編輯器游標移動到範圍的最後一行。 - 摺疊圖示已新增至「固定捲動」邊界。這些圖示的轉譯遵循設定
editor.showFoldingControls
,該設定控制編輯器邊界中摺疊圖示的轉譯。
儲存時排序 JSON
現在可以在儲存時排序 JSON 或 JSONC (具有註解的 JSON) 檔案。使用設定 json.sortOnSave.enable
來啟用此功能。
透過鍵盤導覽程式碼動作和快速修正
您現在可以透過輸入與可用選單選項對應的任何關鍵字或字母,快速導覽「快速修正」、「程式碼動作」或「原始檔控制」選單 (它們使用「動作」控制項)。篩選器使用模糊比對,搜尋不限於第一個字母或前置字元,但也包含整個標籤文字。
差異編輯器
在此版本中,我們預設啟用了新的差異編輯器。我們也改進了一些新的差異編輯器功能,並修正了許多錯誤。
移動的程式碼偵測
此迭代我們改進了移動的程式碼偵測功能。可以使用 "diffEditor.experimental.showMoves": true
或在差異編輯器內容選單中啟用它。啟用後,會偵測到從同一個檔案中的一個位置移動到另一個位置的程式碼區塊,並繪製箭頭以指示程式碼區塊移動到的位置。
程式碼移動在稍作修改時也會偵測到。「比較」按鈕可用於比較移動前後的區塊。
摺疊未變更的程式碼標頭
使用 "diffEditor.hideUnchangedRegions.enabled": true
或選取編輯器內容選單中的地圖圖示,以啟用摺疊未變更的程式碼區塊。
在此版本中,現在有摺疊程式碼區塊的麵包屑,以指示哪些符號已摺疊。按一下麵包屑項目會顯示選取的項目
動態版面配置
如果差異編輯器的寬度太小,編輯器會自動切換為行內檢視。如果編輯器再次夠寬,則會還原先前的版面配置。設定 "diffEditor.useInlineViewWhenSpaceIsLimited": false
以停用此行為。
按鈕切換狀態
我們更新了差異編輯器中按鈕的切換樣式,使其更為可見。
舊的切換樣式 (未切換和已切換),其中未切換的按鈕較暗
,
新的切換樣式 (未切換和已切換),其中已切換的背景已著色
,
終端機
控制終端機如何在啟動時還原
新的設定 terminal.integrated.hideOnStartup
控制在應用程式啟動時是否自動建立終端機。以下選項可用
never
(預設):永遠不會在啟動時隱藏終端機檢視。whenEmpty
:僅在沒有還原的持續性工作階段時隱藏終端機。always
:永遠隱藏終端機,即使還原了持續性工作階段。
停用括號貼上模式
括號貼上模式是終端機中的一項功能,可將貼上的文字包裝在特殊序列中,以便 Shell 可以使用該資訊。開啟此功能的 Shell 旨在正確支援此功能,但可能有原因導致其失敗,此時您可能會在貼上時意外看到類似 [201~
的文字。現在可以明確停用此功能,即使 Shell 要求也停用該功能。
執行後終端機焦點設定
終端機現在有一個 terminal.integrated.focusAfterRun
設定,讓使用者可以指定在叫用「終端機:在作用中終端機中執行選取的文字」時,是否應將焦點放在終端機上。其他選項是將焦點放在終端機的「協助工具緩衝區」(accessible-buffer
) 或不放任何焦點 (none
)。
可調整大小的「尋找」
現在可以使用編輯器左側的 sash 來調整終端機「尋找」控制項的大小,與編輯器類似
當滑鼠懸停在 sash 上或拖曳 sash 以調整「尋找」控制項大小時,sash 會醒目提示。
停用 GPU 加速時更快的轉譯
由於 元件的重新撰寫,「DOM 轉譯器」(在停用 GPU 加速時使用) 的效能已大幅提升。重新撰寫的重點是減少使用的 DOM 元素數量,並且節省的空間隨著終端機越大而大幅增加。
在具有 117 欄和 36 列的終端機上測試典型的轉譯呼叫時,之前花了約 10 毫秒,之後花了約 2 毫秒。在測試機器上將終端機大小增加到 300x100 時,記錄到的轉譯時間之前約為 25-35 毫秒,之後約為 4-5 毫秒。
更好的選取轉譯
當 GPU 加速關閉時,選取轉譯現在與 webgl 轉譯器相同,並且所有背景都會變更為佈景主題的選取背景色彩,以確保良好的對比度和一致性。
尊重昏暗文字的最小對比度比率的一半
最小對比度比率功能允許終端機更精確地控制終端機中的前景色彩,以確保它們以特定的對比度比率顯示。此功能過去的一個問題是,昏暗文字 (CSI 2 m
) 也會尊重對比度比率,這表示它可能與一般文字一樣突出。PowerShell 的自動完成幽靈文字就是一個不相容的範例。
昏暗文字現在將具有一半的對比度要求。雖然這表示文字可能不再符合最小對比度比率,但它現在顯然與一般文字不同,這更為重要。
設定未聚焦時的游標外觀
現在可以使用 terminal.integrated.cursorStyleInactive
設定終端機中游標在未聚焦時的外觀。這支援現有 terminal.integrated.cursorStyle
的所有樣式,加上 outline
(預設) 和 none
。
改進的「終端機:開啟偵測到的連結」行為
「開啟偵測到的連結」命令 (⇧⌘G (Windows、Linux Ctrl+Shift+G)) 行為已變更為維持高效能,同時使其更容易在整個終端機緩衝區中搜尋連結。先前,它只會為可視區域及其上方一點點提供連結,並在結尾提供繁瑣的「顯示更多連結」按鈕,以搜尋緩衝區的其餘部分
現在可立即呈現可視區域中的連結,以便「快速選取」可以盡快顯示
一旦顯示「快速選取」,就會在背景中偵測終端機緩衝區其餘部分的連結。當輸入以篩選時,VS Code 會等待所有結果,並將其包含在篩選的結果中
請注意,直到輸入篩選器後,才包含 CodeQL.yml
,因為它在可視區域之外。
新的連結格式
現在在終端機中偵測到以下 GNU 樣式連結格式
sourcefile:lineno.column
sourcefile:line1-column1.column2
sourcefile:line1.column1-line2.column2
偵錯
JavaScript 偵錯工具
WebAssembly 偵錯
JavaScript 偵錯工具現在會自動將 WebAssembly 模組反編譯為 WebAssembly 文字格式,並允許您逐步執行並在反編譯的模組中設定中斷點。
佈景主題:Codesong (在 vscode.dev 上預覽)
原始碼地圖載入改進
在此版本中,我們對原始碼地圖的載入方式進行了許多改進
- 在某些常見情況下,例如使用
tsc
命令列編譯的應用程式中,原始碼地圖的載入速度提高了 3-5 倍。 - 現在支援來自 Vite 開發伺服器的熱模組重新載入。
- 現在可以從已驗證的端點自動載入原始碼地圖。
測試
改進的狀態區域
「測試」檢視中篩選方塊下方的「狀態區域」現在更簡潔,並且還提供可按一下的動作,以重新執行最近執行的測試。在按一下重新執行按鈕時按住 Alt 鍵,會改為偵錯這些測試。
支援在測試輸出中偵測連結
連結偵測現在在顯示「測試輸出」的終端機中執行。檔案名稱、路徑和 URI 現在可按一下。
改進的測試相關輸出體驗
測試擴充功能可以將主控台輸出與特定測試或位置關聯。先前,以這種方式建立的每個輸出都會在「測試結果」檢視中顯示為自己的項目,並在選取時在文字編輯器中開啟。
現在,它們會顯示在正確的終端機中,並且導覽至輸出訊息會開啟該測試輸出的終端機,並選取訊息。
筆記本
複製儲存格輸出
儲存格輸出選單現在包含將輸出複製到系統剪貼簿的選項。內容選單也可以用於影像輸出,方法是用滑鼠右鍵按一下影像並選取「複製輸出」命令。
佈景主題:Bearded Theme feat. Gold D Raynh (在 vscode.dev 上預覽)
語言
TypeScript 5.2
VS Code 現在隨附 TypeScript 5.2.2。此主要更新帶來了新的 TypeScript 語言功能、更佳的效能以及許多重要的改進和錯誤修正。您可以在 TypeScript 部落格上閱讀有關 TypeScript 5.2 的資訊。
移動到檔案重構
JavaScript 和 TypeScript 的「移動到檔案」重構可讓您將類別、函式或常數移動到現有檔案中。這也會自動更新對符號的所有參考,並視需要更新匯入
當您選取「移動到檔案」時,VS Code 會向您顯示目前 TypeScript 或 JavaScript 專案中所有檔案的清單。您可以開始輸入以快速篩選到您想要的檔案。
或者,您可以使用「選取現有檔案...」以使用一般檔案選取器選取檔案,或使用「輸入新的檔案路徑...」以指定應建立的新檔案。
行內變數重構
JavaScript 和 TypeScript 的「行內變數」重構會將變數的所有執行個體取代為其常數值。
當重寫現有程式碼時,此重構通常最有用。例如,當變數最終宣告然後立即傳回時,您可以使用行內變數來移除多餘的宣告並直接傳回值
function add(a, b) {
const result = a + b;
return result;
}
在 result
上執行 inline variable
之後
function add(a, b) {
return a + b;
}
可按一下的參數提示
您現在可以按一下參數提示,以快速跳至參數宣告。在使用以下項目開啟行內提示之後
"editor.inlayHints.enabled": "on",
"typescript.inlayHints.parameterNames.enabled": "all",
"javascript.inlayHints.parameterNames.enabled": "all"
按住 Ctrl/Cmd
並按一下參數名稱以跳至該參數的宣告
我們計劃在即將發行的版本中為其他 JavaScript 和 TypeScript 行內提示啟用「前往定義」。
遠端開發
遠端開發擴充功能可讓您使用 開發容器、透過 SSH 或 遠端通道的遠端機器,或 Windows Subsystem for Linux (WSL) 作為功能完整的開發環境。
重點包括
- 更佳的「遠端 - 通道」連線可靠性。
- 新的「在 WSL 中安裝 Docker」命令。
- 預先組建開發容器教學指南。
您可以在 遠端開發版本資訊中了解新的擴充功能功能和錯誤修正。
擴充功能貢獻
GitHub Copilot
從「聊天」檢視建立工作區
您現在可以使用 /createWorkspace
,從 GitHub Copilot Chat 擴充功能穩定組建中的自然語言描述建立工作區。
我們也進行了以下改進
- 建議的工作區現在在聊天回應中轉譯為檔案樹狀結構。
- 您可以按一下檔案以在編輯器中開啟唯讀預覽。
- 如果 Copilot 的初始建議不太正確,您可以提出後續問題以協助 Copilot 迭代和改進。
從未命名的編輯器開始使用行內聊天進行程式碼撰寫
當您開啟未命名的文字編輯器時,現在有一個提示說明如何透過 ⌘I (Windows、Linux Ctrl+I) 啟動行內聊天工作階段。螢幕閱讀器使用者可以聽到此提示,並選擇使用 accessibility.verbosity.untitledHint
設定停用它。
「快速聊天」的改進
我們在幾個月前推出了「快速聊天」,並且一直在快速迭代,以提供感覺專為 VS Code 設計的體驗。
此迭代的重點
- 更精簡的 UX。
- 當焦點遺失時,「快速聊天」現在保持開啟。
- Sash 和「捲動以成長」行為可調整視窗大小。
- 命令中心中現在有「開啟快速聊天」。
總體而言,UX 更精簡,以與其他「快速開啟」體驗 (例如「命令面板」) 對齊 (到處都是較少的填補、使用者和 Copilot 圖示較小、按鈕是行內而不是在標題列中)。
預設情況下,當您提出問題時,「快速聊天」會調整大小以專注於該問題和答案,以最大程度地減少螢幕空間。我們也認為這有助於專注於您可能想要詢問 Copilot 的那些快速問題。您的對話記錄仍然可用,您可以向上捲動以回到過去。
由於這種動態高度,我們也想要提供一種調整視窗大小的方式,如果您需要更多或更少的空間。有兩個選項可以調整視窗大小。第一個是我們所謂的「捲動以成長」。如果您的「快速聊天」視窗由於答案很小而很小,但您想要查看先前的長答案,則當您向上捲動時,「快速聊天」會成長到最大高度。
可以透過執行下列其中一項操作,將「快速聊天」的高度重設回僅顯示最後一個問題和答案
- 關閉「快速聊天」並等待 30 秒。
- 提出另一個問題或執行
/clear
(請記住,/clear
會永久清除您的聊天記錄)。 - 按兩下底部 sash。
說到 sash... 我們在「快速聊天」底部也有一個 sash,可用於手動調整「快速聊天」的高度。當您使用 sash 時,您會選擇退出預設的動態行為,並表示「我希望此高度固定在此處,直到重設為止。」
注意:如果您想要回到動態行為,請按兩下 sash 或在聊天中輸入
/clear
(/clear
會清除您的聊天記錄)。
最後但並非最不重要的一點,您可以從命令中心使用「開啟快速聊天」選項啟動「快速聊天」。
說明終端機選取範圍
Copilot 現在能夠說明目前的終端機選取範圍,方法是在終端機的內容選單中選取「Copilot:說明此項」(滑鼠右鍵
或 Shift
+ 滑鼠右鍵
,取決於平台)。
「Copilot:說明此項」命令會開啟「聊天」檢視,Copilot 將在其中傳回詳細說明。
設定的自然語言搜尋
「設定」編輯器現在允許使用 GitHub Copilot Chat 進行自然語言搜尋。
自然語言搜尋結果目前放置在關鍵字比對結果下方,並依遞減相似度分數排序,但我們計劃在下個月修正排序,以便搜尋結果繼續依其目錄群組排列。
自然語言搜尋目前依賴 Copilot 嵌入。因此,在 GitHub Copilot Chat 擴充功能啟動後幾秒鐘內,也就是在嵌入變得可用之前進行的搜尋,「設定」編輯器中不會顯示自然語言搜尋結果。
佈景主題:Light Pink (在 vscode.dev 上預覽)
Python
新的 Python 格式化文章
有一個關於 Python 格式化的新專題文章,您將在其中學習如何設定預設格式化工具,例如 autopep8 或 Black,並透過各種設定自訂它。
使用環境變數的終端機啟用
Python 擴充功能現在具有新的啟用機制,可在終端機中啟用選取的環境,而無需執行任何明確的啟用命令。本月,我們開始將其作為實驗推出,使其成為預設體驗。使用新的方法,我們使用環境變數來啟用終端機,這是在終端機啟動時隱含完成的,因此可以更快,特別是對於 conda 環境。您可以新增以下使用者設定:"python.experiments.optInto": ["pythonTerminalEnvVarActivation"]
來試用它。
如果您對此實驗有任何意見或建議,請隨時在 vscode-python 問題 #11039 中分享。
重新建立或使用現有的 .venv 環境
當在已經包含 .venv
資料夾的工作區中工作時,「Python:建立環境」命令已更新選項,可選擇重新建立或使用現有的環境。如果您決定重新建立環境,則會刪除目前的 .venv
,讓您可以重新建立名為 .venv
的新環境。然後,您可以依照「Python:建立環境」流程選取您偏好的解譯器並指定任何相依性檔案以進行安裝,來自訂此新環境。如果無法刪除環境 (例如,由於環境處於作用中狀態),系統會提示您手動刪除環境。
或者,如果您選擇使用現有的環境,則會為您的工作區選取該環境。
預覽功能
快速存取文字搜尋
我們正在實驗在「快速存取」選單中顯示工作區搜尋結果。若要試用此功能,請執行「搜尋:快速文字搜尋 (實驗性)」。此命令會設定「快速開啟」以接受搜尋查詢。輸入一些文字以查看來自不同工作區檔案的比對項目。
使未聚焦的編輯器和終端機變暗
有一個新的實驗性功能可以使目前未聚焦的編輯器和終端機變暗。此功能的目標是讓文字將要前往的位置比典型的閃爍游標更清晰。
上圖顯示了啟用「使未聚焦的功能變暗」功能,且不透明度設定為 0.5,以便更清楚地顯示 terminalService.ts
的編輯器具有焦點。
可以使用 accessibility.dimUnfocused.enabled
啟用此功能,而變暗量則由 accessibility.dimUnfocused.opacity
控制。
此功能僅涵蓋目前的編輯器和終端機,但計劃將其擴展到 允許使用者自行設定他們想要變暗的檢視。
擴充功能撰寫
支援批次範圍格式化
DocumentRangeFormattingEditProvider
API 現在支援批次格式化。這表示擴充功能可以選擇性地向編輯器發出訊號,表示它支援一次呼叫多個範圍。這有助於減少對格式化提供者的呼叫次數,從而提高效能。
若要選擇加入批次格式化,提供者必須實作新的選擇性函式:provideDocumentRangesFormattingEdits。
EnvironmentVariableCollection 的範圍設定為工作區資料夾
EnvironmentVariableCollection
API 現在支援建立新的集合,其範圍設定為特定的工作區資料夾,並且將與「全域」集合一起套用。
// Get a scoped collection for the first workspace folder
const scoped = context.environmentVariableCollection.getScoped({
workspaceFolder: workspace.workspaceFolders[0]
});
scoped.replace('SCOPED', '1');
// Only terminals created in the first workspace folder will have SCOPED=1 set
Python 擴充功能使用此機制來設定不同的虛擬環境,具體取決於終端機在多根工作區中屬於哪個資料夾。
設定 EnvironmentVariableMutator 何時套用
EnvironmentVariableCollection
API 現在能夠在 Shell 整合指令碼內套用變更,該指令碼將在 Shell 初始化指令碼之後執行。這僅在啟用 Shell 整合時才有效,因此如果變更至關重要,則可以在 Shell 建立時和 Shell 整合內部套用變更
context.environmentVariableCollection.prepend('PATH', '/my/custom/path', {
applyAtProcessCreation: true,
applyAtShellIntegration: true
});
當相關變數可能會被 Shell 初始化指令碼變更時,此功能很有用。
建議的 API
每個里程碑都附帶新的建議 API,擴充功能作者可以試用它們。與往常一樣,我們希望收到您的意見反應。以下是試用建議 API 的步驟
- 尋找您想要試用的建議,並將其名稱新增至
package.json#enabledApiProposals
。 - 使用最新的 @vscode/dts 並執行
npx @vscode/dts dev
。它會將對應的d.ts
檔案下載到您的工作區。 - 您現在可以針對建議進行程式設計。
您無法發佈使用建議 API 的擴充功能。下一個版本中可能會出現重大變更,而且我們絕不希望破壞現有的擴充功能。
TestMessage 和貢獻點上的 contextValue
您可以在 TestMessage
上提供 contextValue
,以便在使用者對這些訊息採取動作時顯示。此外,還新增了兩個選單貢獻點:testing/message/context
和 testing/message/content
。前者顯示在「測試結果」樹狀檢視中的訊息上,後者顯示在編輯器中訊息的上方。
請參閱issue #190277,以深入瞭解 contextValue
。
終端機內容選單貢獻
目前正在提案兩個新的選單,讓擴充功能能夠將它們自己的內容選單動作整合到終端機中
terminal/context
- 終端機內容選單terminal/title/context
- 終端機索引標籤內容選單
監聽終端機命令執行
擴充功能長期以來一直要求能夠監聽終端機命令執行 API,目前已推出早期提案以供測試。此 API 是使用shell integration 實作,且僅會在已啟用並正常運作 shell integration 的終端機上觸發。
export interface TerminalExecutedCommand {
/**
* The {@link Terminal} the command was executed in.
*/
terminal: Terminal;
/**
* The full command line that was executed, including both the command and the arguments.
*/
commandLine: string | undefined;
/**
* The current working directory that was reported by the shell. This will be a {@link Uri}
* if the string reported by the shell can reliably be mapped to the connected machine.
*/
cwd: Uri | string | undefined;
/**
* The exit code reported by the shell.
*/
exitCode: number | undefined;
/**
* The output of the command when it has finished executing. This is the plain text shown in
* the terminal buffer and does not include raw escape sequences. Depending on the shell
* setup, this may include the command line as part of the output.
*/
output: string | undefined;
}
export namespace window {
/**
* An event that is emitted when a terminal with shell integration activated has completed
* executing a command.
*
* Note that this event will not fire if the executed command exits the shell, listen to
* {@link onDidCloseTerminal} to handle that case.
*/
export const onDidExecuteTerminalCommand: Event<TerminalExecutedCommand>;
}
此 API 的外觀並非最終版本,但基本概念將保持不變。
以下範例示範如何監聽任何成功的 git push
命令,並在擴充功能中觸發重新整理
const disposables = [];
disposables.push(
window.onDidExecuteTerminalCommand(command => {
if (command.commandLine.startsWith('git push') && command.exitCode === 0) {
refreshState();
}
})
);
function refreshState() {
/* ... */
}
終端機選取範圍存取
一個簡單的 API 提案,用於存取終端機選取範圍
export interface Terminal {
/**
* The selected text of the terminal or undefined if there is no selection.
*/
readonly selection: string | undefined;
}
此 API 很可能包含一個對應的變更事件,然後才會定案,且 API 名稱可能會變更,以更清楚地表明它是一個簡單的字串,而不是像 TextEditor.selection
那樣基於 Range
。
終端機快速修復進度
終端機快速修復提案現在可以觸發一般的 VS Code 命令,而不是終端機命令。此變更也導致必須變更終端機命令介面名稱
export interface TerminalQuickFixProvider {
/**
* Provides terminal quick fixes
* @param commandMatchResult The command match result for which to provide quick fixes
* @param token A cancellation token indicating the result is no longer needed
* @return Terminal quick fix(es) if any
*/
provideTerminalQuickFixes(
commandMatchResult: TerminalCommandMatchResult,
token: CancellationToken
): ProviderResult<
SingleOrMany<TerminalQuickFixExecuteTerminalCommand | TerminalQuickFixOpener | Command>
>;
}
export class TerminalQuickFixExecuteTerminalCommand {
/**
* The terminal command to run
*/
terminalCommand: string;
constructor(terminalCommand: string);
}
工程
Electron 25 更新
在此里程碑中,我們正在將 Electron 25 更新推廣給我們的穩定使用者。此更新包含 Chromium 114.0.5735.289
和 Node.js 18.15.0
。我們要感謝所有在 Insiders 組建上進行自我託管並提供早期意見反應的使用者。
Node.js 的更新重點
我們桌面應用程式中捆綁的 Node.js 和與我們的伺服器捆綁在一起的獨立可執行檔已從 v16 更新為 v18。鑑於這是一個主要版本升級,因此有一些行為和相容性變更
-
來自作業系統的 DNS 結果順序不再排序。我們已將
--dns-result-order=ipv4first
新增至本機和伺服器情境中的擴充功能主機,以避免中斷可能尚未採用此變更的擴充功能。展望未來,我們建議擴充功能在socket.connect
API 中使用 autoSelectFamily 選項,以適應結果順序變更。 -
來自 官方 Node.js 儲存庫的 Linux 預先建置二進位檔現在與基於 glibc 2.28 或更高版本的 Linux 發行版相容。這表示我們的伺服器將不再支援 Ubuntu 18、CentOS 7、RHEL 7 等。我們現在正在為我們的 Linux 伺服器運送 Node.js 的自訂組建,以維持 glibc 2.17 或更高版本的相容性。當我們不再能夠在 CentOS 7 映像上建置較新版本的 Node.js 時,此支援將在未來的更新中變更,因此我們建議受此變更影響的伺服器使用者更新其作業系統版本。
Chromium 的更新重點
- 在 Mesa 版本更新後,Chromium shader 編譯可能會損壞,導致應用程式 UI 中出現瑕疵。此問題已在 issue #190437 中追蹤,其中也包含 Chromium 錯誤報告的連結。您可以透過使用
--verbose
執行並在記錄中尋找以下行ERROR:shared_context_state.cc(81)] Skia shader compilation error
來識別此問題。如果您受到此問題影響,目前的解決方法是刪除位於~/.config/Code/GPUCache
的 GPU 快取。 - 當 Chromium 對 webgl 使用 SwiftShader 後端時,似乎已降低我們整合式終端機在 Windows 和 Linux 上的效能。作為一種解決方法,我們會根據
GL_RENDERER
字串偵測受影響的使用者,並將終端機切換到 DOM 後端。其他詳細資訊可以在 issue #190195 中找到,其中也包含 Chromium 錯誤報告的連結。
感謝
最後但同樣重要的是,衷心感謝 VS Code 的貢獻者。
問題追蹤
對我們的問題追蹤的貢獻
- @gjsjohnmurray (John Murray)
- @IllusionMH (Andrii Dieiev)
- @starball5 (starball)
- @ArturoDent (ArturoDent)
- @rperez030 (Roberto Perez)
提取要求
對 vscode
的貢獻
- @0o001 (Mustafa Ateş Uzun):修正:本地化字串錯字 PR #191046
- @alphacoma18 (Alpha Romer Coma):修正 markdown 檔案中支援的 markdown-lint 違規 PR #190750
- @andyleejordan (Andy Jordan):保護
$IsWindows
PR #190192 - @bandantonio (Antonio):修正:將遺失的定價參數新增至 manifest 結構描述 PR #190293
- @ChaseKnowlden (Chase Knowlden):在視窗標題中附加焦點檢視 PR #190216
- @davedash (Dave Dash):Fish 整合:在字串中使用 -- 來表示位置的開頭… PR #189994
- @demccormack (Daniel McCormack):修正在使用 set -u 時的 zsh 和 bash shell 整合 PR #185425
- @floge07:修正:允許底線作為通道遠端位址中的有效字元 PR #190904
- @gjsjohnmurray (John Murray):修正最近損壞的過時 (已取代) 擴充功能資料夾清除 PR #189335
- @greenie (Joe Green):修正捲動至頂端按鈕色彩一致性 PR #191034
- @hrkw00 (Ryosuke Hirakawa):修正 standaloneLanguages.ts 中的註解錯字 PR #189449
- @hsfzxjy (hsfzxjy)
- 新增內容金鑰 notebookEditorCursorAtLineBoundary PR #187679
- 永遠尊重 getMultiSelectedEditorContexts 中的非空選取範圍 PR #187704
- 確保 TestResultsViewContent.reveal 的並行安全性 PR #189756
- 讓 CommentThread 可使用 Ctrl+方向鍵導覽 PR #189913
- 修正設定清單溢位 PR #190721
- 修正 Markdown 預覽中的巢狀清單樣式 PR #190936
- @jeanp413 (Jean Pierre)
- 修正在重新連線到 Codespace 時,未針對已設定的預設 shell 使用接續 PR #181832
- 修正可用連接埠快速修復在 Windows 上無法運作的問題 PR #190900
- @kfrederix (Karel Frederix):在 requestAnimationFrame() 中包裝調整大小觀察器的處理常式 PR #183325
- @kon72 (Kon):新增用於摺疊/顯示所有未變更區域的命令 PR #190451
- @lucasMarioza:確保在 colorizeElement 上將樣式元素新增至 shadowDOM 元件 PR #190505
- @neeleshb (Neelesh Bodas)
- 為擴充功能的裝飾性影像新增空白的替代文字 PR #190607
- 從標題列移除不正確的角色。 PR #190608
- @rehmsen (Ole):提高網頁與 electron 的捷徑一致性。 PR #191061
- @SevenOutman (Doma):將「查看呼叫階層」和「查看類型階層」動作新增至命令面板 PR #189607
- @songlinn:修正:防止在撰寫事件中顯示上一個/下一個歷史記錄 PR #184014
- @timar07 (Timothy):修正:xterm 快速修復出現在錯誤的位置 #169162 PR #188693
- @Timmmm (Tim Hutt)
- 更新開發容器 Node 版本 PR #190346
- 支援 . 作為終端機連結偵測器中的列:行分隔符號 PR #190351
- @tisilent (YAYA 刘玉婷)
- 修正:終端機尋找小工具調整 PR #179398
- 在顯示 TerminalFind 時使用選取的值尋找 PR #190466
- @troy351:listWidget:移除多餘的邏輯 PR #191054
- @weartist (Hans)
- 修正 #185343 PR #185421
- 新增設定以防止在使用滑鼠中鍵點擊時關閉釘選的索引標籤 (修正 #115734) PR #188592
- 修正:#188760 PR #189259
- 修正:#188751 PR #189616
- 支援點擊「隱藏行」文字以展開 #186406 PR #189657
- 在檔案包含/排除 te… 中按下 Enter 鍵後立即搜尋 PR #190473
- 為快速開啟標題列按鈕新增自訂 hover PR #191416
- @zardoy (Vitaly):typescript 更好的路徑比對,用於移動到現有檔案快速選擇 PR #181231
對 vscode-css-languageservice
的貢獻
- @bentorkington:修正對已棄用方法的參考 PR #359
對 vscode-hexeditor
的貢獻
對 vscode-js-debug
的貢獻
- @sunilsurana (Sunil Surana):透過檢查 .map 檔案是否存在來加速 sourcemap 查閱 PR #1780
對 vscode-pull-request-github
的貢獻
- @tobbbe (Tobbe):從標題中清理斜線 PR #5149
對 vscode-vsce
的貢獻