🚀 在 VS Code 中

2022 年 8 月 (版本 1.71)

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

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

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


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

如果您想線上閱讀這些版本資訊,請前往 Updates 上的「code.visualstudio.com」。

Insiders: 想要盡快試用新功能嗎?您可以下載每晚Insiders 組建,並在最新更新可用時立即試用。

工作台

合併編輯器改進

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

現在,有衝突的檔案會自動顯示「在合併編輯器中開啟」按鈕,以便在文字編輯器和合併編輯器之間轉換。

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

VS Code 在合併編輯器中開啟結果檔案時,不再修改結果檔案 (衝突區域已取代為基底)。相反地,衝突標記會保留在檔案中,但在結果檢視中會隱藏。核取方塊可用於將衝突標記取代為任一側、兩側的組合,或取消核取方塊,則取代為基底。

還原舊的衝突裝飾

舊的內嵌衝突裝飾不再停用,因此合併編輯器和內嵌體驗可以一起使用。當合併編輯器開啟時,您可以在編輯器工具列中按一下一下即可取得先前的體驗

按一下原始檔控制檢視中檔案名稱旁邊的相同圖示,您可以完全略過合併編輯器。

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

核取方塊改進

我們現在確保衝突的核取方塊始終可見,即使衝突大於檢視區也一樣。色彩用於強調未處理衝突的核取方塊。

差異演算法改進

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

"mergeEditor.diffAlgorithm": "experimental",

這個新的演算法尚未針對效能進行最佳化,但改善了許多邊緣案例的合併編輯器體驗。

展望未來

在此版本中,我們專注於合併編輯器最重要的 UX 問題,並修正了許多錯誤。如果您仍然對新的合併編輯器感到困惑,我們很樂意收到您的意見!請在我們的存放庫中建立新的問題,分享螢幕擷取畫面和您的合併編輯器狀態 (使用「將合併編輯器狀態複製為 JSON」命令)。我們非常感謝目前收到的所有意見反應,更多的意見反應將有助於我們讓所有人的合併編輯器體驗變得更好。

我們未來的重點工作將放在個別基底檢視衝突縮小、差異演算法精進,以及其他改進

FFmpeg 編解碼器支援

作為 VS Code 一部分隨附的 FFmpeg 共用程式庫先前僅支援 FLAC 編解碼器。在此版本中,程式庫已更新為支援下列編解碼器和容器清單。這將允許從筆記本播放更多音訊和視訊檔案,或由擴充功能將音訊和視訊嵌入 WebView 中。

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

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

Explorer 重新命名選取範圍改進

在檔案上起始重新命名動作後,按下 F2 鍵將循環瀏覽檔案名稱、整個選取範圍和副檔名,以允許更彈性的僅限鍵盤互動。

圓角按鈕

我們已更新所有按鈕,使其具有輕微的圓角,以更符合我們的設計美學。

An example of a button with rounded corners

主題:Material Theme Palenight High Contrast

Windows 上的視窗控制項覆疊

在 1.68 版本中,VS Code 採用了來自 Electron 的 視窗控制項覆疊 功能支援,但位於實驗性旗標之後,且預設為關閉。我們已解決此功能影響 VS Code 的其餘問題,讓我們能夠預設為所有 Windows 使用者啟用它。

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 shell 整合的 Git bash 僅作為實驗性手動安裝提供。請參閱關於手動安裝的章節以了解詳細資訊。
  • 支援常見的替代目前工作目錄序列: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 會在啟動第二個執行個體之前顯示警告對話方塊。這很容易意外執行,而且通常不是您想要執行的動作。但是,如果執行相同組態的多個執行個體是您工作流程的一部分,您現在可以將 "suppressMultipleSessionWarning": true 新增至您的 launch.json 組態檔來停用此警告。

註解

篩選

註解檢視有一個新的篩選器,您可以在其中依註解文字和已解決/未解決狀態進行篩選。

編輯器裝飾

註解編輯器裝訂邊裝飾現在使用 codicon,並具有新的樣式。

語言

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 Notebook 的 IntelliSense

使用 Pylance 時,Jupyter Notebook 與 Python 核心的 IntelliSense 支援現在已大幅改善,這要歸功於語言伺服器協定中的更新,以包含筆記本支援。

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

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

Live Preview

Live Preview 擴充功能現在正式支援多根工作區!雖然使用者在技術上可能已在多根工作區中使用 Live Preview,但現在有一個更簡潔的實作支援它。

Live Preview 擴充功能現在會為多根工作區中的每個根啟動新的伺服器;因此,當預覽多根工作區時,相對於專案根目錄的路徑 (以 / 開頭的路徑) 將會正常運作。

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

您可以將滑鼠停留在 Live Preview 的狀態列指示器 (位於右下角) 上方,以檢視擴充功能開啟的伺服器。在下圖中,已為每個工作區 (在連接埠 3000 和 3002 上) 啟動伺服器,並且為未來自任何開啟工作區的檔案產生另一個伺服器 (在連接埠 3004 上)。

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

安裝 Live Preview 擴充功能,立即試用看看!📡✨🔎

GitHub Pull Requests and Issues

GitHub Pull Requests and Issues 擴充功能上取得了更多進展,可讓您處理、建立及管理提取要求和問題。此版本的重點包括

  • 提取要求的通知。
  • 可以直接從提取要求概觀解決/取消解決檢閱註解。

請查看擴充功能 0.50.0 版本的變更記錄,以查看其他重點。

遠端開發

持續進行 Remote Development 擴充功能的開發工作,可讓您使用容器、遠端機器或 Windows Subsystem for Linux (WSL) 作為功能完整的開發環境。

您可以在遠端開發版本資訊中了解新的擴充功能功能和錯誤修正。

預覽功能

是否厭倦了在移動或重新命名檔案時,不小心破壞 Markdown 中的連結或影像?試試看新的 markdown.experimental.updateLinksOnFileMove.enabled 設定!

啟用此新的實驗性設定後,當檔案在 VS Code Explorer 中移動或重新命名時,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"

如果指定的設定檔不存在,則會建立具有指定名稱的新空白設定檔。

暫時性設定設定檔

現在也支援暫時性設定設定檔,可以建立暫時性設定設定檔並將其與資料夾或工作區建立關聯。暫時性設定檔一旦未與任何資料夾或工作區建立關聯,就會自動刪除。

在下面的短片中,當使用者開啟資料夾並選取「設定設定檔:建立暫時性設定設定檔」命令時,會建立新的「暫時 1」設定檔,並在設定檔清單中可見。當資料夾關閉時,「暫時 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 中工作時,他們在使用 VS Code for the Web 時對 TypeScript 檔案所做的變更會套用。

若要試用此功能,請在您的設定中設定 "workbench.experimental.editSessions.enabled": true,啟用設定同步,並在 VS Code for the Web 或桌面版中執行「編輯工作階段:登入」命令。

當您使用 VS Code for the Web 時,當您在下列環境中使用「繼續在以下環境工作」時,您的未認可變更將會隨您移動

  • GitHub Codespaces 中新的雲端託管環境
  • GitHub 存放庫的新本機複本
  • 具有相同虛擬 GitHub 存放庫的本機 VS Code 執行個體

當您將桌面版 VS Code 與 Remote Repositories 擴充功能搭配使用時,當您在下列環境中使用「繼續在以下環境工作」時,您的未認可變更將會隨您移動

  • GitHub Codespaces 中的雲端託管環境 (透過 GitHub Codespaces 擴充功能提供)
  • GitHub 存放庫的新本機複本
  • 容器磁碟區中 GitHub 存放庫的新複本 (透過 Dev Containers 擴充功能提供)
  • 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.

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

新的 activeWebviewPanelId 內容索引鍵

新的 activeWebviewPanelId 內容索引鍵 會追蹤目前聚焦的 WebView 面板的 viewType。您可以在 when 子句中使用它,以便在您的 WebView 聚焦時啟用命令或功能表項目。

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

Web 上的 TypeScript 伺服器外掛程式

Web 上現在支援TypeScript 語言服務外掛程式。這適用於由擴充功能使用 typescriptServerPlugins 貢獻點貢獻的外掛程式。

若要開始使用,您必須先告知 TypeScript 您的外掛程式已啟用 Web,方法是在您的 package.json 中新增 browser 進入點以及 main

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

browser 進入點必須是 JavaScript 模組,其匯出啟動外掛程式的預設函式

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

請記住,在 Web 上,您的外掛程式將在一般的 Web 工作人員環境中執行,因此您無法使用 Node.js API,例如 fs

已停用的樹狀項目

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

Markdown 語言伺服器

VS Code 中的 Markdown 支援已重新實作為功能完整的語言伺服器。您可以在 Matt BiernerMarkdown 語言伺服器部落格文章中閱讀關於他的旅程,他在文章中描述了如何為 Markdown 檔案新增程式設計語言功能,例如尋找所有參考重新命名符號和損壞的連結偵測。

即將對 'view/title' 功能表的內容進行變更

在 8 月,我們嘗試傳遞檢視樹狀目錄的焦點和選取範圍,以用於貢獻給樹狀檢視的 view/title 功能表的命令。在此版本中,我們還原了變更,因為它對某些擴充功能造成了問題。我們想要將變更帶回並在 9 月發行。如果此更新將會中斷您的擴充功能,或者您認為此行為不理想,請在 問題 #42903 中留下意見。

偵錯配接器協定

「startDebugging」要求的提案

目前 VS Code 支援多個並行偵錯工作階段,但偵錯配接器協定 (DAP) 僅涵蓋單一工作階段。這表示以程式設計方式建立新的偵錯工作階段並非 DAP 的一部分,而且只能在 DAP 或偵錯配接器外部完成,通常在包含偵錯配接器的偵錯擴充功能中。這樣做的後果是,多工作階段功能 (例如偵錯子處理序) 無法輕易地用於僅重複使用偵錯配接器而非 VS Code 特定偵錯擴充功能的非 VS Code DAP 用戶端。

為了改善這種情況,我們計劃將新的反向要求新增至 DAP,以從偵錯配接器內部建立新的偵錯工作階段。經過幾輪討論後,我們準備了 「startDebugging」反向要求的提案。如果您是偵錯擴充功能或 DAP 用戶端作者,並且對此 DAP 協定新增功能感興趣,我們將不勝感激您的意見反應。

工程

Electron 19 更新

在此里程碑中,我們完成了將 Electron 19 捆綁到 VS Code 桌面版的探索,我們要感謝所有參與 Insiders 自行託管的人員。此更新隨附 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 的貢獻者。

Issue 追蹤

Issue 追蹤的貢獻

Pull request

vscode 的貢獻

vscode-extension-samples 的貢獻

devcontainers/cli 的貢獻