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 中為常值類型建構 switch 陳述式
在 switch 陳述式內輸入 case
,並接受 case ...
的建議。這會自動插入此類型所有值的 case。請注意,這僅在要切換的值是聯集或常值類型時才有效。
適用於 Web 的 VS Code
.gitignore 支援
在此里程碑中,我們已在適用於 Web 的 VS Code 上的 GitHub 和 Azure Repos 存放庫中新增對 .gitignore
檔案的支援。在下方影片中,透過 .gitignore
取消追蹤的檔案在 Explorer 檢視中呈現灰色,且不會顯示在原始碼控制檢視中。當使用 GitHub Repositories 或 Azure Repos 擴充功能以遠端瀏覽 VS Code 桌面版上的存放庫時,這也適用。
下方的短片將 .pxt
資料夾新增至 .gitignore
,以從原始碼控制檢視中隱藏包含的檔案。
遠端開發
Remote Development 擴充功能 可讓您使用 開發容器、透過 SSH 或 遠端通道 的遠端電腦,或 Windows Subsystem for Linux (WSL) 作為功能完整的開發環境。
開發容器可讓您使用容器作為功能完整的開發環境。開發容器規格 尋求方法,以使用常見的開發設定、工具和組態來豐富現有格式,同時仍提供簡化的、未協調的單一容器選項。您可以在 Changelog podcast 的第 529 集 中深入瞭解開發容器和規格。
其他遠端開發重點包括
- 遠端通道 - 更好地重複使用現有通道。
- 遠端通道 - 繼續在 VS Code 桌面版中工作 命令,可快速轉換到本機開發。
- 開發容器 - 更輕鬆地清除未使用的開發容器和磁碟區。
您可以在 遠端開發版本資訊 中瞭解新的擴充功能功能和錯誤修正。
擴充功能
擴充功能安裝不會因簽章驗證失敗而遭到封鎖
擴充功能簽章驗證錯誤地報告少數有效擴充功能的錯誤,並阻止它們安裝。這些失敗是由 VS Marketplace 和 VS Code 中的錯誤所造成,我們正在積極努力修正。為了解除封鎖擴充功能的使用,即使簽章驗證失敗,VS Code 也會安裝擴充功能。一旦 VS Marketplace 問題 #619 修正後,我們將重新啟用簽章驗證檢查,很可能在我們的下一個穩定發行版本中。
擴充功能的貢獻
Python
移動符號重構
由於新的 移動符號到 程式碼動作,您現在可以使用 Pylance 更方便地重構您的 Python 程式碼!
若要試用,請在 Python 檔案上選取符號,然後按一下顯示的燈泡 (⌘. (Windows、Linux Ctrl+.))。您可以將符號移動到現有檔案或新檔案。如果位置是新檔案,則會建立與您的符號名稱相同的 Python 檔案。所有適用的匯入參考都會隨著符號移動自動更新。
從相依性檔案建立環境
當您開啟 requirements.txt
或 pyproject.toml
檔案時,編輯器中會有一個新的 建立環境... 按鈕,可執行 Python:建立環境 命令,讓您可以建立新的虛擬環境並安裝列出的相依性。
擴充功能作者的最終環境 API
Python 擴充功能的 API 用於處理使用者電腦上可用的 Python 環境已最終確定。擴充功能也可以使用 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 環境 區段下。
當您選取此類環境時,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 子句的靜態分析器,以確保它們在語法上正確。我們鼓勵您檢查您的 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 語言支援 (程式碼片段、靜態分析、偵錯)。
- 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 的
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):螢幕廣播 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):為螢幕廣播模式新增功能與修正 PR #171845
- @yiliang114 (易良)
- 修正錯字 PR #176764
- 修正:關閉 #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):文件:為 markdown 新增 shell 語法突顯 PR #436
- @stuartleeks (Stuart Leeks):修正錯字 (userEnvProb -> userEnvProbe) PR #426
- @trxcllnt (Paul Taylor):在功能安裝的圖層附近逐步複製功能 PR #382
- @ShauryaAg (Shaurya Agarwal)