2022 年 10 月 (版本 1.73)
更新 1.73.1:此更新解決了這些 問題。
下載:Windows:x64 Arm64 | Mac:通用 Intel Silicon | Linux:deb rpm tarball Arm snap
歡迎使用 2022 年 10 月發行的 Visual Studio Code。此版本有許多更新,我們希望您會喜歡,其中一些主要重點包括
- 搜尋包含/排除資料夾 - 快速設定要在樹狀檢視中包含/排除的資料夾。
- 命令中心模式捷徑 - 在最近使用的檔案清單之前顯示常用的模式。
- 合併編輯器改進 - 存取「合併組合」選項以自動合併衝突。
- Markdown 自動連結更新 - 在重新命名/移動時更新檔案和影像連結。
- 更多音訊提示 - 工作已完成或失敗、終端機快速修復可用。
- vscode.dev 受保護分支工作流程 - 提交至受保護分支時建立新分支。
- 新的 Python 擴充功能 - 用於 isort、Pylint 和 Flake8 的新獨立擴充功能。
- 開發容器範本 - 根據現有範本建立新的開發容器。
如果您想在線上閱讀這些版本資訊,請前往 更新,網址為 code.visualstudio.com。
Insiders: 想要盡快試用新功能嗎?您可以下載每夜建置的 Insiders 版本,並在最新更新可用時立即試用。
協助工具
新的音訊提示
有新的 音訊提示 可協助處理工作和終端機。
- 工作已完成 - 表示工作已完成的聲音(由
audioCues.taskCompleted
設定控制)。 - 工作失敗 - 工作失敗時發出的聲音 (
audioCues.taskFailed
)。 - 終端機快速修復 - 如果目前行上有可用的快速修復 (
audioCues.terminalQuickFix
)。
螢幕閱讀器模式中的文字換行
當在 螢幕閱讀器模式 中執行 VS Code 時,文字換行已停用,以防止螢幕閱讀器體驗降級。此問題已修正,且可透過 editor.wordWrap
啟用。
協助工具設定標籤
現在提供 accessibility
標籤,以改善協助工具相關設定的可探索性。
偏好設定:開啟協助工具設定 命令會使用 @tag:accessibility
篩選器開啟設定編輯器。
工作台
從搜尋中包含和排除資料夾
當在搜尋檢視的結果樹狀檢視中按一下滑鼠右鍵時,內容功能表中現在有兩個新選項。
-
選取將搜尋限制於資料夾會將選取的資料夾路徑新增至要包含的檔案文字方塊。將路徑新增至此文字方塊會將搜尋結果限制為符合所列路徑或模式的結果。
佈景主題:GitHub 深色微光(在 vscode.dev 上預覽)
-
選取從搜尋中排除資料夾會將選取的資料夾路徑新增至要排除的檔案文字方塊。在此處新增路徑會排除任何符合所列路徑或模式的搜尋結果。
佈景主題:GitHub 深色微光(在 vscode.dev 上預覽)
命令中心模式捷徑
命令中心新增了一個頂端區段,讓您輕鬆探索如何導覽至檔案、執行命令等等。
此模式簡短清單也提供快速鍵提示,讓您可以直接跳至最常用的模式(例如前往檔案),而無需透過命令中心。
命令中心 UI 預設不會顯示在標題列中,但您可以透過視窗:命令中心 (window.commandCenter
) 設定啟用它,或在標題列上按一下滑鼠右鍵並勾選命令中心。
設定編輯器工作區信任和原則指示器
由於受限制模式工作區或由於在組織原則下管理而未套用的設定,現在使用指示器來顯示其狀態。使用者即使在受限制模式工作區中也可以讀取和寫入工作區設定(這始終可以使用 settings.json
檔案),但在計算要在受限制工作區中使用的設定最終值時,不會考慮工作區設定值。
預設淺色佈景主題也進行了一些調整,在指示器區域中具有更清晰的 codicon 呈現和更緊密的焦點邊界。
大綱預設摺疊狀態
有一個新的設定 outline.collapseItems
,可控制 大綱 檢視中項目的預設摺疊狀態。預設值為 false
,這表示大綱項目預設為展開。將其設定為 true
可讓大綱項目預設為摺疊。此設定可以針對每種語言設定,也適用於筆記本。
重新排列「檢視」功能表
在 VS Code 功能表的「檢視」功能表中,最後一個群組是越來越多的編輯器動作清單。為了平衡功能表的成長和功能,我們已將主要與外觀相關的項目移至外觀子功能表下。文字換行和黏性捲動選項已保留在功能表底部的原始位置。
佈景主題:GitHub 淺色預設(在 vscode.dev 上預覽)
輸入 UI 上的圓角
文字輸入、文字區域和下拉式清單現在都顯示圓角,以符合先前版本中套用至按鈕的相同樣式。
快速選取清單樣式更新
快速選取 UI 中使用的清單樣式已稍微重新整理,具有圓角和增加的左右邊界。
更新清單檢視的 codicon
平面清單和樹狀清單檢視現在使用更易讀的 codicon 來表示清單類型。
輔助側邊欄前景色彩
輔助側邊欄通常模仿主要側邊欄的佈景主題,但並非所有佈景主題金鑰都被正確擷取。輔助側邊欄現在正確使用 "sideBar.foreground"
佈景主題金鑰。
主要側邊欄在右側,包含 [檔案總管],輔助側邊欄在左側,包含 [大綱] 檢視,兩者都使用相同的粉紅色前景色彩。
佈景主題:GitHub 淺色預設(在 vscode.dev 上預覽)
不再有「摺疊範圍過多」通知
基於效能考量,我們將編輯器中顯示的摺疊範圍數目限制為 5000 個。限制可以透過設定 editor.foldingMaximumRegions
設定。當超出限制時,VS Code 過去會顯示通知。現在,狀態列中的語言狀態懸停會顯示該資訊。
預設摺疊提供者
通常,當某種語言有多個作用中的摺疊提供者時,VS Core 會嘗試合併結果。如果存在衝突範圍,則會捨棄某些範圍。此外,並非所有摺疊提供者都可以與其他提供者組合。
新的 editor.defaultFoldingProvider
設定可讓您選取要使用的摺疊提供者。提供者的名稱是貢獻它的擴充功能 ID ({發行者}.{擴充功能}
)。
以下範例將 (假設的) 擴充功能 aeschli.better-folding
中的摺疊提供者設定為 JavaScript 的預設值。
"[javascript]": {
"editor.defaultFoldingRangeProvider": "aeschli.better-folding"
}
設定每個輸出通道的記錄層級
您現在可以使用開發人員:設定記錄層級... 命令,設定每個記錄輸出通道的記錄層級。當您只想查看來自特定記錄輸出通道的更多記錄時,這非常有用。此命令會先顯示輸出通道清單,選取一個通道後,系統會提示您設定記錄層級。
您也可以從命令列設定每個擴充功能的記錄層級。當您想要查看來自特定擴充功能的更多記錄時,這非常有用。例如,下列腳本可讓您啟動 VS Code,並將 Git 擴充功能的記錄輸出通道的預設記錄層級設定為 debug
。
code --log vscode.git:debug
新的 list.collapseAllToFocus 樹狀檢視命令
新的命令 list.collapseAllToFocus
可讓您遞迴摺疊目前焦點所在的樹狀項目。當您想要摺疊不是根目錄的樹狀項目的所有子項目時,這非常有用。此命令沒有預設的按鍵繫結,但您可以透過鍵盤快速鍵編輯器新增自己的鍵盤快速鍵 (⌘K ⌘S (Windows、Linux Ctrl+K Ctrl+S))。
合併編輯器
在此里程碑中,我們繼續潤飾合併編輯器,此更新包含數個錯誤修正和一些新功能。
接受兩側會附加衝突
在此版本中,一律可以選取接受傳入和接受目前。當同時選取這兩個選項時,合併編輯器會附加對應的已變更行。
在下方簡短的影片中,RelativePattern
會匯入兩次,因為兩行都被接受
當可以在字元層級上解決衝突而沒有衝突時,會顯示合併組合選項,且可用於自動解決衝突。
在下方影片中,兩個符號都匯入到相同的匯入陳述式中
相對於基底的差異裝飾
當開啟基底檢視時,會在目前焦點側和基底之間顯示差異。此差異檢視可用於更好地了解傳入和目前中的變更。
差異演算法改進
合併編輯器的預設差異演算法已變更。新的差異演算法針對合併案例進行了最佳化。在常見情況下,區塊的數目會降到最低,且插入位置會最佳化。如果新的演算法造成問題,可以使用設定 "mergeEditor.diffAlgorithm": "smart"
切換回先前的演算法(預設值現在為 experimental
)。
下列螢幕擷取畫面示範了插入的改進。請注意,兩個差異都是正確的,但新行為更清楚地突顯了插入的文字
舊行為
新行為
新的差異演算法目前僅在合併編輯器中預設啟用。如果您希望一般差異編輯器也使用新的差異演算法,您可以設定 "diffEditor.diffAlgorithm": "experimental"
。
導覽通過衝突
您現在可以按一下衝突計數器,跳至下一個未處理的衝突
語言
Markdown 自動連結更新(在檔案重新命名/移動時)
是否厭倦在您移動或重新命名檔案時,不小心損壞 Markdown 中的連結或影像?試試看新的 markdown.updateLinksOnFileMove.enabled
設定!
啟用此新設定後,當在 VS Code 檔案總管中移動或重新命名檔案時,VS Code 會自動更新 Markdown 中的連結和影像
您可以使用 markdown.updateLinksOnFileMove.include
控制受影響的檔案類型。預設情況下,會針對所有 Markdown 檔案和常見的影像檔案格式啟用此設定。
Markdown 插入連結命令
新的 Markdown:在工作區中插入檔案連結 和 Markdown:從工作區插入影像 命令可讓您使用檔案選擇器快速將連結和影像插入 Markdown
請記住,這些命令只是將連結和影像新增至 Markdown 檔案的其中一種選項。您也可以使用 Markdown 路徑完成 來執行此操作,甚至可以從 VS Code 檔案總管拖放檔案以插入連結或影像。
Markdown 未使用和重複連結定義診斷
我們內建的 Markdown 驗證現在可以提醒您注意未使用或重複的 連結定義。您可以使用 markdown.validate.enabled
啟用此功能
如果您想要更精細地控制這些錯誤,您可以使用這些 markdown.validate
設定來停用這些錯誤 (ignore
) 或變更其嚴重性 (warning
、error
)
markdown.validate.duplicateLinkDefinitions.enabled
markdown.validate.unusedLinkDefinitions.enabled
還有一個快速修復可移除重複或未使用的連結定義。
Markdown 連結出現次數醒目提示
Markdown 中的連結出現次數醒目提示會顯示目前文件中游標下的連結所使用的所有位置
請注意,當游標位於文件中的第一個連結時,文件中以及文件右側裝訂邊中的所有 First Header
連結以及標題本身都會醒目提示。
此功能預設為關閉。若要啟用此功能,請開啟 markdown.occurrencesHighlight.enabled
設定。
新的 Razor 語法醒目提示文法
VS Code 有一個新的、維護更好的 Razor 文法,用於醒目提示 Razor 檔案的語法。新的文法會積極維護,並修正舊文法中存在的問題。
Web 版 VS Code
改進的分支建立和保護工作流程
當您在 Web 版 VS Code 上的 GitHub 或 Azure Repos 存放庫中時,提交至受保護的分支現在會通知您目前分支受到保護,並提示您建立新分支。
此流程也會遵循下列設定
git.branchPrefix
可讓您使用設定的前置詞預先填入分支名稱快速輸入。"git.branchProtectionPrompt": "alwaysCommitToNewBranch"
可讓您在嘗試提交至受保護的分支時略過提示,並直接前往用於建立新分支的快速輸入。
此外,當您建立新分支時,您可以設定 "remoteHub.switchToCreatedBranch": "always"
來略過關於是否切換至新建立分支的提示。
當在桌面版 VS Code 上使用 GitHub 存放庫 或 Azure Repos 擴充功能時,上述所有項目也適用。
Web 中的當地語系化改進
幾個月前,我們開始致力於 Web 版 VS Code 的當地語系化。到目前為止,VS Code 核心和擴充功能(在其擴充功能資訊清單中具有靜態宣告的字串)都能夠進行當地語系化。在此反覆運算中,我們已完成最後一塊拼圖:擴充功能程式碼中的字串。這是因為我們上個月建議的當地語系化 API 已最終確定而完成的。
請注意,隨著我們繼續在所有擴充功能中採用此新 API,VS Code 將變得更加當地語系化。如果您是擴充功能作者,您可以在 vscode-l10n 存放庫 中深入了解新的 API。
擴充功能貢獻
Python
移轉至 isort 擴充功能
在我們的 2022 年 5 月 版本 中,我們宣布推出新的 isort 擴充功能,可與 Python 擴充功能搭配使用以排序匯入。例如,當您開啟檔案且匯入不符合 isort 標準時,它會顯示錯誤診斷,並提供程式碼動作來修正匯入順序。在此版本中,我們正在移轉為使用獨立 isort 擴充功能,而不是 Python 擴充功能中內建的 isort 支援,方法是與 Python 擴充功能一起自動安裝它。
使用 Pylance 時,自動匯入預設為關閉
自從在 Pylance 中首次實作自動匯入以來,我們收到了許多關於自動匯入有多混淆,以及有時有多煩人的意見反應,例如,當意外接受建議時,會將匯入自動新增至檔案。從此版本開始,使用 Pylance 時,預設不再自動匯入套件。如果您想要重新啟用 Python 專案的自動匯入,您可以透過設定 "python.analysis.autoImportCompletions": true
來執行此操作。
Pylint 和 Flake8 擴充功能建議
在我們的 先前 版本 中,我們宣布推出新的 Pylint 和 Flake8 擴充功能,這些擴充功能與 Python 擴充功能透過 語言伺服器協定 (LSP) 協同運作,以提供程式碼檢查。在此版本中,如果您仍在使用 Python 擴充功能中內建的 Pylint 和 Flake8 功能,我們會顯示通知,提示您安裝這些新的擴充功能。
遠端開發
遠端開發擴充功能可讓您使用容器、遠端電腦或 Windows Subsystem for Linux (WSL) 作為功能完整的開發環境。此版本的重點包括
您可以在 遠端開發版本資訊中了解新的擴充功能功能和錯誤修正。
GitHub Pull Requests 和 Issues
持續開發 GitHub Pull Requests 和 Issues 擴充功能,可讓您處理、建立和管理提取要求和問題。查看擴充功能 0.54.0 版本的變更記錄,以查看其他重點。
預覽功能
TypeScript 4.9
此更新包含對即將推出的 TypeScript 4.9 版本的支援。請參閱 TypeScript 4.9 反覆運算計畫,以深入了解 TypeScript 團隊目前正在進行的工作。一些編輯器工具重點
- 新的排序匯入命令,可排序匯入,而不會移除未使用的匯入。
- 在 return 陳述式上執行前往定義 現在會跳至函式宣告。
- 切換至 新的預設檔案監看程式,這應該會有更好的效能。
若要開始使用 TypeScript 4.9 每夜建置版本,請安裝 TypeScript Nightly 擴充功能。
設定設定檔
我們在過去幾個月中一直致力於在 VS Code 中支援設定設定檔,這是社群中最受歡迎的要求之一。此功能可透過 workbench.experimental.settingsProfiles.enabled
設定預覽。試用看看,並在 vscode 存放庫 中建立問題或在 問題 #116740 中留言,向我們提供您的意見反應。
顯示同步設定檔資料
您現在可以在同步活動 (遠端) 檢視中查看每個設定檔同步的資料。這有助於了解每個設定檔同步的資料。
注意: 此功能目前僅在 VS Code 的 Insiders 版本中提供。
擴充功能撰寫
為工作區編輯提供中繼資料
現在用於套用工作區編輯的 API 可讓擴充功能提供中繼資料,例如將編輯標記為重構。編輯器和重構後自動儲存(設定:files.refactoring.autoSave
)將會遵循此額外中繼資料。
限制哪些命令可以由 MarkdownString 和 Web 檢視執行
MarkdownString
中的 命令連結是在 VS Code 的懸停訊息或 IntelliSense 詳細資料中建立自訂互動的實用方式。Web 檢視也可以使用命令連結,直接從 Web 檢視觸發 VS Code 命令。但是,命令連結也可能很危險,因為它們可用於執行任何命令,包括許多並非以安全性為考量而設計的命令。因此,命令連結預設為停用,而且必須由擴充功能明確啟用。
雖然這種全有或全無的方法有效,但我們也發現它將過多的安全性負擔放在擴充功能作者身上。需要使用命令連結的擴充功能必須驗證只有安全命令包含在其呈現的內容中。這既容易忘記,也容易出錯。
為了改善這一點,我們正在導入新的 API 以啟用命令連結,讓擴充功能能夠僅啟用受信任的命令子集。
對於 MarkdownString
,isTrusted
屬性現在採用可以執行的命令允許清單(所有其他命令都會被封鎖)
const md = new vscode.MarkdownString(
`A command link: [Open setting](command:workbench.action.openSettings)`
);
// Set trusted commands instead of enabling all commands
md.isTrusted = { enabledCommands: ['workbench.action.openSettings'] };
對於 Web 檢視,WebviewOptions.enableCommandUris
屬性現在可以是已啟用命令的清單,而不是簡單的 true/false
const options: vscode.WebviewOptions = {
enableCommandUris: ['workbench.action.openSettings']
};
我們強烈建議所有使用命令連結的擴充功能都採用此新的、更具限制性的 API 來提高安全性。
Web 檢視和 Web 檢視檢視的一致來源
為了縮短 Web 檢視 的載入時間,我們現在嘗試為給定類型的 Web 檢視的所有執行個體維護一致的來源。這有兩個主要優點
-
Web 檢視可以更好地利用快取。這表示本機資源應該載入得更快。
-
Web 檢視可以使用本機儲存空間和其他 Web API,這些 API 會依來源進行分割。
請記住,Web 檢視的所有執行個體現在都將在相同的來源上執行,因此如果它們正在使用本機儲存空間等 API,請務必分割每個資源的文件特定資料/狀態。例如,
localStorage.setItem('scrollPosition', 100)
會將所有 Web 檢視執行個體的scrollPosition
設定為 100。如果您想要設定個別資源的捲動位置,您也需要在金鑰中包含資源 ID:localStorage.setItem(myDocUri, JSON.stringify({scrollPosition: 100 }))
。您也絕不應使用 localStorage 或類似的 API 來儲存重要資料,例如文件內容。雖然 VS Code 會盡最大努力為 Web 檢視維護一致的來源,但我們無法保證來源不會變更。
在許多情況下,您應該使用 Web 檢視狀態 API,因為這些 API 會為您處理上述兩個問題。
來源是針對每個擴充功能和 Web 檢視類型隨機產生的。相同的來源用於 Web 檢視的所有執行個體。
目前,一般 Web 檢視 和 Web 檢視檢視 都嘗試維護一致的來源。我們計畫在下一個反覆運算中針對自訂編輯器和筆記本 Web 檢視採用此方法。
偵錯配接器協定
新的 'startDebugging' 反向要求
今天 VS Code 支援多個並行偵錯工作階段,但 偵錯配接器協定 (DAP) 僅涵蓋單一工作階段。這表示以程式設計方式建立新的偵錯工作階段不是 DAP 的一部分,而且只能在 DAP 或偵錯配接器外部完成,通常在包含偵錯配接器的偵錯擴充功能中。因此,非 VS Code DAP 用戶端無法輕易使用多工作階段功能(例如自動偵錯子進程),因為它們通常僅使用偵錯配接器,而不使用 VS Code 特定偵錯擴充功能。
為了改善這種情況,我們已將新的反向要求 startDebugging
新增至 DAP,讓擴充功能可以從偵錯配接器內部建立新的偵錯工作階段(與呼叫者類型相同)。用戶端功能 supportsStartDebuggingRequest
向偵錯配接器指示用戶端支援 startDebugging
。
在 10 月版本中,VS Code 已實作 startDebugging
。
建議的 API
每個里程碑都隨附新的建議 API,擴充功能作者可以試用。與往常一樣,我們希望收到您的意見反應。以下是試用建議 API 的步驟
- 尋找您想要試用的建議,並將其名稱新增至
package.json#enabledApiProposals
。 - 使用最新的 vscode-dts 並執行
vscode-dts dev
。它會將對應的d.ts
檔案下載到您的工作區。 - 您現在可以根據建議進行程式設計。
您無法發佈使用建議 API 的擴充功能。下一個版本中可能會出現重大變更,而且我們絕不希望破壞現有的擴充功能。
靜態筆記本預先載入
新的 notebookPreload
建議貢獻點可讓擴充功能貢獻載入到特定類型筆記本中的腳本。
{
"contributes": {
"notebookPreload": [
{
"type": "jupyter-notebook", // Type of notebook for the preload script
"entrypoint": "./path/to/preload.js"
}
]
}
}
此貢獻點由 contribNotebookStaticPreloads
API 建議控制。擴充功能可以使用預先載入在筆記本 JavaScript 環境中載入或定義全域變數。
預先載入腳本必須是匯出 activate
函式的 JavaScript 模組。所有預先載入都會在任何 轉譯器腳本 之前評估。
筆記本轉譯器可以存取所有輸出項目
自訂筆記本轉譯器現在可以存取其轉譯的輸出項目的所有 MIME 資料。如果轉譯器判斷它無法正確轉譯主要輸出項目,則此 API 建議可讓它回復為轉譯其他 MIME 類型之一。
此建議的進入點是新的 OutputItem._allOutputItems
屬性。此屬性是目前輸出項目包含的所有 MIME 類型的排序清單。清單中的每個項目都具有 { mime, getItem() }
的形狀。mime
是 MIME 類型,例如 text/html
或 image/png
,而 getItem()
函式會傳回該 MIME 類型的 OutputItem
的承諾。
以下是轉譯器如何使用此新 API
async function renderOutputItem(outputInfo, element, signal) {
const didRender = tryRenderMainItem(outputInfo, element);
if (!didRender) {
// Fallback to render `text/html`
const htmlItem = await outputInfo._allOutputItems
.find(item => item.mime === 'text/html')
?.getItem();
if (htmlItem) {
// Here we can either render the 'text/html' item ourselves
// or delegate to another renderer.
const renderer = await ctx.getRenderer('vscode.builtin-renderer');
if (renderer) {
return renderer.renderOutputItem(htmlItem, element, signal);
}
}
}
}
試用此建議,並讓我們知道您的想法!
擴充功能遙測 API
為了進一步推動遙測最佳做法,並增強擴充功能提供的遙測功能,此反覆運算引入了建議的 telemetryLogger
API。此 API 允許擴充功能提供 TelemetryAppender
,其充當核心傳送邏輯(實作時使用 Application Insights 或其他資料記錄服務)。然後使用此 TelemetryAppender
來具現化 TelemetryLogger
,這是您應該透過其記錄遙測的類別。
TelemetryLogger
提供共用的輸出通道以查看已傳送的遙測事件、適當的遙測設定檢查和個人識別資訊清除。此外,透過使用 VS Code API 擲回的任何錯誤都會記錄到您的附加器中,以獲得更好的錯誤診斷。
遙測範例中有一個簡單的範例,您可以在 問題 #160090 中提供意見反應。
記錄輸出通道
在上一個里程碑中,我們針對建立僅用於記錄的輸出通道引入了 LogOutputChannel
API 建議。在此反覆運算中,我們為其新增了 logLevel
屬性和 onDidChangeLogLevel
事件。logLevel
屬性代表輸出通道的目前記錄層級,而當輸出通道的記錄層級變更時,會觸發 onDidChangeLogLevel
事件。
/**
* A channel for containing log output.
*/
export interface LogOutputChannel extends OutputChannel {
/**
* The current log level of the channel.
* Defaults to application {@link env.logLevel application log level}.
*/
readonly logLevel: LogLevel;
/**
* An {@link Event} which fires when the log level of the channel changes.
*/
readonly onDidChangeLogLevel: Event<LogLevel>;
...
...
}
我們也將 logLevel
屬性和 onDidChangeLogLevel
事件新增至 env
命名空間,以代表應用程式的目前記錄層級,而當應用程式的記錄層級變更時,會觸發該事件。
export namespace env {
/**
* The current log level of the application.
*/
export const logLevel: LogLevel;
/**
* An {@link Event} which fires when the log level of the application changes.
*/
export const onDidChangeLogLevel: Event<LogLevel>;
}
工程
針對輸入延遲進行最佳化
隨著 VS Code 的規模越來越大,按下按鍵時的活動量也隨之增加。在此反覆運算中,我們退後一步,徹底調查當您在編輯器中輸入時究竟會發生什麼事,以及我們可以將哪些內容延遲到在螢幕上轉譯按鍵之後。此探索的主要成果是
- 已進行數項變更,以盡可能將更多工作延遲到在編輯器中轉譯按鍵之後。對此影響的粗略估計是在未顯示 IntelliSense 時,輸入延遲減少約 15%,而在重新篩選 IntelliSense 時,輸入延遲甚至會減少更多。
- 我們現在有更精細的技術,可手動測量輸入延遲,並在此次毫秒* 層級進行最佳化。
- 有一個進行中的變更將協助我們追蹤和報告輸入延遲範例。這將為我們提供一些具體的數字來維護和改進。
這只是此工作的開始,我們還有更多變更應該會在下一個版本中推出。
* 這些數字非常依賴於用於測試的硬體。在功能強大的硬體上改善 0.5 毫秒,在更普通的硬體上最終可能會變成 2 毫秒。
自動轉譯器分析
VS Code 的渲染器進程 (renderer-process) 負責其使用者介面 (UI);它確保游標閃爍、能夠輸入文字以及儲存檔案。渲染器進程中的任何效能問題都會對使用者可見,並導致不良的使用體驗。為了幫助我們識別和修復渲染器進程中的效能問題,我們新增了一個新的設定 application.experimental.rendererProfiling
,可用於自動分析渲染器進程的效能。此設定可以設為 on
以啟用效能分析,以及 off
以停用效能分析。啟用後,渲染器進程將在「看起來有壓力」時進行幾秒鐘的效能分析,然後分析效能資料、匿名化處理,並發送以供檢查。您可以使用視窗記錄來追蹤效能分析的過程。
請注意,此功能目前預設為關閉,因為我們仍在學習和調整中。請試用看看,並告訴我們您的想法。
Windows 11 關聯式選單
在此版本中,VS Code 安裝程式預設會為 Insiders 版本在 Windows 11 關聯式選單 中新增一個使用 Code - Insiders 開啟關聯式選單項目。對於先前在安裝 Insiders 版本時選擇加入關聯式選單的使用者,當更新到最新的 Insiders 版本時,舊式選單 Shift + F10
中顯示的項目將被替換為較新的項目。對於其他使用者,您需要重新安裝 Insiders 版本並在安裝精靈中選擇加入以啟用此選單項目。由於我們在開發選單項目時遇到了一些問題,我們計劃將此功能限制在 Insiders 版本幾個里程碑,以在將其推廣到所有 Windows 11 使用者的 Stable 穩定版本之前獲得信心。
然後,使用 Code Insiders 開啟動作將在 Windows 檔案總管的資料夾和檔案關聯式選單中提供。
值得注意的修正
- 151019 除錯懸浮視窗在滑鼠懸停時會隱藏
- 153852 提案:移除 ES5 Class 相容性以加速擴充功能 API
- 156104 如果連接埠已靜態轉發,則不要在點擊 URL 連結時自動轉發連接埠
- 158921 設定在其他地方修改指示器的懸浮內容溢出
感謝您
最後但同樣重要的是,衷心感謝 VS Code 的貢獻者。
Issue 追蹤
對我們的 Issue 追蹤的貢獻
- John Murray (@gjsjohnmurray)
- Simon Chan (@yume-chan)
- Andrii Dieiev (@IllusionMH)
- ArturoDent (@ArturoDent)
- RedCMD (@RedCMD)
對 vscode
的貢獻
- @andrewbranch (Andrew Branch): [typescript-language-features] 新增
removeUnusedImports
命令 PR #161654 - @babakks (Babak K. Shandiz): 🐛 修復未等待呼叫以顯示 CWD 選擇器 PR #163220
- @Balastrong (Leonardo Montini): 在空白檔案上貼上時自動偵測縮排 PR #156282
- @Brikaa (Omar Brikaa): 新增水平捲動的鍵盤快速鍵 PR #162992
- @CyrilOtheninGirard (Cyril OG): Bash shell 整合 -- 當 PROMPT_COMMAND 是陣列時,結束代碼不會還原 PR #158091
- @daiyam (Baptiste Augrain): feat: 選擇要使用的摺疊提供者 PR #157434
- @dsanders11 (David Sanders)
- 修復對不存在的
runTests
API 的參考 PR #162543 - 如果未比對的片段是 #top,則將 webview 捲動到頂部 PR #164070
- 修復對不存在的
- @dtivel (Damon Tivel): 新增擴充功能簽章驗證服務 PR #162285
- @gjsjohnmurray (John Murray)
- 新增
outline.collapseItems
並修復大綱意外摺疊的問題 (#_53262) PR #158650 - 參考屬性描述中的正確設定 (#_162663) PR #162665
- 新增
- @hughlilly (Hugh Lilly): 修復
src/vs/workbench/contrib/terminal/common/terminalConfiguration.ts
中描述裡的逗號拼接問題 PR #164401 - @jacekkopecky (Jacek Kopecký)
- 在要求儲存之前檢查未儲存的編輯器 PR #159318
- 解決游標位置錯誤的問題 PR #159325
- @jakebailey (Jake Bailey)
- 不要依賴 typescript protocol.d.ts PR #163365
- 移除對 typescript/lib/protocol 的遺忘參考 PR #163585
- 確保 'undefined' 不會進入 tsserver.web.js PR #164064
- @jannisspeer: 移除將 Snakefile 分類為 Python 的設定 PR #162749
- @jeanp413 (Jean Pierre)
- 修復分離終端機編輯器不會觸發 vscode.window.onDidCloseTerminal 事件的問題 PR #154546
- 修復如果還原簡單瀏覽器 webview,則不會重複使用的問題 PR #163389
- 修復停用 OSX 的特權連接埠的問題 PR #163890
- 修復樹狀結構項目標籤中的換行符號使標籤無法閱讀的問題 PR #163995
- 修復擴充功能停用按鈕在右側沒有邊框半徑的問題 PR #164109
- @joshaber (Josh Abernathy): 新增開啟預覽已啟用內容,第 2 部分 PR #163682
- @jsjoeio (Joe Previte): fix: 保留 process.execArgv PR #161853
- @laurentlb (Laurent Le Brun): 更新「功能貢獻」中的欄位名稱 PR #162844
- @marrej (Marcus Revaj): # 提供對 applyEdit() 的正確回應 PR #162430
- @mrienstra (Michael Rienstra): 強制執行 yarn 版本 PR #162610
- @mustard-mh (Huiwen): 修復 #161565 PR #161567
- @nikita-r (Nikita R.): 修改「WordPart」命令系列以符合 kebab-case (解決 #158667) PR #158672
- @pingren (Ping): 在 macOS 上為 monaco 編輯器啟用 user-select PR #156755
- @qingpeng9802 (Qingpeng Li): 解決
es5ClassCompat
效能問題 PR #155390 - @r3m0t (Tomer Chachamu)
- 允許擴充功能作者在 QuickPick/InputBox 中設定 valueSelection PR #157022
- 當擴充功能更新測試項目時,篩選測試樹狀結構 PR #162169
- @sean-mcmanus (Sean McManus): 更新 language-configuration.json PR #163182
- @stephen-ullom (Stephen Ullom): 修復命令中心交通號誌燈位置 PR #164246
- @StephenChips (Dongcai Huang): 修復 FreePortOutputRegex PR #162323
- @unm4ever (BK0717): 新增 __vsc_prior_prompt2 PR #156140
- @w1redch4d (Swapnadeep Som): 修復嵌入式程式碼中 html 樣式註解的問題 PR #160981
- @yamachig (yamachi): 修復自動包圍功能以開啟字元關閉的問題 PR #147187
- @yiliang114 (易良): fix: 關閉 #164414,修正透明傳輸資料夾 URI PR #164415
對 vscode-pull-request-github
的貢獻
- @hoontae24: feat: 為複製 head 連結的 github enterprise 新增 upstream 來源 PR #4028
- @Thomas1664: 檢查區段的 UI 修復 PR #4059
- @yin1999 (A1lo): fix: 為 ssh 協定 upstream 使用 ssh url PR #3853
對 vscode-dev-chrome-launcher
的貢獻
- @mirdaki: 新增選項以設定 stable 或 insiders build PR #20
- @infinitepower18 新增描述並修復擴充功能設定中的空白圖示 PR #18