參加你附近的 ,瞭解 VS Code 中的 AI 輔助開發。

2022 年 8 月 (1.71 版本)

更新 1.71.1:此更新解決了此安全問題

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

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


歡迎來到 Visual Studio Code 2022 年 8 月版本。8 月是 VS Code 的許多工程師休假的時候,但此版本仍有許多更新,我們希望您會喜歡

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

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

工作臺

合併編輯器改進

從包含衝突的檔案開啟合併編輯器

現在,包含衝突的檔案將自動顯示“在合併編輯器中開啟”按鈕,以在文字和合並編輯器之間切換。

合併編輯器檔案開啟時未修改

VS Code 在合併編輯器中開啟檔案時不再修改結果檔案(衝突區域被基礎版本替換)。相反,衝突標記保留在檔案中,但在結果檢視中被隱藏。可以使用複選框將衝突標記替換為任一方、雙方的組合,或者透過取消選中它們,替換為基礎版本。

恢復舊的衝突裝飾器

舊的內聯衝突裝飾器不再停用,因此可以同時使用合併編輯器和內聯體驗。當合並編輯器開啟時,您可以透過單擊編輯器工具欄中的圖示來獲得以前的體驗

透過單擊“原始碼管理”檢視中檔名旁邊的相同圖示,您可以完全跳過合併編輯器。

但是,您可以隨時在新舊體驗之間切換,甚至可以並行使用它們

複選框改進

我們現在確保衝突的複選框始終可見,即使衝突大於視口也是如此。顏色用於強調未處理衝突的複選框。

差異演算法改進

我們開始探索替代的差異演算法,以提高衝突的質量。可以透過以下設定啟用新的實驗性差異演算法

"mergeEditor.diffAlgorithm": "experimental",

此新演算法尚未針對性能進行最佳化,但改進了許多邊緣情況的合併編輯器體驗。

未來展望

在此版本中,我們專注於合併編輯器最重要的 UX 問題,並修復了許多錯誤。如果您仍然對新的合併編輯器感到困惑,我們很樂意聽取您的意見!請在我們的儲存庫中建立一個新問題,分享螢幕截圖和您的合併編輯器狀態(使用將合併編輯器狀態複製為 JSON 命令)。我們非常感謝迄今為止收到的所有反饋,更多的反饋將幫助我們為每個人提供出色的合併編輯器體驗。

我們未來的工作將側重於單獨的基礎檢視衝突最小化、差異演算法最佳化和其他改進

FFmpeg 編解碼器支援

VS Code 隨附的 FFmpeg 共享庫以前僅支援 FLAC 編解碼器。在此版本中,該庫已更新以支援以下編解碼器和容器列表。這將允許從筆記本或透過將音訊和影片嵌入到 Web 檢視的擴充套件播放更多音訊和影片檔案。

  • Vorbis
  • Flac
  • H.264
  • VP8
  • WAV
  • MP3
  • Ogg

主題:fairyfloss (在 vscode.dev 上預覽)

資源管理器重新命名選擇改進

在檔案上啟動重新命名操作後,按 F2 鍵將在檔名、整個選擇和副檔名之間迴圈,以允許更靈活的純鍵盤互動。

圓形按鈕

我們更新了所有按鈕,使其具有略微圓潤的邊角,以更好地匹配我們的設計美學。

An example of a button with rounded corners

主題:Material Theme Palenight High Contrast

Windows 上的視窗控制元件疊加

在 1.68 版本中,VS Code 採用了 Electron 對視窗控制元件疊加功能的支援,該功能預設情況下處於關閉狀態,並由實驗性標誌控制。我們解決了影響 VS Code 的此功能的剩餘問題,允許我們為 Windows 上的所有使用者預設啟用它。

視窗控制元件疊加功能允許 Windows 11 上的 VS Code 使用者選擇快照佈局,以便將 VS Code 放置在桌面上。

Windows Snap Layouts control in the right of the VS Code title bar

樹檢視展開模式

設定“工作臺 > 樹:展開模式 (workbench.tree.expandMode)”控制樹節點是單次單擊還是雙擊展開,現在將受擴充套件貢獻的樹檢視的尊重。

編輯器

粘滯滾動

粘性滾動在視口頂部顯示當前範圍。該功能不再是實驗性的,可以透過設定 editor.stickyScroll.enabled 啟用。進一步的改進是

  • 可以使用編輯器 > 粘性滾動:最大行數 (editor.stickyScroll.maxLineCount) 設定來設定要顯示的最大行數。預設最大值為 5 行。
  • 您可以在粘性滾動中使用 Ctrl/Cmd + 單擊,導航到定義。

新的程式碼操作控制元件

我們徹底修改了程式碼操作控制元件。現在,它不再是簡單的程式碼操作選單,而是一個自定義控制元件,可以更輕鬆地找到您想要的程式碼操作

The new Code Action control showing Quick Fixes and refactorings

新的控制元件還允許 VS Code 顯示額外資訊。例如,您現在可以將滑鼠懸停在停用的程式碼操作上,以瞭解它們被停用的原因

Hovering over a disabled Code Action to understand why it is disabled

您還可以透過修改以下命令的鍵盤快捷鍵來自定義用於在程式碼操作列表中導航的鍵盤快捷鍵

  • selectNextCodeAction
  • selectPrevCodeAction
  • acceptSelectedCodeAction

展望未來,新的程式碼操作 UI 為進一步的 UX 改進提供了堅實的基礎。如果您有任何建議,請務必告訴我們!

配置建議匹配

有一個新設定可以配置 IntelliSense 篩選。預設情況下,第一個字元必須匹配單詞開頭,例如 c 必須匹配 consoleWebContext 但不匹配 descriptioneditor.suggest.matchOnWordStartOnly 設定更改此行為。停用時,篩選將考慮任何匹配項 - 這會導致更多結果,但篩選仍然透過匹配質量進行。

在下面的短影片中,您可以看到當 matchOnWordStartOnly 停用時,'dir' 的建議包括更多項,例如 'mkdir' 和 'makedirs'。

原始碼管理

提交操作按鈕改進

使用者可以使用 git.postCommitCommand 設定全域性控制在成功提交操作後執行的輔助操作(例如 pullsync)。此里程碑我們添加了一個新設定 git.rememberPostCommitCommand,可以啟用此設定來記住每個儲存庫上次執行的輔助操作。

終端

Shell 整合改進

此版本對 Shell 整合進行了以下改進

  • Fish Shell 整合僅作為實驗性手動安裝提供。有關如何安裝它,請參閱Shell 整合文件
  • Windows Git Bash Shell 整合僅作為實驗性手動安裝提供。有關詳細資訊,請參閱手動安裝部分
  • 支援常見的替代當前工作目錄序列:OSC 6 ; scheme://<cwd> STOSC 1337 ; CurrentDir=<cwd> STOSC 9 ; 9 ; <cwd> ST
  • 更好地處理各種 Shell 整合邊緣情況

平滑滾動

終端現在支援平滑滾動,它將在短時間內動畫滾動,以幫助您在滾動後看到您的位置,類似於編輯器和列表。要啟用平滑滾動,請設定

"terminal.integrated.smoothScrolling": true

下劃線樣式和顏色

現在,使用最初由 kitty 終端首創的轉義序列支援下劃線樣式和顏色。對於支援的程式,只要它們將這些序列傳送到 VS Code 終端,這些新的下劃線就應該自動亮起。

The terminal can now display straight, double, curly, dotted, and dashed underlines in any color

此更改包括在啟用 GPU 加速時改進下劃線渲染,這避免了具有長下行字形的字形與下劃線重疊

An example showing that characters with descenders such as 'g' and 'p' no longer overlap with underlines

由於ConPTY 中存在一個懸而未決的問題,Windows 目前不支援下劃線樣式和顏色。

渲染改進

對終端渲染進行了幾項改進

  • 一個長期存在的錯誤已修復,該錯誤有時在工作臺放大或縮小時導致模糊!

    Text is now more crisp as canvas is no longer stretched, which caused anti-aliasing to look poorly

  • 當啟用最小對比度並且需要翻轉文字亮度以確保滿足比率時,文字的色調將保留。

    Bold yellow text on red in some themes will now display as dark yellow instead dark grey

  • 新的主題鍵 terminal.inactiveSelectionBackground 可用於顯示不同的選擇背景顏色,無論終端是否聚焦,以便更好地與編輯器對齊。

    Most themes now dim the selection background color when not focused

  • 自定義 Powerline 字形渲染改進了邊緣裁剪。這在半圓形字元上最為明顯,現在應該是一個平滑的曲線。

    Powerline glyphs are no longer cut off on the edges

任務

視窗重新載入時重新連線

現在,在視窗重新載入時,監視任務將重新連線,從而在 VS Code 更新或擴充套件狀態更改時實現不間斷工作。任務重新連線預設啟用,但可以使用 task.reconnection 設定停用。

除錯

launch.json 中的 suppressMultipleSessionWarning 選項

當您嘗試使用啟動配置開始除錯,但該配置已經存在活動的除錯會話時,VS Code 將在啟動第二個例項之前顯示警告對話方塊。這很容易意外發生,通常不是您的意圖。但是,如果執行相同配置的多個例項是您的工作流的一部分,您現在可以透過在 launch.json 配置檔案中新增 "suppressMultipleSessionWarning": true 來停用此警告。

評論

篩選

“評論”檢視有一個新的篩選器,您可以透過評論文字和已解決/未解決狀態進行篩選。

編輯器裝飾

“評論”編輯器裝訂線裝飾現在使用 codicons 並具有新的樣式。

語言

TypeScript 4.8

VS Code 現在附帶 TypeScript 4.8.2。此重大更新帶來了型別檢查和推理的語言改進。在工具方面,您還應該會看到一些不錯的效能改進和錯誤修復!

有關此更新的更多資訊,請檢視TypeScript 4.8 公告

TypeScript 直播

如果您錯過了 VS Code 的 TypeScript 直播,請檢視最近與 Matt Pocock 進行的兩次會話。

VS Code livestreams page

對擴充套件的貢獻

Jupyter

筆記本影像貼上

Jupyter 擴充套件現在允許使用者將螢幕截圖或影像檔案貼上到其筆記本中的 Markdown 單元格中。目前僅支援 image/png MIME 型別。要使用該功能,請新增/啟用以下設定

"ipynb.experimental.pasteImages.enabled": true
"editor.experimental.pasteActions.enabled": true

使用 Pylance 改進 Jupyter Notebooks 的 IntelliSense

由於語言伺服器協議的更新包含了筆記本支援,現在使用 Pylance 時,Jupyter Notebooks 與 Python 核心的 IntelliSense 支援要好得多。

您不僅在筆記本檔案中編寫 Python 程式碼時會獲得改進的自動完成選項,而且還可以使用重構功能,例如提取變數、提取方法和重新命名符號,以及自動匯入和語義高亮。

主題:Horizon Extended (在 vscode.dev 上預覽)

即時預覽

即時預覽擴充套件現在正式支援多根工作區!雖然使用者之前在技術上可以在多根工作區中使用即時預覽,但現在有了更簡潔的實現來支援它。

即時預覽擴充套件現在為多根工作區中的每個根啟動一個新伺服器;因此,當預覽多根工作區時,相對於專案根目錄的連結(以 / 開頭的連結)將正常工作。

主題:GitHub Dark Dimmed (在 vscode.dev 上預覽)

您可以將滑鼠懸停在“即時預覽”的狀態列指示器(位於右下角)上,以檢視擴充套件開啟的伺服器。在下圖中,為每個工作區啟動了一個伺服器(在埠 3000 和 3002 上),並且為不屬於任何開啟工作區的檔案(在埠 3004 上)生成了另一個伺服器。

Live Preview multi-root ports displayed from the Status bar indicator

立即安裝即時預覽擴充套件並試用!📡✨🔎

GitHub 拉取請求和議題

GitHub 拉取請求和問題擴充套件取得了更多進展,該擴充套件允許您處理、建立和管理拉取請求和問題。此版本的亮點包括

  • 拉取請求通知。
  • 審閱評論可以直接從拉取請求概述中解決/未解決。

檢視擴充套件的 0.50.0 版本的更新日誌以檢視其他亮點。

遠端開發

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

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

預覽功能

厭倦了在移動或重新命名檔案時意外破壞 Markdown 中的連結或影像?嘗試新的 markdown.experimental.updateLinksOnFileMove.enabled 設定!

啟用此新的實驗性設定後,當檔案在 VS Code 資源管理器中移動或重新命名時,VS Code 將自動更新 Markdown 中的連結和影像

可以使用 markdown.experimental.updateLinksOnFileMove.enabled 設定啟用此新行為。您可以使用 markdown.experimental.updateLinksOnFileMove.externalFileGlobs 控制受影響的檔案型別。

試用此新功能並務必分享反饋。

設定配置檔案

我們在過去幾個月一直在努力支援 VS Code 中的設定配置檔案,這是社群最受歡迎的需求之一。此功能透過 workbench.experimental.settingsProfiles.enabled 設定提供預覽。試用一下,並透過在 vscode 儲存庫中建立問題或在 問題 #116740 中評論來向我們提供反饋。

命令列介面

在此里程碑中,我們添加了對設定配置檔案的命令列介面 (CLI) 支援。您現在可以使用 --profile 引數傳遞配置檔案的名稱,並使用該配置檔案開啟資料夾或工作區。下面的命令列使用“Web 開發”配置檔案開啟 web-sample 資料夾

code ~/projects/web-sample --profile "Web Development"

如果指定的配置檔案不存在,則會建立一個具有給定名稱的新空配置檔案。

臨時設定配置檔案

現在還支援臨時設定配置檔案,可以建立並暫時與資料夾或工作區關聯。一旦不再與任何資料夾或工作區關聯,臨時配置檔案將自動刪除。

在下面的短影片中,當用戶開啟一個資料夾並選擇設定配置檔案:建立臨時設定配置檔案命令時,將建立一個新的“Temp 1”配置檔案,並在配置檔案列表中可見。當資料夾關閉時,“Temp 1”配置檔案將被刪除。

您還可以從 CLI 使用 --profile-temp 開關建立臨時設定配置檔案並將其與資料夾或工作區關聯。下面的命令列使用在關閉資料夾後刪除的臨時配置檔案開啟 try-out-sample 資料夾

code ~/projects/try-out-sample --profile-temp

在不同開發環境之間移動時帶上您的更改

當您瀏覽 GitHub 或 Azure Repos 儲存庫(例如 https://vscode.dev/github/microsoft/vscode)時,您可以使用 繼續工作 命令選擇與您的儲存庫一起使用的不同開發環境。

以前,如果您在虛擬工作區中有待處理的編輯,則需要將它們推送到 GitHub 或 Azure Repos 才能在其他地方檢視它們。在此里程碑中,我們已將編輯會話整合到繼續工作功能中,以便您的未提交更改會自動隨您轉移到目標開發環境,例如 GitHub codespace。

在下面的影片中,當用戶建立並切換到新的 GitHub codespace 中工作時,他們在 Web 版 VS Code 中對 TypeScript 檔案所做的更改將應用。

要試用此功能,請在設定中設定 "workbench.experimental.editSessions.enabled": true,啟用設定同步,然後在 Web 版或桌面版 VS Code 中執行編輯會話:登入命令。

當您使用 Web 版 VS Code 時,您的未提交更改將在您使用繼續工作時隨您轉移到

  • GitHub Codespaces 中的新雲託管環境
  • GitHub 儲存庫的新本地克隆
  • 具有相同虛擬 GitHub 儲存庫的本地 VS Code 例項

當您使用桌面版 VS Code 和 遠端儲存庫 擴充套件時,您的未提交更改將在您使用繼續工作時隨您轉移到

  • GitHub Codespaces 中的雲託管環境(可透過 GitHub Codespaces 擴充套件獲得)
  • GitHub 儲存庫的新本地克隆
  • 容器卷中 GitHub 儲存庫的新克隆(可透過 開發容器 擴充套件獲得)
  • https://vscode.dev
  • 包含儲存庫克隆的現有本地資料夾

擴充套件開發

TerminalExitStatus.reason

擴充套件作者現在可以透過新的 TerminalExitReason API 更好地瞭解終端退出的原因。

export enum TerminalExitReason {
  Unknown = 0,
  Shutdown = 1,
  Process = 2,
  User = 3,
  Extension = 4
}

列舉設定 enumItemLabels 文件

“設定”編輯器中的列舉設定支援 enumItemLabels 鍵,它允許擴充套件作者指定要顯示在與 enum 值對應的下拉列表中的值。

Example of enumItemLabels with a mock setting. The select box displays the label value, and the dropdown options display both the label value and the enum value, though the enum values are rendered less prominently.

主題:淺粉色(在 vscode.dev 上預覽)

新的 activeWebviewPanelId 上下文鍵

新的 activeWebviewPanelId 上下文鍵跟蹤當前聚焦的 Web 視圖面板的 viewType。您可以在 when 子句中使用它,以便在 Web 檢視聚焦時啟用命令或選單項。

"when": "activeWebviewPanelId == 'markdown.preview'"

Web 上的 TypeScript 伺服器外掛

TypeScript 語言服務外掛現在在 Web 上受支援。這適用於透過 typescriptServerPlugins 貢獻點由擴充套件貢獻的外掛。

要開始使用,您必須首先透過在 package.json 中除了 main 之外新增 browser 入口點來告訴 TypeScript 您的外掛已啟用 Web 功能

"main": "out/main.js",
"browser": "out/main.browser.js"

browser 入口點必須是一個 JavaScript 模組,它匯出一個預設函式來啟用外掛

export default function init(modules: { typescript: typeof import("typescript/lib/tsserverlibrary") }) {
  ...
};

請記住,在 Web 上,您的外掛將在正常的 Web Worker 環境中執行,因此您**不能**使用 Node.js API,例如 fs

停用的樹項

命令的啟用子句解析為 false 的樹項將顯示為停用。

Markdown 語言伺服器

VS Code 中的 Markdown 支援已重新實現為功能齊全的語言伺服器。您可以在 Matt BiernerMarkdown 語言伺服器部落格文章中瞭解他的旅程,其中他描述了為 Markdown 檔案新增程式語言功能,例如查詢所有引用重新命名符號和斷開連結檢測。

“檢視/標題”選單上下文即將更改

在八月,我們嘗試將檢視樹的焦點和選擇傳遞給貢獻到樹檢視的 view/title 選單的命令。在此版本中,我們恢復了此更改,因為它給某些擴充套件造成了問題。我們希望在九月恢復此更改併發布。如果此更新將破壞您的擴充套件或您認為此行為不可取,請在問題 #42903 中留言。

除錯介面卡協議

“startDebugging”請求的提案

如今 VS Code 支援多個併發除錯會話,但 除錯介面卡協議 (DAP) 僅涵蓋單個會話。這意味著以程式設計方式建立新的除錯會話不屬於 DAP,只能在 DAP 或除錯介面卡之外完成,通常在包含除錯介面卡的除錯擴充套件中完成。結果是,多會話功能(例如除錯子程序)對於僅重用除錯介面卡而不重用 VS Code 特定除錯擴充套件的非 VS Code DAP 客戶端來說不容易獲得。

為了改善這種情況,我們計劃向 DAP 新增一個新的反向請求,以從除錯介面卡內部建立新的除錯會話。經過幾輪討論,我們準備了 startDebugging 反向請求的提案。如果您是除錯擴充套件或 DAP 客戶端作者,並且對此 DAP 協議新增感興趣,我們將不勝感激您的反饋。

工程

Electron 19 更新

在此里程碑中,我們完成了將 Electron 19 捆綁到 VS Code 桌面版中的探索,我們要感謝所有參與內部版自託管的人。此更新附帶 Chromium 102.0.5005.167 和 Node.js 16.14.2

Windows 7 支援已終止

Microsoft 於 2020 年 1 月終止了對 Windows 7 的支援。然而,Electron 透過修補 libuv 庫繼續支援 Windows 7。隨著 Electron 19 更新,libuv 補丁不再起作用,我們建議使用者更新到更新的 Windows 版本以使用 VS Code 桌面版本。VS Code 將不再在 Windows 7 上提供產品更新和安全修復。您可以在 support.microsoft.com 瞭解有關升級 Windows 的更多資訊。

值得注意的修復

  • 115768 Windows:不同顯示器上不同的縮放級別無法在正確位置恢復視窗
  • 133444 將設定選項卡拖動到另一個編輯器組會清除搜尋查詢
  • 140305 主視窗跨多個螢幕擴充套件時,重新開啟時無法恢復位置
  • 146683 開啟時窗口布局樣式錯誤
  • 148492 對工作區檔案使用與平臺無關的路徑
  • 154963 修復了擴充套件教程中的 codicon 支援
  • 155341 如果資料寫入延遲,管道到 VS Code 會失敗
  • 156075 [Emmet] 每語言“在 Tab 上觸發展開”
  • 156385 執行最近的命令顯示已解析的別名 - ls--color=auto 附加到執行的命令

感謝

最後但同樣重要的是,向 VS Code 的貢獻者們致以衷心的感謝

問題跟蹤

對我們問題跟蹤的貢獻

拉取請求

vscode 的貢獻

vscode-extension-samples 的貢獻

devcontainers/cli 的貢獻