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

2024 年 2 月 (版本 1.87)

更新 1.87.1:本次更新解決了這些問題

更新 1.87.2:本次更新解決了此安全問題

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

歡迎使用 Visual Studio Code 2024 年 2 月版本。此版本包含許多更新,希望您喜歡,其中一些主要亮點包括:

如果您想線上閱讀這些發行說明,請訪問 code.visualstudio.com 上的更新Insiders:想盡快嘗試新功能嗎?您可以下載每晚Insiders版本並儘快嘗試最新更新。

輔助功能

在編輯器中使用聽寫

如果您已安裝 VS Code 語音擴充套件,現在可以使用語音直接在編輯器中聽寫。

我們添加了新的命令來啟動和停止編輯器聽寫:語音:在編輯器中開始聽寫⌥⌘V(Windows、Linux Ctrl+Alt+V)和語音:在編輯器中停止聽寫Escape)。

您可以按住啟動命令的鍵繫結(⌥⌘V(Windows、Linux Ctrl+Alt+V)來啟用通話模式,在該模式下,一旦鬆開按鍵,語音識別就會停止。

注意:即使在其他使用富文字編輯器的地方,例如 SCM 提交輸入框和審查拉取請求時的評論輸入欄位,聽寫也有效。

語音識別支援多種語言

當您使用 VS Code 語音擴充套件時,現在可以使用 accessibility.voice.speechLanguage 設定從 26 種支援的語言中選擇一種。

語音擴充套件的每種語言都作為一個單獨的擴充套件。當您首次啟動語音識別時,您將看到為每種選擇的語言安裝擴充套件。

可訪問性訊號

可訪問性訊號包括聲音(以前稱為音訊提示)和播報(以前稱為警報)。

幫助:列出訊號聲音幫助:列出訊號播報命令允許使用者檢視可用的訊號並進行配置。此新配置的遷移是自動進行的。

之前

"audioCues.clear": "on | auto | off"
"accessibility.alert.clear": true | false

之後

"accessibility.signals.clear": {
    "sound": "auto | on | off",
    "announcement" (optional): "auto | off"
}

工作臺

釋出說明中的互動式設定

為了讓您更輕鬆地開始使用新功能,現在可以直接從釋出說明中啟用或檢視設定。當您在 VS Code 中檢視釋出說明(顯示釋出說明命令)時,請注意某些設定帶有齒輪圖示。選擇設定或齒輪圖示即可立即與之互動。

Example of an interactive setting in release notes

語言模型訪問的透明度和控制

本期,我們引入了一個提議的 API,使擴充套件能夠使用 GitHub Copilot Chat 的語言模型。為了提供最大的透明度和訪問模型的控制權,我們添加了以下功能。

像管理身份驗證訪問一樣管理語言模型訪問

我們發現,管理對語言模型的訪問與在 VS Code 中管理對 GitHub 帳戶或 Microsoft 帳戶(或任何利用 AuthenticationProvider 模型的服務)的訪問非常相似。由於這些相似性,我們還利用了 VS Code 的身份驗證堆疊來訪問語言模型。

當擴充套件程式想要訪問另一個擴充套件程式的語言模型時,它們將看到一次性的訪問提示,該提示將得到保留:模態對話方塊顯示需要語言模型訪問的擴充套件

授予訪問許可權後,您將能夠在與管理帳戶訪問相同的地點管理該訪問許可權,即在帳戶選單中

Manage trusted extensions options in the account menu

“管理受信任的擴充套件”,將引導您進入一個快速選擇列表,您可以在其中根據需要管理訪問許可權。

Manage trusted extensions quick pick

在初步工作完成後,我們將繼續完善體驗,使其儘可能流暢和清晰。

跟蹤擴充套件的語言模型使用情況

您可以在擴充套件編輯器和執行時擴充套件編輯器中跟蹤擴充套件的語言模型使用情況。下圖顯示了 Copilot Chat 示例擴充套件對 GitHub Copilot Chat 語言模型發出的請求數。

Tracking language model usage in extension editor

Tracking language model usage in running extensions editor

編輯器

編輯器固定滾動

本期,我們預設在編輯器中啟用固定滾動。您可以使用 editor.stickyScroll.enabled 設定對此進行更改。

我們還將編輯器固定小部件中可顯示的行數從 10 行增加到了 20 行。您可以使用 editor.stickyScroll.maxLineCount 設定配置最大行數。

多游標的行內補全

本期,我們增加了對多游標行內補全的支援。現在,行內補全會在主游標位置和次游標位置進行預覽和應用。

多 diff 編輯器中的重構預覽

透過重構預覽,您可以檢視將由程式碼重構應用的更改。重構預覽的更改現在顯示在多 diff 編輯器中,這使得可以一目瞭然地檢視所有更改,並將其與先前版本進行比較。

終端

命令持續時間跟蹤

現在會跟蹤終端的持續時間,並在啟用 Shell 整合時在命令懸停中顯示詳細資訊。

Hovering the terminal command shows how long it took in milliseconds

用於縮放和重置的新命令

有新的命令用於放大、縮小和重置終端字型大小。它們預設未繫結,但您可以將它們繫結到首選的鍵繫結。

  • 終端:增大字型大小workbench.action.terminal.fontZoomIn
  • 終端:減小字型大小workbench.action.terminal.fontZoomOut
  • 終端:重置字型大小workbench.action.terminal.fontZoomReset

原始碼管理

在視窗標題中包含儲存庫或分支名稱

使用者可以透過 window.title 設定來自定義視窗標題。本期,我們為該設定添加了兩個新變數:${activeRepositoryName}${activeRepositoryBranchName}。這些變數分別替換為活動儲存庫的名稱和活動分支的名稱。

提交輸入驗證改進

本期,我們探索了使用語言診斷來改進提交訊息編寫的輸入驗證。使用語言診斷使我們能夠顯示可用於解決輸入驗證警告的程式碼操作。我們添加了程式碼操作以移除空格字元,根據 git.inputValidationSubjectLengthgit.inputValidationLength 設定硬換行,並且我們計劃將來新增更多程式碼操作。

要啟用它,請切換 git.inputValidation 設定。在我們將其設為預設值之前,還有一些問題需要解決,但在此期間,您可以隨意啟用它並告訴我們您的反饋。

傳入/傳出更改設定管理

我們繼續最佳化原始碼管理檢視的傳入/傳出部分。本期,我們在“傳入/傳出”分隔符中添加了一個設定操作,允許使用者更輕鬆地切換 scm.showIncomingChangesscm.showOutgoingChangesscm.showChangesSummary 設定。這些操作也可在原始碼管理檢視標題欄的 ... 選單的傳入與傳出選單中使用。

關閉所有未修改的編輯器命令

為了幫助管理編輯器,我們在命令面板中添加了關閉所有未修改的編輯器命令,該命令將關閉所有具有未修改檔案的編輯器。該命令不會關閉具有未儲存更改的編輯器。

Notebook

筆記本的縮排設定

我們現在透過 notebook.editorOptionsCustomizations 設定支援特定於筆記本的縮排設定。此設定允許使用者透過 editor.tabSizeeditor.indentSizeeditor.insertSpaces 設定為筆記本指定特定的縮排樣式。

使用者還會注意到一個名為筆記本縮排的狀態列條目,顯示筆記本編輯器的當前縮排設定。此條目有一個快速選擇選單,允許在不開啟設定編輯器的情況下管理縮排設定。這與編輯器中提供的快速選擇選單相同。

除錯

支援新的 BreakpointMode

VS Code 支援除錯介面卡協議(DAP)的一項新功能,該功能允許您設定不同“模式”的斷點。例如,本機程式碼的偵錯程式可能會經常使用此功能來設定硬體斷點與軟體斷點。可以透過斷點的上下文選單中的編輯模式操作來更改斷點的模式。

Breakpoint context menu now has an 'Edit Mode...' option to change the breakpoint mode

遠端開發

遠端開發擴充套件允許您透過 SSH 或遠端隧道使用開發容器、遠端機器或適用於 Linux 的 Windows 子系統 (WSL) 作為功能齊全的開發環境。

亮點包括:

  • GitHub Copilot Chat 在向工作區新增開發容器配置檔案時建議模板和功能

您可以在遠端開發版本說明中瞭解有關這些功能的更多資訊。

不要錯過最近的 Visual Studio Code 遠端開發學習路徑,以瞭解 VS Code 中各種遠端開發功能的入門介紹。

對擴充套件的貢獻

GitHub Copilot

重新命名建議

我們正在逐步推出 Copilot 的重新命名建議。當您在編輯器中重新命名符號時,GitHub Copilot 會根據您的程式碼建議一系列可能的重新命名。

行內聊天可訪問性檢視

行內聊天現在有一個可訪問性檢視,可以像可訪問的 diff 檢視器一樣顯示程式碼更改。當您使用螢幕閱讀器模式時,將啟用可訪問性檢視。您還可以使用 inlineChat.accessibleDiffView 設定將其配置為始終開啟或關閉。

此外,更改塊現在可以使用 F7Shift+F7 鍵繫結透過鍵盤進行導航。

行內聊天的預設模式

我們已棄用 live preview 模式,並將 live 設定為行內聊天的預設模式。這意味著建議將直接應用在編輯器中,並且更改會透過行內 diff 高亮顯示。

麥克風圖示始終可見

Copilot Chat 中啟動語音識別的麥克風圖示現在始終可見。當 VS Code 語音擴充套件尚未安裝時,選擇該圖示將首先提示安裝該擴充套件以啟用語音到文字功能。

Microphone icon in chat input

如果您對此功能不感興趣,或者只想透過鍵盤快捷方式使用它,可以從上下文選單中隱藏該功能。

Hide microphone icon in chat input

支援智慧體和斜槓命令的語音

當您使用 VS Code 語音擴充套件透過語音填充聊天輸入欄位時,“@workspace”或“/fix”之類的短語現在會轉換為相應的智慧體和斜槓命令。這在聊天檢視和行內聊天中均有效。

通話模式隨處可用

當您使用 VS Code 語音擴充套件時,語音:啟動語音聊天⌘I(Windows、Linux Ctrl+I)命令現在可以在任何地方工作,並根據您的焦點位置(編輯器中的行內聊天,否則為面板聊天)調出語音聊天。

要啟用通話模式,請按住鍵繫結。語音識別一直處於活動狀態,直到您鬆開按鍵,之後請求會自動提交。

Copilot: Explain This 基於游標位置

以前,在聊天中輸入 Explain This 需要您首先在活動編輯器中選擇要解釋的文字。現在,您還可以將游標放在識別符號上,讓 Copilot 檢視該識別符號的定義。如果定義在另一個檔案中,則需要有豐富的語言支援。

預覽:#codebase 變數

本期,在 GitHub Copilot Chat 的預釋出版本中,我們引入了一個名為 #codebase 的新聊天變數。此變數可用於根據您的查詢為 Copilot 或您正在交談的聊天參與者提供工作區上下文。

在此示例中,您可以將 #codebase 視為先向 @workspace 提問,然後將該響應新增到您向 @terminal 提出的問題中。

這是一個預覽功能,因此 #codebase 可能不是該變數的最終名稱,但我們的意圖是提供一種方法來包含工作區上下文給聊天參與者。

同樣,這僅在 GitHub Copilot Chat 的預釋出版本中可用。請告訴我們您的想法以及您如何使用它!

終端工作區上下文

終端不再自動拉取工作區上下文(這可能需要一些時間)。相反,您需要使用 #codebase 變數顯式包含它。

終端聊天位置

有一個新設定 github.copilot.chat.terminalChatLocation,它控制終端聊天體驗。預設值為 chatView,可以配置為 quickChat 以獲得以前的行為。

Jupyter

本地執行的 Jupyter 伺服器的語言伺服器支援

在連線到本地 Jupyter 伺服器時,Jupyter 擴充套件以前將這些 Jupyter 伺服器視為遠端伺服器。因此,Pylance 擴充套件無法檢測到已安裝的包。

Failed language features for remote Jupyter Servers

本期,Jupyter 擴充套件程式檢測連線的 Jupyter 伺服器是本地的還是遠端的。這使得 Pylance 擴充套件能夠提供更豐富的語言功能,這些功能基於已安裝的包(在本地 Python 環境中)。

Language features for remote Jupyter Servers

Python

Python REPL 的 Shell 整合

現在,透過 WSL 擴充套件,我們在 Mac、Linux 和 Windows 上啟用了 Python REPL 的 Shell 整合。當您在 Python REPL 中執行命令時,彩色圓圈裝飾器會指示命令是否成功或失敗。此外,我們還支援 Python REPL 的終端:執行最近的命令…命令,該命令允許您檢視和使用 REPL 的命令歷史記錄。

我們現在還支援所有作業系統的 Python Shell 檔案歷史記錄,可以透過終端:執行最近的命令訪問。

降低了忽略第一個命令的風險

以前,許多 Python REPL 使用者遇到了與第一個 Python REPL 命令(例如,使用 Shift+Enter)相關的問題。要麼 Python 命令被忽略且未傳送到 Python REPL,要麼命令被複制到啟動 Python REPL 的 Shell 中,而不是複製到 Python REPL 本身。此行為尤其發生在 Windows 使用者或在舊計算機上工作的使用者身上。

本期,我們努力緩解並降低了此行為發生的風險。當用戶將 Python 命令傳送到 VS Code 中的第一個 REPL 例項時,他們現在遇到的命令丟失的情況更少。

改進了新增缺失匯入的功能

Pylance 擴充套件提供了新增匯入程式碼操作來新增缺失的匯入。在 Pylance 的預釋出版本中,我們改進了此程式碼操作。Pylance 現在使用啟發式方法僅顯示置信度最高的三個匯入選項,並根據以下標準進行優先順序排序:最近使用的匯入、來自同一模組的符號、來自標準庫的符號、來自使用者模組的符號、來自第三方包的符號,最後按模組和符號名稱排序。

此外,還引入了兩個新的程式碼操作:搜尋其他匯入匹配項,它顯示一個快速選擇選單,允許您搜尋字首匹配缺失匯入符號的匯入選項;以及更改拼寫,它為因拼寫錯誤而缺失的匯入提供匯入建議。

您現在可以使用 python.analysis.addImport.heuristics 設定啟用此行為。我們計劃在不久的將來將其設為新的預設行為,並在未來的版本中棄用該設定。

除錯 Django 或 Flask 應用時自動開啟瀏覽器

使用 Python Debugger 擴充套件,開發和測試 Python Web 應用程式現在更加方便!現在,您可以透過在 launch.json 配置中設定 autoStartBrowser: true,在啟動 Django 或 Flask 應用的偵錯程式時自動開啟瀏覽器。

{
  "name": "Python Debugger: Flask",
  "type": "debugpy",
  "request": "launch",
  "module": "flask",
  "env": {
    "FLASK_APP": "hello_app.webapp",
    "FLASK_DEBUG": "1"
  },
  "args": ["run"],
  "jinja": true,
  "autoStartBrowser": true
}

對符號連結工作區的 Pytest 的錯誤修復

我們實現了一個錯誤修復,該修復使 pytest 測試能夠正確處理具有符號連結的工作區。在測試重寫過程中,來自符號連結位置的測試會透過其符號連結路徑被正確引用和執行。

GitHub 拉取請求

GitHub Pull Requests 擴充套件取得了更多進展,該擴充套件使您能夠處理、建立和管理拉取請求和問題。新功能包括:

  • 從“GitHub Pull Requests and Issues”重新命名為“GitHub Pull Requests”
  • 在合併或壓縮提交時可以選擇用於合併或壓縮提交的電子郵件
  • githubPullRequests.labelCreated 設定可用於配置自動新增到已建立 PR 的標籤
  • 現在支援“所有者級別”的 PR 模板
  • 在建立 PR 和問題時可以新增專案

查閱該擴充套件的 0.82.0 版本釋出說明,瞭解其他亮點。

預覽功能

面向擴充套件作者:@vscode/l10n-dev 和 Azure AI Translator 預覽

本期,我們引入了一個新命令,它是 @vscode/l10n-dev 的子命令,允許您使用 Azure AI Translator 翻譯字串。

匯出字串並建立 Azure AI Translator 例項後,可以設定 AZURE_TRANSLATOR_KEYAZURE_TRANSLATOR_REGION 環境變數,然後執行以下命令,使用 Azure AI Translator 生成翻譯:

npx @vscode/l10n-dev generate-azure -o ./l10n/ ./l10n/bundle.l10n.json ./package.nls.json

Azure AI Translator 提供免費套餐。我們認為這是為擴充套件作者提供工具的好機會,讓他們能夠更輕鬆地支援許多使用不同語言的使用者。請記住,這些是機器翻譯,因此可能並不總是完美的。如果您有能力,它們可以成為由母語人士進行更精確翻譯的一個很好的起點。

有關更多資訊,請檢視關於 Azure AI Translator 整合的 l10n-dev 文件。

擴充套件開發

擴充套件中的測試覆蓋率

使用其擴充套件的測試 CLI 的擴充套件作者可以透過更新到最新版本的 @vscode/test-cli 包來生成測試覆蓋率。

可以在命令列上透過執行測試時傳遞 --coverage 標誌來生成覆蓋率,也可以在 VS Code UI 中使用執行覆蓋率操作來生成覆蓋率。

launch.json 中的測試配置

現在可以在 launch.json 配置中引用測試配置檔案。

{
    "type": "extensionHost",
    "request": "launch",
    "name": "My extension tests",
+   "testConfiguration": "${workspaceFolder}/.vscode-test.js",
-   "args": ["--extensionDevelopmentPath=${workspaceFolder}"]
},

以前所需的各種 args 會為您生成,但傳遞的任何其他引數都將附加到 VS Code 的命令列。

在問題報告器中貢獻額外資料

上一期,我們在 workbench.action.openIssueReporter 命令中添加了 datauri 欄位。這使擴充套件程式能夠使用預填充的更多資訊直接開啟本機問題報告器。

為了讓擴充套件程式在透過 Help: Reporter Issues... 導航正常問題報告器流程的獨立情況下受益,擴充套件程式可以貢獻一個自定義命令(該命令將呼叫 openIssueReporter)和一個到 issue/reporter 的選單貢獻點。

package.jsoncontributes 的貢獻命令和選單示例

"commands": [
    {
        "command": "extension.myCommand",
        "title": "Report Issue"
    }
],
    "menus": {
        "issue/reporter": [
            {
                "command": "extension.myCommand"
            }
        ]
    }

訂閱問題 #196863以獲取 API 和 openIssueReporter 命令的更新或更改。

提議的 API

聊天和語言模型 API 即將定稿

我們一直在努力為擴充套件程式提供向聊天檢視和通用語言模型使用的支援。我們現在正處於最終確定以下 API 的最後階段,並希望收到您的反饋。

在我們的擴充套件指南中,瞭解更多關於如何構建聊天擴充套件以及如何使用語言模型

FindFiles2 API

我們添加了一個新的提議擴充套件 API,它是現有 workspace.FindFiles API 的改進版本。新的 workspace.FindFiles2 API 引入了新選項,允許工作區檔案搜尋

  • 遵守 files.excludesearch.exclude 設定
  • 遵守忽略檔案
  • 執行模糊搜尋
  • 遵循符號連結

您可以在此處檢視新 API。

請注意,FindFiles2 是一個暫定名稱,並且該功能將來可能會作為 FindFiles 的替代過載提供。

測試覆蓋率 API

本期,測試覆蓋率 API 和編輯器內體驗已達到功能完備狀態。我們鼓勵擴充套件作者嘗試使用它們,並在 VS Code 1.88 版本最終確定之前提供反饋。

Java 擴充套件包已採用測試覆蓋率 API。開發人員已經可以看到執行 Java 測試的覆蓋率結果。現在,您可以選擇“使用覆蓋率執行測試”按鈕來獲取測試覆蓋率,並在測試資源管理器檢視中檢視“測試覆蓋率”面板。在團隊的 12 月1 月更新中瞭解有關使用 Java 擴充套件包進行測試覆蓋率的更多資訊。

雖然 API 在此處篇幅過長無法包含,但我們認為它相當直接,並歡迎您在問題 #123713中對該提案提供意見。

除錯視覺化 API

我們有一個新的 API,它允許擴充套件為變數貢獻視覺化工具。這些視覺化工具可能是執行命令的操作(例如開啟新編輯器),或者是嵌入在除錯檢視中的樹,它們將取代資料的預設表示。

您可以在此處檢視新 API。

新的符號名稱提供程式 API

此 API 允許擴充套件在使用者想要重新命名符號時提供名稱建議。

值得注意的修復

  • 184046 終端中的連結有時會完全失效

感謝

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

問題跟蹤

對我們問題跟蹤的貢獻

拉取請求

vscode 的貢獻

vscode-black-formatter 的貢獻

vscode-hexeditor 的貢獻

vscode-isort 的貢獻

vscode-languageserver-node 的貢獻

vscode-pull-request-github 的貢獻

language-server-protocol 的貢獻

node-pty 的貢獻

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