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
歡迎使用 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 上的更新頁面。
內測版:想盡快嘗試新功能?您可以下載每晚的內測版構建,並儘快嘗試最新的更新。
輔助功能
終端可訪問緩衝區改進
終端可訪問緩衝區,它透過終端:聚焦可訪問緩衝區 (⌥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 Desktop 中,要從編輯器邊欄建立 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 Desktop 上安裝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 影片,其中介紹了三方合併編輯器。
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。請注意,這僅在被 switch 的值為聯合型別或字面量型別時有效。
Web 版 VS Code
.gitignore 支援
在此里程碑中,我們已在 VS Code for the Web 中為 GitHub 和 Azure Repos 儲存庫添加了對 .gitignore
檔案的支援。在下面的影片中,透過 .gitignore
未跟蹤的檔案在資源管理器檢視中顯示為灰色,並且不會出現在原始碼管理檢視中。當使用 GitHub Repositories 或 Azure Repos 擴充套件在 VS Code Desktop 上遠端瀏覽儲存庫時,這也同樣有效。
下面的短影片將 .pxt
資料夾新增到 .gitignore
中,以從原始碼管理檢視中隱藏包含的檔案。
遠端開發
遠端開發擴充套件允許您透過 SSH 或遠端隧道使用開發容器、遠端機器或適用於 Linux 的 Windows 子系統 (WSL) 作為功能齊全的開發環境。
開發容器讓您可以使用容器作為功能齊全的開發環境。開發容器規範旨在透過通用開發設定、工具和配置來豐富現有格式,同時仍然提供簡化的、非編排的單一容器選項。您可以在Changelog 播客的第 529 集中瞭解有關開發容器和規範的更多資訊。
其他遠端開發亮點包括
- 遠端隧道 - 更好地重用現有隧道。
- 遠端隧道 - 在 VS Code Desktop 中繼續工作命令可快速過渡到本地開發。
- 開發容器 - 更輕鬆地清理未使用的開發容器和卷。
您可以在遠端開發發行說明中瞭解新的擴充套件功能和錯誤修復。
擴充套件
擴充套件安裝不被簽名驗證失敗阻止
擴充套件簽名驗證錯誤地報告了少數有效擴充套件的錯誤,並阻止了它們的安裝。這些失敗是由於 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 環境的核心選擇器改進
即使其中未安裝 Python 執行時,核心選擇器現在也列出了 conda 環境。
例如,如果使用 CLI(例如 conda create -n envML
)建立新的 conda 環境,則此新環境將顯示在不帶 Python 的 Conda 環境部分下的Python 環境列表中。
當您選擇此類環境時,Python 執行時和必要的依賴項會自動安裝到環境中。
GitHub 拉取請求和議題
GitHub 拉取請求和問題擴充套件取得了更多進展,該擴充套件允許您處理、建立和管理拉取請求和問題。亮點包括
- 可以從拉取請求檢視在 vscode.dev 上開啟拉取請求。
- 在建立拉取請求檢視中有一個新設定可以檢查自動合併選項:
githubPullRequests.setAutoMerge
。
檢視擴充套件 0.62.0 版本的更新日誌以檢視其他亮點。
GitHub Copilot
GitHub Copilot 是一款人工智慧結對程式設計工具,可幫助您更快、更智慧地編寫程式碼。您可以使用 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。一如既往,我們希望得到您的反饋。以下是嘗試提議 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 Desktop 將在接下來的幾個里程碑中更新到 Electron >=23。隨著 Electron 23 更新,VS Code Desktop 將不再在 Windows 8 / Windows Server 2012 和 Windows 8.1 / Windows Server 2012 R2 上執行。在此里程碑中,我們已為這些受影響平臺上的使用者添加了棄用通知,以準備他們進行遷移。如果您正在執行這些 Windows 版本之一,請檢視我們的常見問題以獲取更多資訊。
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、除錯)。
- 多語言筆記本 - 多語言筆記本擴充套件支援 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): 支援 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): composition enter 不應接受重新命名 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
- 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): 選擇示例 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)