2023 年 3 月 (版本 1.77)
更新 1.77.1:此更新解決了這些問題。
更新 1.77.2:此更新解決了這個安全問題。
更新 1.77.3:此更新解決了這些問題。
下載:Windows:x64 Arm64 | Mac:通用 Intel Apple 晶片 | Linux:deb rpm tarball Arm snap
歡迎使用 2023 年 3 月釋出的 Visual Studio Code。此版本中有許多我們希望您會喜歡的更新,其中一些主要亮點包括
- 輔助功能改進 - 懸停、通知和粘性滾動的新鍵盤快捷方式。
- 複製 GitHub 深層連結 - 從編輯器內部建立永久連結和 HEAD 連結。
- 儲存時格式化筆記本 - 在儲存時自動格式化筆記本單元格。
- TS/JS switch case 補全 - 快速填寫 TypeScript/JavaScript switch 語句。
- Python 移動符號重構 - 將 Python 符號移動到現有檔案或新檔案。
- 遠端隧道更新 - 重用現有隧道並快速從遠端過渡到桌面。
- Ruby 文件 - 瞭解 VS Code 對 Ruby 語言的支援。
- 預覽:擴充套件的 GitHub Copilot 整合 - 新的行內聊天和完整的 AI 聊天檢視。
如果您想線上閱讀這些發行說明,請訪問 code.visualstudio.com 上的更新頁面。
內測版:想盡快嘗試新功能?您可以下載每晚的內測版構建,並儘快嘗試最新的更新。
輔助功能
終端可訪問緩衝區改進
可訪問的終端緩衝區透過“終端:聚焦可訪問緩衝區”(⌥F2 (Windows Alt+F2, Linux Shift+Alt+F2))為螢幕閱讀器使用者提供對終端內容的訪問,現在會動態更新並保持活動狀態,直到使用 Escape 或 Tab 鍵結束會話。
當可訪問緩衝區在具有 shell 整合的終端中聚焦時,“轉到可訪問檢視中的符號”(⇧⌘O (Windows, Linux Ctrl+Shift+O))使終端命令之間的導航類似於使用“轉到編輯器中的符號...”導航編輯器的方式。
懸停控制元件導航
現在可以使用 up、down、home、end、page up 和 page down 鍵聚焦懸停控制元件並水平和垂直滾動。聚焦懸停控制元件的鍵盤快捷方式(⌘K ⌘I (Windows, Linux Ctrl+K Ctrl+I))與在主游標位置顯示懸停時使用的相同。
接受通知的主要操作
要接受通知的主要操作,使用者通常需要導航到通知中心。“通知:接受通知主要操作”(⇧⌘A (Windows, Linux Ctrl+Shift+A))會在不離開當前上下文的情況下執行主要操作。
粘性滾動導航
現在可以聚焦粘性滾動行並使用 up 和 down 鍵導航。您可以使用 Enter 鍵轉到選定的行。要聚焦粘性滾動,您可以從命令面板執行“聚焦粘性滾動”。透過“檢視:切換粘性滾動”命令啟用粘性滾動 UI。
工作臺
從編輯器行號槽複製 GitHub 深層連結
現在,在 GitHub 儲存庫中工作時,您可以從編輯器行號槽複製編輯器行或範圍的深層連結。
在 VS Code 桌面版中,要能夠從編輯器行號槽建立 GitHub 永久連結和 HEAD 連結,您需要安裝 GitHub Pull Requests and Issues 擴充套件。在 vscode.dev 中,GitHub 儲存庫的深層連結開箱即用。
這些操作也已新增到編輯器選項卡上下文選單和資源管理器上下文選單中的“共享”子選單。
按檔案內容推薦擴充套件
VS Code 現在可以根據檔案內容推薦擴充套件。例如,如果您開啟一個具有筆記本單元格語法的 Python 檔案,VS Code 會推薦 Jupyter 擴充套件以正確呈現和執行這些單元格。
為粘性滾動選擇預設提供程式
粘性滾動(檢視:切換粘性滾動)使用幾種不同的內容模型來建立其標題。現在可以選擇大綱提供程式模型、摺疊提供程式模型和縮排模型來確定要在粘性滾動 UI 中顯示的行。如果當前語言沒有模型可用,VS Code 會按上述順序回退到下一個模型。可以使用編輯器 > 粘性滾動:預設模型(editor.stickyScroll.defaultModel)更改最初使用的預設模型。
終端
改進的選項卡懸停
終端選項卡懸停現在顯示 shell 的程序 ID、完整的命令列以及改進的擴充套件環境變數貢獻檢視。

原始碼管理
遠端儲存庫中的 Git LFS 提交支援
在編輯 GitHub 和 Azure Repos 儲存庫時,您現在無需安裝 Git LFS 即可提交 LFS 跟蹤的檔案。要開始使用,請在 VS Code 桌面版上安裝 GitHub Repositories 或 Azure Repos 擴充套件,執行“開啟遠端儲存庫”命令開啟您的儲存庫,並使用原始碼管理檢視提交更改。這些擴充套件會解析您的 .gitattributes 配置,以確定您更改的檔案是否應提交到儲存庫提供商的 Git LFS 儲存。
要停用此行為,您可以設定 "githubRepositories.experimental.lfs.write.enabled": false 和 "azureRepos.experimental.lfs.write.enabled": false。
注意:尚不支援 VS Code for the Web (vscode.dev)。
三向合併編輯器文件
如果您還沒有嘗試使用三向合併編輯器來幫助解決合併衝突,請檢視原始碼管理文件中的三向合併編輯器部分。三向合併編輯器允許您同時檢視和選擇傳入更改和當前更改,預覽結果,甚至在進行任何更改之前檢視檔案的基礎版本。

不要錯過以三向合併編輯器為主角的 YouTube 影片 The EXTREMELY Helpful Guide to Merge Conflicts。
Notebook
儲存時格式化
您現在可以為筆記本啟用儲存時格式化。這會在您儲存筆記本時格式化整個筆記本。您可以透過將 notebook.formatOnSave.enabled 設定為 true 來啟用此功能。
預設啟用筆記本輸出中的查詢
當您在筆記本中開啟查詢控制元件時,它現在預設會在單元格輸入和輸出中搜索文字。您可以透過更改過濾器下拉選單中的選項來關閉此功能。
可滾動輸出區域
將 notebook.output.scrolling 設定為 true 後,超過 notebook.output.textLineLimit 的輸出和錯誤將呈現在可滾動區域內。
語言
TypeScript 5.0
VS Code 現在附帶 TypeScript 5.0.2。此主要更新帶來了新的 TypeScript 語言功能、改進的效能以及許多重要的改進和錯誤修復。您可以在 TypeScript 部落格上閱讀有關 TypeScript 5.0 的資訊。
JavaScript 和 TypeScript 的 switch case 補全
VS Code 現在可以幫助您為 JavaScript 或 TypeScript 中的字面量型別搭建 switch 語句腳手架
在 switch 語句內部鍵入 case 並接受 case ... 建議。這將自動插入此型別的所有值的 case。請注意,這僅在被切換的值是聯合型別或字面量型別時才有效。
Web 版 VS Code
.gitignore 支援
在此里程碑中,我們為 VS Code for the Web 中的 GitHub 和 Azure Repos 儲存庫添加了對 .gitignore 檔案的支援。在下面的影片中,透過 .gitignore 未跟蹤的檔案在資源管理器檢視中顯示為灰色,並且不會出現在原始碼管理檢視中。當使用 GitHub Repositories 或 Azure Repos 擴充套件遠端瀏覽 VS Code 桌面版上的儲存庫時,此功能也有效。
下面的短影片將 .pxt 資料夾新增到 .gitignore 以在原始碼管理檢視中隱藏包含的檔案。
遠端開發
遠端開發擴充套件允許您透過 SSH 或遠端隧道使用開發容器、遠端機器或適用於 Linux 的 Windows 子系統 (WSL) 作為功能齊全的開發環境。
開發容器允許您使用容器作為功能齊全的開發環境。開發容器規範旨在豐富現有格式,使其包含常見的開發設定、工具和配置,同時仍提供簡化的、非編排的單個容器選項。您可以在 Changelog 播客的第 529 集中瞭解有關開發容器和規範的更多資訊。
其他遠端開發亮點包括
- 遠端隧道 - 更好地重用現有隧道。
- 遠端隧道 - “繼續在 VS Code 桌面版中工作”命令可快速過渡到本地開發。
- 開發容器 - 更容易清理未使用的開發容器和卷。
您可以在 遠端開發發行說明中瞭解有關新擴充套件功能和錯誤修復的資訊。
擴充套件
擴充套件安裝不受簽名驗證失敗的阻礙
擴充套件簽名驗證錯誤地報告了少量有效擴充套件的錯誤,並阻止了它們的安裝。這些故障是由 VS Marketplace 和 VS Code 中的錯誤引起的,我們正在積極修復。為了解除擴充套件使用的阻礙,VS Code 將安裝擴充套件,即使簽名驗證失敗。一旦 VS Marketplace issue #619 修復,我們將在下一個穩定版本中重新啟用簽名驗證檢查。
對擴充套件的貢獻
Python
移動符號重構
感謝新的“移動符號到”程式碼操作,您現在可以更方便地使用 Pylance 重構 Python 程式碼!
要試用它,請在 Python 檔案上選擇一個符號並單擊出現的燈泡(⌘. (Windows, Linux Ctrl+.))。您可以將符號移動到現有檔案或新檔案。如果位置是新檔案,則會建立一個與您的符號同名的 Python 檔案。所有適用的匯入引用都會隨著符號移動自動更新。
從依賴檔案建立環境
當您開啟 requirements.txt 或 pyproject.toml 檔案時,編輯器中有一個新的“建立環境...”按鈕,它執行“Python:建立環境”命令,允許您建立新的虛擬環境並安裝列出的依賴項。

針對擴充套件作者的已定稿環境 API
Python 擴充套件的用於處理使用者機器上可用 Python 環境的 API 已定稿。擴充套件還可以使用 API 訪問 Python 擴充套件用於執行指令碼的選定環境路徑,或將其路徑更新為首選路徑。
API 用法示例位於 Python Environment APIs wiki 頁面中。我們還計劃在未來發佈一個 npm types 包,以便更容易跟蹤 Python 擴充套件 API 中的任何更改。
Jupyter
Python 環境的核心選擇器改進
核心選擇器現在會列出 conda 環境,即使其中未安裝 Python 執行時。
例如,如果使用諸如 conda create -n envML 之類的 CLI 建立新 conda 環境,則此新環境將顯示在“沒有 Python 的 Conda 環境”部分下的 Python 環境列表中。
當您選擇此類環境時,Python 執行時和必要的依賴項會自動安裝到環境中。

GitHub 拉取請求和議題
GitHub 拉取請求和問題擴充套件取得了更多進展,該擴充套件允許您處理、建立和管理拉取請求和問題。亮點包括
- 可以從“拉取請求”檢視在 vscode.dev 上開啟拉取請求。
- “建立拉取請求”檢視中有一個新設定用於檢查“自動合併”選項:
githubPullRequests.setAutoMerge。
檢視擴充套件 0.62.0 版本的變更日誌以檢視其他亮點。
GitHub Copilot
GitHub Copilot 是一個 AI 結對程式設計工具,可幫助您更快、更智慧地編寫程式碼。您可以使用 VS Code 中的 Copilot 擴充套件來生成程式碼、從生成的程式碼中學習,甚至配置編輯器。

我們很高興地宣佈預覽版更深入的 Copilot 整合到 VS Code 中。透過使用 GitHub Copilot Chat 擴充套件,您將能夠試用新功能,例如
- 行內建議: 當您在程式碼中工作時,Copilot 建議會出現在行內。
- 聊天檢視: 在 GitHub Copilot Chat 檢視中向 Copilot 尋求任何任務或問題的幫助。
- 行內聊天: 在編寫程式碼時與 Copilot 交談,在檔案中行內進行。
您可以要求 Copilot 查詢錯誤、解釋棘手的程式碼、建立測試,甚至詢問有關 VS Code 的問題。

您可以在 VS Code and GitHub Copilot 部落格文章中瞭解有關 VS Code 團隊使用 Copilot 的經驗和未來的資訊。您還可以閱讀 GitHub Copilot in VS Code 文章,瞭解有關在 VS Code 中使用 Copilot 的更多詳細資訊。
預覽功能
筆記本輸出的搜尋支援
上一個迭代中,我們引入了對開啟的筆記本中格式化筆記本內容的全域性搜尋,但僅適用於單元格和 Markdown 輸入。此迭代中,我們添加了對搜尋筆記本輸出的支援。當您開啟筆記本時,有一個切換按鈕允許您自定義要在筆記本中搜索的位置。啟用 search.experimental.notebookSearch 以試用此功能!
歡迎頁面上的遠端連線選擇器
歡迎頁面現在支援啟動列表中的實驗性遠端連線選擇器“連線到..”,以幫助您開始遠端連線(SSH、遠端隧道、GitHub Codespaces 等)。此功能預設停用,可以透過設定 workbench.remote.experimental.showStartListEntry 為 true 來啟用。
擴充套件創作
即將到來的 Electron 22 更新可能需要更改原生模組
我們計劃在下一個穩定版本中更新到 Electron 22。由於啟用了 V8 memory cage,這會對使用原生模組的擴充套件產生影響:不再允許指向外部(“off-heap”)記憶體的 ArrayBuffers。
我們計劃提供一個自定義記憶體分配器,以便未更新的原生模組仍能繼續工作,但仍然建議您審查分配外部記憶體的用法。請遵循 Electron 部落格文章中的建議來採用此更改。
已定稿的連續測試執行支援
對連續測試執行的支援已定稿。此 API 允許使用者向測試擴充套件指示他們希望“監視”測試並在進行更改時繼續執行它們。
const profile = ctrl.createRunProfile(/* ... */);
+profile.supportsContinuousRun = true;
function runHandler(request: vscode.TestRunRequest, cancellation: vscode.CancellationToken) {
+ if (request.continuous) {
+ startWatchingAndRunningTests(request);
+ }
// ...
}
新的 when 子句解析器
此 VS Code 版本包括一個新的 when 子句解析器,提供新功能(例如,對括號的支援)和更好的正確性,但規則也更嚴格。此版本還包括擴充套件清單檔案(package.json)中 when 子句的 linter,以確保它們的語法正確。我們鼓勵您檢查 when 子句是否可能因新解析器而中斷。此外,如果您在 when 子句中使用括號,您的擴充套件將與 VS Code 1.77 及更高版本相容。有關更改的更多資訊,請參閱 issue #175540。
原始碼管理輸入中的行內補全
原始碼管理輸入框現在支援行內補全

原始碼管理輸入框的文件語言識別符號是 scminput。
提議的 API
每個里程碑都會帶來新的提議 API,擴充套件作者可以嘗試這些 API。一如既往,我們希望得到您的反饋。以下是嘗試提議 API 的步驟
- 查詢您要嘗試的提議並將其名稱新增到
package.json#enabledApiProposals。 - 使用最新的 vscode-dts 並執行
vscode-dts dev。該命令會將相應的d.ts檔案下載到您的工作區。 - 您現在可以根據該提議進行程式設計。
您不能釋出使用提議 API 的擴充套件。下個版本中可能會有破壞性更改,我們絕不希望破壞現有擴充套件。
編輯器行號槽擬議上下文選單
editor/lineNumber/context 擬議選單錨定到編輯器行號槽和編輯器行號,提供了一種顯示與特定行相關的擴充套件操作的方法。
要在開發中試用此功能,請啟用 contribEditorLineNumberMenu API 提案。貢獻給此選單的操作會在命令引數中接收行號,並且可以在其 when 子句中引用 editorLineNumber 上下文鍵。您可以在 API proposal issue #175945 中提供反饋。
筆記本生命週期事件:onWillSaveNotebookDocument
onWillSaveNotebookDocument 事件在儲存筆記本文件之前觸發。此事件對於希望在儲存筆記本文件之前執行某些操作的擴充套件非常有用。例如,希望在儲存筆記本之前清理筆記本單元格輸出的擴充套件可以註冊此事件的偵聽器,並返回要應用的單元格輸出編輯。
擴充套件註冊此事件偵聽器的方法如下
vscode.workspace.onWillSaveNotebookDocument(e => {
if (event.reason == vscode.NotebookDocumentSaveReason.Manual) {
event.waitUntil(new Promise((resolve) => {
const notebookEdit = new vscode.NotebookEdit(...);
const edit = new vscode.WorkspaceEdit();
edit.set(event.document.uri, [notebookEdit]);
resolve([edit]);
}));
}
});
工程
windows 8 和 8.1 的 EOL 警告
VS Code 桌面版將在接下來的幾個里程碑中更新到 Electron >=23。隨著 Electron 23 的更新,VS Code 桌面版將不再在 Windows 8 / Windows Server 2012 和 Windows 8.1 / Windows Server 2012 R2 上執行。在此里程碑中,我們為這些受影響平臺上的使用者添加了棄用通知,以讓他們準備遷移。如果您正在執行這些 Windows 版本之一,請檢視我們的 FAQ 以獲取更多資訊。
Snap 包的基礎映象已更新
在此迭代中,我們將 Snap 包更新為使用 Core20(基於 Ubuntu 20.04 構建)作為基礎映象,而以前使用的是 Core(基於 Ubuntu 16.04 構建)。此更改解決了我們 CLI 的 GLIBC 符號缺失問題,並修復了 wayland 支援等問題。您可以在 拉取請求 #127320 中找到更多上下文。
探索擴充套件主機自定義記憶體分配器
為了採用 Electron 22(啟用了 V8 沙箱),並最大限度地減少對依賴於專門使用外部陣列緩衝區的原生模組的擴充套件的影響,我們自定義了擴充套件主機中的現有記憶體分配器。具體來說,擴充套件主機現在會容納來自這些原生模組的分配,將其置於 V8 沙箱內部,作為避免致命崩潰的一種變通方法。如果您有興趣瞭解我們如何/為何最終採用此解決方案,可以檢視 issue #177338 獲取詳細資訊。
文件
新的程式語言主題
- VS Code 中的 Ruby - 瞭解使用 Ruby LSP 擴充套件的 Ruby 語言支援(程式碼片段、linting、除錯)。
- Polyglot Notebooks - Polyglot Notebooks 擴充套件為 C#、PowerShell、JavaScript 等啟用多語言程式設計。
值得注意的修復
感謝
最後但同樣重要的是,向 VS Code 的貢獻者們致以衷心的感謝。
問題跟蹤
對我們問題跟蹤的貢獻
- @gjsjohnmurray (John Murray)
- @IllusionMH (Andrii Dieiev)
- @starball5 (starball)
- @RedCMD (RedCMD)
- @ArturoDent (ArturoDent)
拉取請求
對 vscode 的貢獻
- @andschwa (Andy Jordan):處理 PowerShell 5.1 的
ParameterBindingExceptionPR #176004 - @azdavis (Ariel Davis):將標記懸停置於頂部 PR #166560
- @babakks (Babak K. Shandiz):💬 在終端選項卡懸停中新增 PID 和可執行檔案/引數 PR #171258
- @billti (Bill Ticehurst):修復了桌面版上首次安裝 web 擴充套件失敗的問題 PR #174175
- @brice-gros (Brice Gros):支援 Git for Windows SDK PR #177443
- @dkniffin (Derek Kniffin):新增 vscode.getEditorLayout 命令 PR #171224
- @dyedgreen (Tilman Roeder):新增對三個或更多和絃鍵盤快捷方式的支援 PR #175253
- @EliiseS (Eliise):修復行換行應用不一致的問題 PR #174688
- @gjsjohnmurray (John Murray)
- 處理 CommentAuthorInformation.iconPath 中的檔案 uri(修復 #174690) PR #175361
- 允許 Markdown 中
<span>樣式中的--vscode-XXX顏色變數(#_176064) PR #176312 - 在問題表格檢視中為圖示新增顏色(修復 #176621) PR #176625
- @harbin1053020115 (ermin.zem):chore: 更新 IPCClient 類註釋 PR #175198
- @hermannloose (Hermann Loose)
- 為帶有未解決執行緒的行上的註釋字形新增可主題化的顏色 PR #174915
- 一致地展開或摺疊行上的所有註釋 PR #176967
- @jeanp413 (Jean Pierre):修復 #174838 PR #175646
- @jessebluemr (Marko Reiprecht):monaco-editor-3626: 確保在“json”等語言中突出顯示括號 PR #176084
- @lawvs (Whitewater):組合輸入不應接受重新命名 PR #174829
- @mickaelistria (Mickael Istria):onEnterRules 在 Javadoc 內部的換行符上新增字首 PR #176800
- @nikdmello (Nikhil D'Mello):修復 screencast 模式:只有鍵盤快捷鍵不再顯示命令名稱 PR #176149
- @NWilson (Nicholas Wilson):將 RenameInputField 中的 DOM 操作移動到僅渲染 PR #174684
- @ohah (ohah):Screencast ime 錯誤修復(#_176331) PR #176150
- @orgads (Orgad Shaneh):LinkParsing:支援“foo line 123” PR #175906
- @poeck (Paul Köck):哦,已經是 2023 年了 PR #172649
- @pouyakary (Pouya Kary ✨):修復 #177580 PR #177581
- @spahnke (Sebastian Pahnke):[Monaco] 新增
monaco.editor.registerLinkOpener方法,以便能夠攔截從編輯器開啟連結 PR #177055 - @SvetozarMateev (Svetozar Mateev):為程序資源管理器的殺死程序操作新增加速器 PR #172755
- @tisilent (xie jialong 努力鴨):為 .integrated-terminal 新增 z-index PR #175997
- @webarthur (Arthur Ronconi):為 screencast 模式添加了功能和修復 PR #171845
- @yiliang114 (易良)
- 修復拼寫錯誤 PR #176764
- fix: 關閉 #176789 補充查詢小部件 border-bottom-radius PR #176791
- @zardoy (Vitaly):資源管理器:當檔案路徑以 / 結尾時自動建立資料夾 PR #173901
對 vscode-languageserver-node 的貢獻
- @EhabY (Ehab Younes):添加了 registerCapability 和 unregisterCapability 到客戶端中介軟體 PR #1179
對 vscode-pull-request-github 的貢獻
對 vscode-docs 的貢獻
- @vinistock (Vinicius Stock):新增 Ruby 語言指南 PR #6152
對 monaco-editor 的貢獻
- @danboo (Dan Boorstein):新增 perl 模組 (.pm) 擴充套件 PR #3258
- @nnnnoel (Noel Kim (김민혁)):為 TS 新增 CommonJS、ESM 擴充套件 PR #3264
- @PmcFizz (Fizz):opt 示例 PR #3726
- @tamayika:修復 playground 示例型別錯誤並新增 CI 測試 PR #3722
對 devcontainers/cli 的貢獻
- @jarrodcolburn (jarrodcolburn):Doc: 為 markdown 新增 shell 突出顯示 PR #436
- @stuartleeks (Stuart Leeks):修復拼寫錯誤 (userEnvProb -> userEnvProbe) PR #426
- @trxcllnt (Paul Taylor):在安裝的層附近增量複製功能 PR #382
- @ShauryaAg (Shaurya Agarwal)