2023 年 3 月 (版本 1.77)
更新 1.77.1:此更新解決了這些 問題。
更新 1.77.2:此更新解決了這個安全性 問題。
更新 1.77.3:此更新解決了這些 問題。
下載:Windows:x64 Arm64 | Mac:通用 Intel silicon | Linux:deb rpm tarball Arm snap
歡迎使用 Visual Studio Code 2023 年 3 月發行版本。此版本包含許多更新,希望您會喜歡,其中一些重點包括
- 協助工具改善 - 浮動提示、通知和黏性捲動的新鍵盤快速鍵。
- 從編輯器邊界複製 GitHub 深度連結 - 從編輯器內建立永久連結和 HEAD 連結。
- 儲存時格式化筆記本 - 在儲存時自動格式化筆記本儲存格。
- TS/JS switch case 完成 - 快速填入 TypeScript/JavaScript switch 陳述式。
- Python 移動符號重構 - 將 Python 符號移動到現有或新檔案。
- 遠端通道更新 - 重複使用現有通道並快速從遠端轉換到桌面。
- Ruby 文件 - 了解 VS Code 的 Ruby 語言支援。
- 預覽:擴展的 GitHub Copilot 整合 - 新的內嵌聊天和完整 AI 聊天檢視。
如果您想在線上閱讀這些版本資訊,請前往 code.visualstudio.com 上的 更新。
Insiders: 想要盡快試用新功能嗎?您可以下載每晚 Insiders 組建,並在最新更新可用時立即試用。
協助工具
終端機協助工具緩衝區改善
終端機協助工具緩衝區透過 終端機:焦點協助工具緩衝區 (⌥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 存放庫的深度連結可直接使用。
這些動作也已新增至編輯器索引標籤上下文功能表和 Explorer 上下文功能表中的 共用 子功能表。
依檔案內容推薦擴充功能
VS Code 現在可以根據檔案內容推薦擴充功能。例如,如果您開啟具有筆記本儲存格語法的 Python 檔案,VS Code 會推薦 Jupyter 擴充功能,以適當地轉譯和執行這些儲存格。
選取黏性捲動的預設提供者
黏性捲動 (檢視:切換黏性捲動) 使用數個不同的內容模型來建立其標題。現在可以選擇大綱提供者模型、摺疊提供者模型和縮排模型,以判斷要在黏性捲動 UI 中顯示哪些行。如果目前語言沒有可用的模型,VS Code 會回溯到上述順序中的下一個模型。最初使用的預設模型可以使用 編輯器 > 黏性捲動:預設模型 (editor.stickyScroll.defaultModel
) 進行變更。
終端機
改善的索引標籤浮動提示
終端機索引標籤浮動提示現在會顯示 Shell 的處理序 ID、完整命令列,以及擴充功能環境變數貢獻的改善檢視。
原始碼控制
遠端存放庫中的 Git LFS 提交支援
現在,當編輯 GitHub 和 Azure Repos 存放庫時,您可以提交 LFS 追蹤的檔案,而無需安裝 Git LFS。若要開始使用,請在 VS Code 桌面版上安裝 GitHub Repositories 或 Azure Repos 擴充功能,執行 開啟遠端存放庫 命令以開啟您的存放庫,並使用原始碼控制檢視提交您的變更。擴充功能會剖析您的 .gitattributes
組態,以判斷是否應將您變更的檔案提交至存放庫提供者的 Git LFS 儲存體。
若要停用此行為,您可以設定 "githubRepositories.experimental.lfs.write.enabled": false
和 "azureRepos.experimental.lfs.write.enabled": false
。
注意:適用於 Web 的 VS Code (vscode.dev) 尚不可用。
3 向合併編輯器文件
如果您尚未嘗試使用 3 向合併編輯器來協助您解決合併衝突,請查看原始碼控制文件中的 3 向合併編輯器 區段。3 向合併編輯器可讓您同時檢視和選取傳入和目前的變更、預覽結果,甚至在任何變更之前檢閱檔案的基準版本。
並且不要錯過 極其有用的合併衝突指南 YouTube 影片,其中主演的是 3 向合併編輯器。
筆記本
儲存時格式化
您現在可以為筆記本啟用儲存時格式化。這會在您儲存筆記本時格式化整個筆記本。您可以將 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 中逐步建立 literal 類型的 switch 陳述式
在 switch 陳述式內輸入 case
,然後接受 case ...
的建議。這會自動插入此類型所有值的 case。請注意,這僅在要切換的值是 union 或 literal 類型時才有效。
適用於 Web 的 VS Code
.gitignore 支援
在此里程碑中,我們為適用於 Web 的 VS Code 上的 GitHub 和 Azure Repos 存放庫新增了 .gitignore
檔案的支援。在下面的影片中,透過 .gitignore
取消追蹤的檔案在 Explorer 檢視中會以灰色顯示,並且不會顯示在原始碼控制檢視中。當使用 GitHub Repositories 或 Azure Repos 擴充功能在 VS Code 桌面版上遠端瀏覽存放庫時,這也適用。
下面的簡短影片將 .pxt
資料夾新增至 .gitignore
,以從原始碼控制檢視中隱藏包含的檔案。
遠端開發
遠端開發擴充功能 可讓您使用 Dev Container、透過 SSH 或 遠端通道 的遠端機器,或 Windows Subsystem for Linux (WSL) 作為全功能開發環境。
Dev Container 可讓您使用容器作為全功能開發環境。Dev Container 規格 尋求方法來使用常見的開發設定、工具和組態來豐富現有格式,同時仍提供簡化的、未協調的單一容器選項。您可以在 Changelog podcast 的第 529 集 中深入了解 Dev Container 和規格。
其他遠端開發重點包括
- 遠端通道 - 更好地重複使用現有通道。
- 遠端通道 - 繼續在 VS Code 桌面版中工作 命令可快速轉換到本機開發。
- Dev Container - 更輕鬆地清除未使用的 Dev Container 和磁碟區。
您可以在 遠端開發版本資訊 中了解新的擴充功能功能和錯誤修正。
擴充功能
擴充功能安裝不會因簽章驗證失敗而遭到封鎖
擴充功能簽章驗證錯誤地報告少數有效擴充功能的錯誤,並阻止它們安裝。這些失敗是由 VS Marketplace 和 VS Code 中的錯誤所造成,我們正在積極處理修正。為了取消封鎖擴充功能的使用,即使簽章驗證失敗,VS Code 仍會安裝擴充功能。一旦 VS Marketplace 問題 #619 修正後,我們將重新啟用簽章驗證檢查,很可能在我們的下一個穩定版本中。
擴充功能的貢獻
Python
移動符號重構
現在,由於新的 將符號移動到 程式碼動作,您可以更方便地使用 Pylance 重構您的 Python 程式碼!
若要試用,請在 Python 檔案上選取符號,然後按一下顯示的燈泡 (⌘. (Windows、Linux Ctrl+.))。您可以將符號移動到現有檔案或新檔案。如果位置是新檔案,則會建立與您的符號同名的 Python 檔案。所有適用的匯入參考都會隨著符號移動自動更新。
從相依性檔案建立環境
當您開啟 requirements.txt
或 pyproject.toml
檔案時,編輯器中會有新的 建立環境... 按鈕,可執行 Python:建立環境 命令,讓您可以建立新的虛擬環境並安裝列出的相依性。
擴充功能作者的已完成環境 API
用於處理使用者機器上可用 Python 環境的 Python 擴充功能 API 已完成。擴充功能也可以使用 API 來存取 Python 擴充功能用於執行指令碼的選取環境路徑,或將路徑更新為他們偏好的路徑。
API 用法的範例在 Python 環境 API Wiki 頁面中。我們也計劃在未來發行 npm 類型套件,以便更輕鬆地追蹤 Python 擴充功能 API 中的任何變更。
Jupyter
Python 環境的 Kernel 選取器改善
即使 conda 環境中未安裝 Python 執行階段,Kernel 選取器現在也會列出 conda 環境。
例如,如果使用 CLI (例如 conda create -n envML
) 建立新的 conda 環境,則此新環境會顯示在 Python 環境 清單的 沒有 Python 的 Conda Env 區段下。
當您選取這類環境時,Python 執行階段和必要的相依性會自動安裝到環境中。
GitHub Pull Requests and Issues
GitHub Pull Requests and Issues 擴充功能取得了更多進展,可讓您處理、建立和管理提取要求和問題。重點包括
- 提取要求可以從 提取要求 檢視在 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 和 GitHub Copilot 部落格文章中深入了解 VS Code 團隊的經驗和 Copilot 的未來。您也可以閱讀 VS Code 中的 GitHub Copilot 文章,以取得有關在 VS Code 中使用 Copilot 的更多詳細資訊。
預覽功能
筆記本搜尋支援輸出
上次迭代,我們在開啟的筆記本中針對格式化的筆記本內容引入了全域搜尋,但僅適用於儲存格和 Markdown 輸入。在此迭代中,我們新增了對搜尋筆記本輸出的支援。當您開啟筆記本時,會有一個切換開關可讓您自訂要在筆記本中搜尋的位置。啟用 search.experimental.notebookSearch
以試用此功能!
歡迎頁面上的遠端連線選取器
歡迎頁面現在在開始清單中支援實驗性遠端連線選取器 連線到...,以協助您開始使用遠端連線 (SSH、遠端通道、GitHub Codespaces 等)。此功能預設為停用,可以透過將 workbench.remote.experimental.showStartListEntry
設定為 true
來啟用。
擴充功能撰寫
即將推出的 Electron 22 更新可能需要變更原生模組
我們計劃在下一個穩定版本中更新到 Electron 22。這對使用原生模組的擴充功能有影響,因為啟用了 V8 記憶體隔離區:不再允許指向外部 ("堆外") 記憶體的 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 版及更高版本相容。問題 #175540 中有關於變更的更多資訊。
原始碼控制輸入中的內嵌完成
原始碼控制輸入框現在支援 內嵌完成
原始碼控制輸入框的文件 語言識別碼 為 scminput
。
建議的 API
每個里程碑都隨附新的建議 API,擴充功能作者可以試用它們。與往常一樣,我們希望收到您的意見反應。以下是試用建議 API 的步驟
- 尋找您想要試用的建議,並將其名稱新增至
package.json#enabledApiProposals
。 - 使用最新的 vscode-dts 並執行
vscode-dts dev
。此命令會將對應的d.ts
檔案下載到您的工作區。 - 您現在可以針對建議進行程式設計。
您無法發佈使用建議 API 的擴充功能。下一個版本中可能會發生重大變更,我們永遠不想中斷現有的擴充功能。
編輯器邊界建議的上下文功能表
editor/lineNumber/context
建議的功能表錨定到編輯器邊界和編輯器行號,並提供一種方式來顯示特定行的上下文擴充功能動作。
若要在開發中試用此功能,請啟用 contribEditorLineNumberMenu
API 建議。貢獻給此功能表的動作會在命令引數中接收行號,並且可以在其 when 子句中參考 editorLineNumber
上下文金鑰。您可以在 API 建議問題 #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 中找到更多上下文。
探索擴充功能主機的自訂記憶體配置器
為了採用隨附 V8 沙箱的 Electron 22,並盡量減少對依賴於特定使用外部陣列緩衝區的原生模組的擴充功能的影響,我們已自訂擴充功能主機中現有的記憶體配置器。具體來說,擴充功能主機現在可以容納來自這些原生模組的配置,使其位於 V8 沙箱內,作為避免嚴重崩潰的權宜之計。如果您對我們如何/為何最終採用此解決方案感興趣,您可以檢閱 問題 #177338 以取得詳細資訊。
文件
新的程式設計語言主題
- VS Code 中的 Ruby - 了解使用 Ruby LSP 擴充功能的 Ruby 語言支援 (程式碼片段、linting、偵錯)。
- Polyglot Notebooks - Polyglot Notebooks 擴充功能為 C#、PowerShell、JavaScript 等啟用 Polyglot 程式設計。
值得注意的修正
感謝您
最後但同樣重要的是,非常感謝 VS Code 的貢獻者。
問題追蹤
對我們的問題追蹤的貢獻
- @gjsjohnmurray (John Murray)
- @IllusionMH (Andrii Dieiev)
- @starball5 (starball)
- @RedCMD (RedCMD)
- @ArturoDent (ArturoDent)
提取要求
對 vscode
的貢獻
- @andschwa (Andy Jordan):處理 PowerShell 5.1 的
ParameterBindingException
PR #176004 - @azdavis (Ariel Davis):將標記浮動提示放在頂端 PR #166560
- @babakks (Babak K. Shandiz):💬 將 PID 和可執行檔/引數新增至終端機索引標籤浮動提示 PR #171258
- @billti (Bill Ticehurst):修正了在桌面上載入第一個安裝的 Web 擴充功能失敗的問題 PR #174175
- @brice-gros (Brice Gros):支援 Windows SDK 的 Git 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):修復螢幕錄影模式:僅鍵盤快速鍵不再顯示命令名稱 PR #176149
- @NWilson (Nicholas Wilson):將 RenameInputField 中的 DOM 操作移至僅渲染 PR #174684
- @ohah (ohah):螢幕錄影輸入法錯誤修復(#_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):為螢幕錄影模式新增功能和修正 PR #171845
- @yiliang114 (易良)
- 修正錯字 PR #176764
- 修正:關閉 #176789 補充尋找小工具底部邊框半徑 PR #176791
- @zardoy (Vitaly):Explorer:當檔案路徑以 / 結尾時自動建立資料夾 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):文件:為 markdown 新增 shell 語法突顯 PR #436
- @stuartleeks (Stuart Leeks):修正錯字 (userEnvProb -> userEnvProbe) PR #426
- @trxcllnt (Paul Taylor):以遞增方式複製功能,使其靠近安裝它們的圖層 PR #382
- @ShauryaAg (Shaurya Agarwal)