現已釋出!閱讀關於 11 月新增功能和修復的內容。

2021 年 3 月 (版本 1.55)

更新 1.55.1:此更新解決了這些問題

更新 1.55.2:此更新解決了這些安全問題

下載:Windows:x64 Arm64 | Mac:通用 Intel silicon | Linux:deb rpm tarball Arm snap


歡迎使用 Visual Studio Code 2021 年 3 月版。此版本中有許多更新,希望您會喜歡,其中一些重點包括:

如果您想線上閱讀這些發行說明,請訪問 code.visualstudio.com 上的更新頁面。

請於太平洋時間 4 月 8 日星期四上午 8 點(倫敦時間下午 4 點)在VS Code 團隊直播中加入我們,觀看此版本新功能的演示並向我們提問。

內測版:想盡快嘗試新功能?您可以下載每晚的內測版構建,並儘快嘗試最新的更新。

輔助功能

多游標支援

我們為多游標添加了初始螢幕閱讀器支援。每當新增新游標時,VS Code 現在都會連同游標行和列位置一起宣佈。VS Code 還會宣佈輔助游標何時被移除。我們計劃根據收到的更多反饋進一步改進多游標輔助功能。

螢幕閱讀器行限制增加到 1000 行

由於上游問題得到解決,我們增加了“全部朗讀”命令可以讀取的行數。以前,螢幕閱讀器一次可以宣佈的行數有 100 行的硬性限制,我們現在已將此限制增加到 1000 行。為了完全取消限制,還需要進行進一步的上游修復。

由於此更改,設定 editor.accessibilityPageSize 現在已棄用。在接下來的幾個版本中,我們仍將支援此設定,但我們計劃在未來完全刪除它。

工作臺

Windows 上的加密更新

我們更改了 Windows 上加密機密的方式,這會影響使用 secrets API 的設定同步和擴充套件。Windows 使用者在更新後將自動登出,需要重新進行身份驗證。

更新了 macOS Big Sur 的品牌圖示

Brand icons on macOS Big Sur

我們一直在努力更新 macOS 上的 VS Code 品牌圖示,以匹配 Big Sur 的新視覺風格。我們感謝社群提供的所有反饋,並很高興釋出 Stable 和 Insiders 的新徽標。我們也在所有平臺上使用相同的徽標。

Stable Insiders Exploration
Stable icon Insiders icon Exploration icon

改進的側邊欄自定義

一個新的 workbench.sash.hoverDelay 設定允許您定義側邊欄懸停反饋的延遲。現有的 workbench.sash.size 設定已得到改進,以便為觸控裝置提供大的抓取表面區域,同時保持 UI 整潔。

改進的列表/樹導航

列表和樹現在支援自定義鍵盤導航模式,在筆記本等特定區域中行為更自然。

此外,Shift+Click 範圍選擇的行為更具確定性。

標籤裝飾預設開啟

編輯器標籤的裝飾現在預設開啟,要配置它們,請使用 workbench.editor.decorations.colorsworkbench.editor.decorations.badges

顯示檔案有警告且已針對 git 修改的編輯器標籤裝飾 主題:GitHub Light Theme

調整鍵盤快捷方式編輯器中的列大小

鍵盤快捷方式編輯器現在已重構為使用新的表格小部件,允許使用者調整編輯器中列的大小。

擴充套件管理改進

  • VS Code 現在會檢測透過 VS Code CLI 安裝/解除安裝的擴充套件。擴充套件可以在活動視窗(例項)中啟用/停用,並將正確顯示在“擴充套件”檢視中。

  • 即使擴充套件未歸類為擴充套件包,VS Code 現在也會在單獨的擴充套件包標籤中顯示設定了 extensionPack 屬性的擴充套件包中包含的擴充套件集。

Extension that is not an extension pack but includes other extensions

主題:GitHub Light Theme

“問題”檢視中的負文字過濾

現在,透過在過濾文字前加上 !,您可以從“問題”檢視中過濾掉不包含特定文字的問題。

報告 Marketplace 問題

上個月,我們強調有一個新的公共倉庫用於解決與 Extension Marketplace 相關的問題。現在,VS Code 的問題報告程式支援在此倉庫中建立問題。

配置樹懸停延遲

現在可以使用 workbench.hover.delay 配置擴充套件貢獻的樹檢視的懸停延遲。

Emmet

emmet.extensionsPath 設定現在僅接受字串陣列,可以直接在“設定”編輯器中編輯。

在“開啟的編輯器”中搜索

您現在可以在工作區搜尋中切換僅在開啟的編輯器中搜索複選框,以將搜尋範圍從整個工作區更改為僅搜尋已在編輯器標籤中開啟的檔案。以前這是透過選擇加入來啟用的,本次迭代我們增強了尚未在 VS Code 會話中載入的檔案的行為,並預設啟用了它。

控制原始碼控制輸入的字型大小

您現在可以透過新的 scm.inputFontSize 設定更改原始碼控制輸入的字型大小。

整合終端

終端配置檔案

終端現在支援定義的配置檔案,這些配置檔案會出現在終端的下拉選單中,方便地啟動非預設 shell

Terminal profiles show up below the terminal processes and above the configuration items

VS Code 將透過此選單自動檢測並顯示一些更常用的 shell,但也可以使用 terminal.integrated.profiles.<platform> 設定進行配置。使用此設定,可以新增新配置檔案、更改現有配置檔案和刪除預設配置檔案。例如:

"terminal.integrated.profiles.windows": {
  // Add a PowerShell profile that doesn't run the profile
  "PowerShell (No Profile)": {
      // Some sources are available which auto detect complex cases
      "source": "PowerShell",
      "args": ["-NoProfile"],
      // Name the terminal "PowerShell (No Profile)" to differentiate it
      "overrideName": true
  },
  // Remove the builtin Git Bash profile
  "Git Bash": null,
  // Add a Cygwin profile
  "Cygwin": {
    "path": "C:\\cygwin64\\bin\\bash.exe",
    "args": ["--login"]
  }
}

最初新增配置檔案的推薦方法是透過選擇預設配置檔案命令,該命令允許根據現有配置檔案或其他檢測到的 shell 建立配置檔案。

The Select Default Profile command shows all configured and detected profiles

自動檢測 WSL 配置檔案和 Windows 上改進的預設設定

除了新的配置檔案功能外,我們現在還自動檢測 WSL 配置檔案並預設將它們顯示在列表中。這可以透過 terminal.integrated.useWslProfiles 設定關閉。

Cygwin 現在也自動檢測並暴露在選擇預設配置檔案命令中,Git Bash 將作為登入 shell 執行(執行 ~/.bash_profile)。

WebGL 渲染器是新的預設設定

早在2019 年 11 月版中,終端就有了實驗性的 WebGL 渲染器,根據我們當時的計算,它可以將效能提高高達 900%,如果您的環境在使用標準 2D canvas 上有問題,則可以提高更多。

從那時起,WebGL 渲染器在穩定性方面逐漸改進,並且功能差距得以縮小。我們決定現在是進行過渡的最佳時機,但會密切關注任何問題報告。

作為這項工作的一部分,我們還添加了一些回退邏輯。當 "terminal.integrated.rendererType": "auto" 時,會發生以下情況:

  1. WebGL 渲染器將嘗試啟動。
  2. 如果失敗(例如由於缺少 OS/瀏覽器支援)
    • canvas 渲染器將啟用,並開始測量渲染一幀所需的時間。
  3. 如果前 20 幀渲染緩慢(例如如果存在硬體問題或 GPU 渲染被停用)
    • DOM 渲染器將啟用。

在下一個版本中,我們計劃完全刪除 rendererType 設定,轉而使用更易理解的 "terminal.integrated.gpuAcceleration": "auto" | "on" | "off"

無縫終端重啟

在上一個版本中,我們引入了當擴充套件想要更改環境時自動重啟終端的功能。此版本現在將防止重啟時發生的閃爍。如果新終端的輸出與上一個終端相同,則不會因重啟而產生反饋或干擾。

還有一個新設定可以完全停用此自動重啟 terminal.integrated.environmentChangesRelaunch

編輯器

新的自動關閉對刪除

當在自動關閉對內時,按下 Backspace 鍵的行為已更改。編輯器現在僅在編輯器自動插入該字元時才刪除匹配的關閉括號或匹配的關閉引號。此行為由一個名為 editor.autoClosingDelete 的新設定控制,可以將其配置為 "always" 以獲取以前的行為。

除錯

斷點改進

內聯選單編輯條件和命中計數

我們現在為編輯函式斷點的條件和命中計數顯示一個內聯選單。以前內聯編輯按鈕會自動選擇要編輯的條件。現在,選單應該使流程更容易,併為使用者提供更多控制。

Breakpoint condition menu

支援所有資料斷點訪問型別

現在 VS Code 的通用偵錯程式 UI 支援 Debug Adapter Protocol 中定義的所有資料斷點訪問型別作為 VARIABLES 檢視中的上下文選單操作

  • 讀取值時中斷:每次讀取變數時都會命中斷點。
  • 值更改時中斷:每次更改變數時都會命中斷點(此操作以前可用)。
  • 值訪問時中斷:每次讀取或更改變數時都會命中斷點。

請注意,除錯擴充套件必須選擇加入此功能才能使各個操作可用。目前,只有 Mock Debug 擴充套件(模擬)支援所有三種訪問型別,但我們預計其他除錯擴充套件(例如 Java 擴充套件)很快就會跟進。

Data breakpoints break on access types

在啟動除錯物件之前清除終端

某些除錯擴充套件允許您在 VS Code 的整合終端中啟動除錯物件。為了保持整合終端數量較少,如果終端沒有被仍在執行的命令阻塞,VS Code 會嘗試重用終端。這種方法的一個後果是,以前的命令和程式輸出將保留在終端中可見,這有時會讓人感到困惑。

在此版本中,我們引入了一項新功能,可以在開始新的除錯會話之前自動清除整合終端。該功能由新設定 debug.terminal.clearBeforeReusing 控制。

JavaScript 除錯

像往常一樣,完整的更改列表可以在 vscode-js-debug 更改日誌中找到。

開始除錯並在入口處停止

去年當我們遷移到新偵錯程式時,除錯:開始除錯並在入口處停止被遺棄了。它現在再次工作,並請求偵錯程式在 Node.js 程式的首行暫停。預設情況下,它繫結到 F10

改進了符號連結的處理

除錯帶有符號連結的 Node.js 程式可能需要向程式傳遞特殊標誌。沒有這些標誌,斷點就會未繫結,很難找出哪裡出了問題。現在,偵錯程式將自動檢測這些情況並提供有用的通知。

Notification that says "It looks like you have symlinked files. You might need to update your configuration to make this work as expected," with buttons to "Read More" and "Ignore"

Notebook

多單元格選擇

我們現在支援使用滑鼠 (Shift+Click) 或鍵盤快捷鍵 (Shift+Arrow) 在筆記本中選擇多個單元格。一旦選擇了多個單元格,您就可以複製/剪下/貼上/移動/複製選定的單元格。

Notebook multiple cells selection

您還可以拖放多個單元格。

Notebook multiple cells selection drag and drop

限制:當選擇了多個不連續的單元格範圍時,大多數命令將僅對第一個範圍或焦點範圍執行。我們將在接下來的版本中繼續改進此體驗。

我們還添加了一個新的顏色標記 notebook.inactiveSelectedCellBorder,它沒有預設顏色,但可用於喜歡使用邊框進行多選而不是背景顏色的主題

Notebook cells being multi-selected via border instead of background colors

在差異編輯器中顯示/隱藏輸出和元資料差異

我們從使用者那裡聽說,在審查筆記本中的更改時,筆記本單元格元資料或輸出中的修改可能會分散注意力或不相關。VS Code 現在允許您使用設定 notebook.diff.ignoreMetadatanotebook.diff.ignoreOutputs 控制差異編輯器中元資料或輸出更改的可見性。也可以透過使用編輯器標題工具欄中的顯示輸出/元資料差異命令來切換它們。

Notebook show metadata/outputs differences

預覽功能

對筆記本中可擴充套件 Markdown 渲染器的持續改進

我們繼續改進對筆記本中 Markdown 渲染器擴充套件的支援。本次迭代的重點是提高新渲染器的效能。我們還修復了新渲染器引入的許多回歸問題。

Emoji and a math formula being rendered in a notebook cell

新渲染器預設仍處於停用狀態,但我們現在更有信心很快就能啟用它們。您可以使用未記錄的 notebook.experimental.useMarkdownRenderer: true 設定來試用新的可擴充套件 Markdown 渲染器。啟用此設定並重新啟動 VS Code 後,您應該能夠在 Markdown 單元格中使用 :emoji: 和 KaTeX $math$ 公式。

開始使用

我們正在繼續徹底改革我們的預設啟動編輯器,以提供相關的擴充套件貢獻提示和演練,旨在使核心 VS Code 功能和擴充套件貢獻對新使用者更易於使用。許多 Insiders 使用者可能已經看到了它,並且將在本次迭代過程中慢慢向更多 Stable 使用者推出。您始終可以透過將 workbench.startupEditor 設定修改為 gettingStarted 或遠離 gettingStarted 來選擇加入或退出新行為。

入門體驗演練 主題:GitHub Light

對擴充套件的貢獻

遠端開發

遠端開發擴充套件的工作仍在繼續,它允許您使用容器、遠端機器或 適用於 Linux 的 Windows 子系統 (WSL) 作為功能齊全的開發環境。

1.55 版的功能亮點包括:

  • 雙擊命名埠
  • 配置預設埠檢測行為
  • 改進了在容器卷中克隆倉庫的體驗

您可以在遠端開發發行說明中瞭解有關新擴充套件功能和錯誤修復的資訊。

GitHub 拉取請求和議題

GitHub Pull Requests and Issues擴充套件仍在繼續開發中,該擴充套件允許您處理、建立和管理拉取請求和問題。

要了解所有新功能和更新,您可以檢視擴充套件 0.25.0 版本的完整更改日誌

擴充套件創作

用於自定義編輯器和筆記本的無標題檔案 API

自定義編輯器和筆記本現在在開啟上下文中包含一個 untitledDocumentData 屬性,該屬性包含使用者觸發使用...重新開啟的無標題檔案中包含的資料緩衝區。如果此屬性已填充,則應讀取此屬性而不是 URI,因為在無標題檔案的情況下,URI 不指向磁碟上的檔案。

內聯值提供程式 API

上一個里程碑中引入的擬議內聯值提供程式 API 已經定稿,現在可以在 Marketplace 上釋出的擴充套件中使用。

新的“複製為”子選單

有兩個新的選單位置,它們在 UI 中顯示為複製為子選單

  • menuBar/edit/copy - 用於標題欄編輯選單
  • editor/context/copy - 用於編輯器上下文選單

Copy As submenu

ExtensionContext 上的新擴充套件屬性

擴充套件作者現在可以使用 ExtensionContext 上的新 extension 屬性,該屬性作為引數傳遞給擴充套件的 activate 函式。它返回與 vscode.extensions.getExtension(<extension-id>) 返回的相同的 Extension 例項,其中包含擴充套件 ID、版本和序列化的 packageJSON 屬性等屬性,您可以在其中直接從擴充套件的 package.json 檔案訪問資料。

Docker Compose 語言

已新增新的 Docker Compose 語言。這不會有太多面向用戶的更改;但是,擴充套件作者現在可以使用它來定位 Docker Compose 檔案。語言 ID 為 dockercompose

遙測啟用 API

擴充套件總是可以透過配置值 telemetry.telemetryLevel 檢查使用者是否已停用遙測,但無法檢查使用者是否使用了 CLI 標誌 --disable-telemetry。本次里程碑中,我們在擴充套件 API 的 env 物件中添加了另外兩個屬性:isTelemetryEnabledonDidChangeTelemetryEnabled。前者考慮了 CLI 標誌和當前配置值。後者是一個事件,只要 isTelemetryEnabled 發生更改就會觸發。

工作區信任開發

在幾次迭代中,我們一直在探索一個我們稱之為工作區信任的安全功能。隨著它即將釋出,我們尋求讓擴充套件作者開始他們的入職流程並獲取反饋。目前,尚未更新以處理工作區信任的擴充套件將繼承安全預設值;但是,為了獲得最佳使用者體驗,我們要求擴充套件作者閱讀問題 #106488中的更多資訊,並在我們進入下一次迭代時訂閱更新。

建議的擴充套件 API

每個里程碑都會帶來新的提議 API,擴充套件作者可以嘗試使用它們。一如既往,我們希望得到您的反饋。要嘗試提議的 API,您需要執行以下操作:

  • 您必須使用 Insiders 版本,因為提議的 API 經常更改。
  • 您的擴充套件的 package.json 檔案中必須包含以下行:"enableProposedApi": true
  • 將最新版本的 vscode.proposed.d.ts 檔案複製到您專案的源位置。

您不能釋出使用提議 API 的擴充套件。下個版本中可能會有破壞性更改,我們絕不希望破壞現有擴充套件。

測試

本月我們的工作重點是解決測試 API 的提供程式部分。主要是轉向一種方法,允許按需和非同步載入測試。轉向非同步方法提出了需要擴充套件主機 API 中新的語義來解決的挑戰。本次迭代我們合併了更改,並將在接下來的一個月中完善它們。我們希望在 4 月的迭代中開始最終確定測試 API 的部分內容。

CodeActionContext.triggerKind

CodeActionContext 上擬議的 triggerKind 屬性跟蹤為什麼從 CodeActionProvider 請求程式碼操作。此屬性的可能值為:

  • Invoke:程式碼操作是明確請求的,要麼使用鍵盤快捷鍵要麼使用命令。

  • Automatic:程式碼操作是在沒有明確使用者操作的情況下請求的。這包括當文件內容更改時請求程式碼操作。

提供程式可以使用 triggerKind 返回不同的結果集,具體取決於請求程式碼操作的方式。例如,自動觸發的重構程式碼操作提供程式可能僅返回當前選擇的精確重構,以限制程式碼操作燈泡顯示的頻率。但是,當明確請求程式碼操作時,同一個提供程式可能會自動擴充套件當前選擇,以嘗試顯示使用者在當前位置可能感興趣的所有重構。

PortAttributesProvider

任何啟動偵聽埠的程序並希望在使用 VS Code 遠端擴充套件時獲得出色體驗的擴充套件都應考慮提供反饋並採用新的 PortsAttributesProvider API。由於 VS Code 在使用其中一個遠端擴充套件時會檢測並自動轉發埠,因此任何偵聽埠的擴充套件都將自動轉發這些埠。然而,這些埠通常僅對擴充套件的內部工作很重要,並且對使用者來說轉發這些埠沒有用。此 API 可用於設定檢測到埠時的行為,以防止自動轉發不應面向使用者的埠。

快速輸入選項標題

傳遞給 showQuickPickQuickPickOptions 和傳遞給 showInputBoxInputBoxOptions 現在具有一個可選的 title 屬性,該屬性以前僅在 createQuickPick API 中可用。設定此屬性後,它會在快速輸入上顯示一個帶有您指定標題的標題欄。

語言伺服器協議

現在可以獲取診斷拉取模型規範的草稿版本以獲取反饋。

除錯介面卡協議

停止事件現在可以報告命中的斷點

已向停止事件添加了一個可選屬性 hitBreakpointIds,其中包含觸發事件的斷點的 ID。

請注意,VS Code 尚未以任何方式顯示此資訊。我們正在 issue #118743 中討論可能的 UI 想法。

工程

更快的 Snap 啟動

snap 包現在使用 lzo 壓縮演算法,它提供了更快的啟動時間。有關更多資訊,請參閱 Ubuntu 關於該演算法的部落格文章

Electron 沙盒進展

在這個里程碑中,我們繼續讓 VS Code 視窗為啟用 Electron 的沙盒上下文隔離功能做好準備。

具體來說:

  • 我們能夠將渲染器中的一些原生模組要求轉移到其他程序。
  • 當啟用沙盒選項時,我們能夠提供更多元件和服務。

文件

VS Code 和教室裡的 JavaScript

閱讀泰國 Naresuan 大學的計算機科學講師的案例研究,他在他的 JavaScript 和 Node.js 網頁開發入門課程中使用 VS Code。瞭解他為學生推薦的設定和擴充套件,以及有用的 Node.js 和 JavaScript 教育擴充套件包

Raspberry Pi

有一個新主題描述瞭如何在 Raspberry Pi 裝置上安裝 VS Code

Raspberry Pi logo

值得注意的修復

  • 74505:Emmet 內建外掛作弊以 @ 開頭僅在塊內擴充套件
  • 97632:編輯純 xml 文件時 Emmet 啟動
  • 107506:除錯變數檢視在名稱不唯一時無法顯示來自除錯介面卡的多個變數
  • 112675:Emmet 縮寫在 .scss 檔案中不起作用
  • 113801:標籤換行 - 換行時標籤不應填滿所有多餘空間
  • 115814:無法在整合終端中輸入中文
  • 117350:Home/End、PageUp/PageDown 是否也應該在操作中導航?
  • 117967:複製 + 貼上自動在新標籤頁中開啟檔案
  • 118210:當訊息具有不同的源位置時,除錯控制檯不應摺疊訊息
  • 118557:在具有巢狀資料夾的工作區中,files.exclude 的奇怪行為
  • 118839:我的螢幕閱讀器在狀態列中找不到有關遠端連線的資訊
  • 119585:關閉檔案時所有問題都消失了

感謝

最後但同樣重要的是,衷心感謝以下本月為 VS Code 做出貢獻的人們:

對我們問題跟蹤的貢獻

vscode 的貢獻

vscode-emmet-helper 的貢獻

vscode-eslint 的貢獻

vscode-hexeditor 的貢獻

vscode-html-languageservice 的貢獻

vscode-js-debug 的貢獻

vscode-languageserver-node 的貢獻

vscode-mock-debug 的貢獻

vscode-textmate 的貢獻

vscode-vsce 的貢獻

debug-adapter-protocol 的貢獻

language-server-protocol 的貢獻

© . This site is unofficial and not affiliated with Microsoft.