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

2023年9月 (版本 1.83)

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

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


歡迎來到 Visual Studio Code 2023 年 9 月版本。此版本包含許多更新,我們希望您會喜歡,其中一些主要亮點包括:

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

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

輔助功能

GitHub 拉取請求和問題評論改進

允許您處理、建立和管理拉取請求和問題的GitHub Pull Requests and Issues 擴充套件在此迭代中為評論和審閱體驗帶來了許多無障礙改進。

當螢幕閱讀器使用者開啟包含評論範圍的編輯器時,會得到通知。新的無障礙幫助對話方塊(editor.action.accessibilityHelp)提供了關於在評論執行緒和範圍之間導航的命令的詳細資訊。

此外,評論控制元件現在是無障礙的。在此上下文中還有一個幫助對話方塊(editor.action.accessibilityHelp),用於告知使用者預期以及如何使用該功能。還有新的命令Comments: Go to Next Commenting Range⌘K ⌥⌘↓ (Windows, Linux Ctrl+K Ctrl+Alt+Down))和Comments: Go to Previous Commenting Range⌘K ⌥⌘↑ (Windows, Linux Ctrl+K Ctrl+Alt+Up)),用於在評論範圍之間導航。

工作臺

命令面板中的相似命令結果

查詢您正在尋找的命令可能具有挑戰性。僅在 VS Code 中就有超過 2000 個命令……再加上您喜歡的擴充套件,這個數字還會更高。我們希望引入一種方法來幫助您找到所需內容,同時保持命令面板當前提供的速度。為此,我們在命令面板結果中包含了一個名為“相似命令”的新部分。以下是一些示例:

查詢不再需要“模糊”匹配才能顯示在結果中。例如“Toggle Auto Save”。

'turn on auto save' and 'Toggle Auto Save' showed up in a similar results section

如果存在模糊匹配的結果,它們仍然顯示在頂部,相似命令緊隨其後。

user searched for 'change language' and 'Configure Display Language' showed up in a similar results section

擴充套件貢獻的命令也會被拾取。

user searched for 'show git blame' and 'toggle file blame' showed up in a similar results section

我們認為這將極大地幫助那些難以記住確切命令名稱的人……說實話,我們都有過這樣的時刻。

這只是此新功能的第一版,仍然需要匹配命令名稱中的確切單詞。未來,您可以期待改進,例如:

  • 基於命令的非可見描述進行命令匹配。
  • 更好的同義詞基本處理(“toggle”和“turn on/off”,“show”和“reveal”等)。

讓我們知道你的想法!

配置檔案的圖示

您現在可以將圖示與配置檔案關聯。此圖示將顯示在活動欄中,取代Manage齒輪圖示。如果您有多個配置檔案並希望快速識別當前活動的配置檔案,這將非常有用。

下圖顯示了建立新配置檔案時選擇圖示的對話方塊。

Icon selection dialog

活動配置檔案圖示隨後顯示在活動欄中。

Active profile icon in the Activity bar

編輯器標籤頁高度密度

window.density.editorTabHeight 設定允許使用者將標籤頁高度減小到更緊湊的大小。

預設編輯器標籤頁高度

Editor tabs with default height

緊湊的編輯器標籤頁高度

Editor tabs with compact height

固定的編輯器標籤頁在單獨一行

已新增新設定workbench.editor.pinnedTabsOnSeparateRow。啟用後,固定的標籤頁將顯示在其他標籤頁上方的單獨一行。編輯器標籤頁在跨標籤頁行拖動時會自動固定或取消固定。

Moving editor tabs between the two tab rows

設定編輯器搜尋調整

設定編輯器現在會顯示更少的給定搜尋查詢結果,以減少噪音。如果您安裝了GitHub Copilot Chat擴充套件,除了透過關鍵字匹配找到的設定之外,只會選擇前五個 Copilot Chat 設定匹配項,而不是前十五個。

搜尋結果現在也按設定編輯器目錄的順序排序,以將常用設定顯示在頂部,並按原始順序顯示過濾後的擴充套件設定。要恢復按匹配型別和分數排序搜尋結果,請將workbench.settings.settingsSearchTocBehavior 設定為"hide",清除搜尋查詢,然後開始新的搜尋。

Searching "default formatter" in the Settings editor results in the editor.defaultFormatter setting appearing at the top.

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

編輯器操作的溢位行為改進

當編輯器操作的數量超過可用空間時,這些操作會溢位到...More Actions選單中。此邏輯已得到改進,並且一些重要操作(如CloseSplit Editor)現在被排除在外。這意味著即使可用空間有限,它們也始終可見。

顏色主題選擇器現在顯示主題識別符號

顏色主題選擇器現在顯示顏色主題的本地化名稱及其旁邊的字串識別符號。這是為了幫助使用非英語語言包但只知道主題英文名稱的使用者。

Color Theme Picker in Korean displaying English theme identifiers next to the localized name

評論

Comments editor 在諸如GitHub Pull Request and Issues 擴充套件中被使用,它顯示拉取請求評論。

評論編輯器大小

Comments editor 現在會隨著行數的新增而擴充套件,直到達到一個依賴於評論所在編輯器大小的最大高度。

Comment editor expanding as lines are added

為未解決的評論開啟 Comments 檢視

comments.openView 設定有一個新的可能值firstFileUnresolved。設定firstFileUnresolved會導致 Comments 檢視在會話中第一次開啟包含未解決評論的檔案時開啟。

自動摺疊已解決的評論

預設情況下,當您解決一個評論執行緒時,它現在會摺疊。此功能可以透過設定"comments.collapseOnResolve"停用。

編輯器

儲存時的程式碼操作和自動儲存

您現在可以在編輯器中啟用“儲存時的程式碼操作”。這會在儲存或視窗更改(onWindowChange)或焦點更改(onFocusChange)時自動儲存時觸發程式碼操作。要啟用此功能或更新當前設定,請檢查Editor: Code Actions On Saveeditor.codeActionsOnSave)並將每個程式碼操作的設定更改為always

設定值也已更新,當前布林值將被棄用,轉而使用字串等價物。

選項包括

  • explicit:在顯式儲存時觸發程式碼操作。與true相同。
  • always:明確儲存時以及視窗或焦點更改的自動儲存時觸發程式碼操作。
  • never:從不觸發儲存時的程式碼操作。與 false 相同。

此版本仍然支援布林值。

Notebook

在筆記本中轉到符號

當啟用notebook.gotoSymbols.showAllSymbols時,Go to Symbol Quick Pick 將填充筆記本中的所有程式碼符號。

單元格執行時的滾動

您現在可以使用notebook.scrolling.revealNextCellOnExecute設定配置在執行notebook.cell.executeAndSelectBelow時,下一個單元格會顯示多少內容。

  • fullCell - 完整的下一個單元格(預設)。
  • firstLine - 僅第一行。
  • none - 完全不滾動。

下面顯示了"notebook.scrolling.revealNextCellOnExecute": "firstLine"

空白字元修剪支援

筆記本現在支援三個現有的與空白字元相關的設定。

  • files.trimTrailingWhitespace - 儲存檔案時修剪尾隨空白字元。
  • files.trimFinalNewlines - 修剪檔案末尾最後一個換行符之後的所有換行符。
  • files.insertFinalNewline - 在檔案末尾自動插入一個最終的換行符。

這些設定將在儲存時應用,包括自動儲存。

最終的筆記本程式碼操作 API

筆記本現在完全支援貢獻的程式碼操作,並有一個專用的程式碼操作型別(Code Action Kind)來支援它們。如果擴充套件作者定義了一個以notebook.source.為字首的kind的操作,則在儲存時,筆記本編輯器會對整個筆記本執行該操作,而不是逐個單元格執行。要編輯將在儲存時執行的程式碼操作,您可以在設定編輯器中設定Notebook: Code Actions on Save,或編輯settings.json檔案中的"notebook.codeActionsOnSave"

程式碼操作的當前啟用方式已更新,之前的布林值已被棄用,轉而使用列舉等價物。選項是:

  • "explicit":在顯式儲存時觸發程式碼操作。與true相同。
  • "never":從不儲存時觸發程式碼操作。與false相同。

第三個選項"always"即將推出,將完全匹配編輯器程式碼操作,允許使用者在onFocusChangeonWindowChange的自動儲存設定下觸發筆記本程式碼操作。

語言

Perl 6/Raku

Perl 6 語言已重新命名為 Raku(語言識別符號raku),並且 Raku 將自動選為.raku檔案的語言。

除錯

JavaScript 偵錯程式

WebAssembly 除錯

JavaScript 偵錯程式現在可以除錯編譯成 WebAssembly 的程式碼,前提是它包含DWARF除錯資訊。例如,使用Emscripten編譯的 C++ 程式碼可以被除錯。

Debugger stopped on a breakpoint in C++ source code

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

要啟用此功能,您需要安裝WebAssembly DWARF Debugging擴充套件,該擴充套件可以整合到內建的 JavaScript 偵錯程式中。請參閱Debugging WebAssembly瞭解更多資訊。

WebAssembly 除錯構建於C/C++ Debugging Extension(來自 Chromium 作者)之上,並在他們的支援下得以實現。

呼叫堆疊檢視改進

Call Stack 檢視中的方法和函式現在將包含函式(this)上下文的名稱。例如,類Foo上方法bar的呼叫堆疊現在顯示為Foo.bar

遠端開發

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

此版本增加了透過Tunnels連線到 Dev Containers 的能力,類似於透過 SSH 連線。您可以在Remote Development release notes中瞭解有關此新功能的更多資訊。

對擴充套件的貢獻

GitHub Copilot

/tests 改進

我們改進了GitHub Copilot Chat擴充套件附帶的聊天檢視和內聯聊天的/tests/test斜槓命令現在能更好地檢測您正在使用的測試框架,並將以相同的風格生成新測試。此外,它在建議新測試檔名方面應該做得更好,例如為foo.py生成test_foo.py,為bar.js生成bar.test.js

內聯聊天支援多輪對話

內聯聊天現在會保留當前會話的所有提示,這允許您引用之前的訊息並回答問題。

在下面的短影片中,內聯聊天記住了使用者說過他們住在東京,並在提供程式碼片段以計算當地時間與蘇黎世的時間差時,考慮了這一點。

Ask GitHub Copilot 預設使用聊天檢視

幾個月前,我們在命令面板中引入了Ask GitHub Copilot選項,以便您可以將命令面板中的查詢傳送到 Copilot 聊天,如果命令面板沒有提供有用的答案。

我們收集了關於Ask GitHub Copilot應該開啟的首選體驗的反饋:側邊欄中的聊天檢視還是快速聊天。為了讓初次體驗更加熟悉,我們選擇了聊天檢視。

話雖如此,如果您希望Ask GitHub Copilot在快速聊天中開啟,您可以透過askChatLocation設定更改此行為。

"workbench.commandPalette.experimental.askChatLocation": "quickChat"

命令面板相似命令

在此迭代中,我們在命令面板中釋出了相似命令功能。Copilot Chat 使用者獲得更佳的相似命令體驗,因為我們可以使用 Copilot AI 來確定相似性。這些智慧功能有助於處理同義詞和意圖,並且在我們的測試中,Copilot 還能跨語言處理相似性。在命令面板中查詢確切的命令從未如此容易!

Jupyter

為擴充套件作者最終確定 Jupyter 伺服器提供程式 API

Jupyter 擴充套件用於貢獻 Jupyter 伺服器的 API 已最終確定。擴充套件可以使用該 API 提供自定義 Jupyter 伺服器列表,以在 Kernel Picker 中顯示。

API 用法的示例可以在Jupyter Server Provider Sample中找到。JupyterHub extension也使用了相同的 API。

npm 包@vscode/jupyter-extension包含所有 TypeScript 型別定義。

JupyterHub 擴充套件

現在有一個JupyterHub extension,它支援登入到JupyterHub並在 VS Code 的筆記本或Interactive Window中執行程式碼。此擴充套件程式也可在瀏覽器中透過vscode.devgithub.dev使用。

如果您對這個新擴充套件有任何問題或希望提供反饋,可以在JupyterHub extension GitHub repo中提交問題。

Selecting an existing JupyterHub server in the Kernel Picker

Python

Python Debugger 更新

Debugpy 擴充套件,幾個月前已宣佈,已更名為Python Debugger,以提高其在 Marketplace 中的可發現性。

此擴充套件程式現在包含一個新的使用者設定debugpy.debugJustMyCode,停用後,它允許您單步除錯所有應用程式的系統或第三方庫程式碼(預設情況下,偵錯程式僅單步除錯您自己的 Python 程式碼中定義的程式碼)。這是對那些希望更方便地為所有專案停用justMyCode而非手動配置所有專案的launch.json除錯配置的流行功能請求。

要試用,請確保您已安裝Python Debugger擴充套件。然後開啟設定編輯器(⌘, (Windows, Linux Ctrl+,)),搜尋“debugJustMyCode”,然後取消勾選複選框。

Searching "debugJustMyCode" in the Settings editor results in the debugpy.debugJustMyCode setting appearing at the top.

現在,一旦您建立了launch.json檔案,該擴充套件程式將預設使用debugpy.debugJustMyCode的值,只要檔案中未指定justMyCode。請注意,當launch.json中指定了justMyCode時,其值優先於debugpy.debugJustMyCode設定。

Pylint 擴充套件的更改時 Lint 選項

預設情況下,Pylint 擴充套件僅在檔案儲存時報告錯誤和警告。現在有一個新設定名為pylint.lintOnChange,如果設定為true,它會指示擴充套件程式在您鍵入時報告錯誤和警告,而無需儲存檔案。

Mypy 擴充套件報告範圍和守護程序模式

Mypy Type Checker 擴充套件現在有兩個新設定,允許您指定 Mypy 的報告範圍以及是否使用 Mypy 的守護程序。

第一個是mypy-type-checker.reportingScope,它可以設定為file(預設)以僅為工作區中開啟的檔案報告問題,或設定為workspace以報告工作區中的所有檔案。

第二個是mypy-type-checker.preferDaemon,當設定為true時,它將使用Mypy 的守護程序dmypy)而不是 Mypy 本身(mypy)來執行型別檢查,這在某些情況下會快得多。

關於呼叫引數內嵌提示設定的更新

以前,Pylance用於啟用部分呼叫引數內嵌提示的設定(python.analysis.inlayHints.callArgumentNames)只能設定為truefalse來啟用或停用呼叫引數的型別提示。此設定已修改,以便對顯示的呼叫引數型別提示進行更精細控制。

現在可以將其設定為partial以停用僅位置引數僅關鍵字引數的提示,設定為all以啟用它們,或設定為off以完全停用它們。

Python 3.7 支援的棄用

正如我們之前在2023 年 7 月版本部落格中提到的,我們在Python擴充套件中已停止官方支援 Python 3.7。沒有計劃主動移除對 Python 3.7 的支援,因此我們預計該擴充套件在可預見的未來仍將非官方支援 Python 3.7。

請記住,所有其他 Python 版本現在都按年釋出,因此,一旦某個 Python 版本達到 EOL(生命週期結束),我們將在次年第一季度釋出的第一個擴充套件版本中停止官方支援(例如,Python 3.8 預計將於 2024 年 10 月達到 EOL,因此 2025 年的第一個擴充套件版本將停止官方支援)。

GitHub 拉取請求和議題

GitHub Pull Requests and Issues 擴充套件取得了更多進展,該擴充套件允許您處理、建立和管理拉取請求和問題。

  • 審閱 PR 的可訪問性已得到改進。
  • 即使分支尚未釋出,提交也會顯示在 Create 檢視中。

請參閱擴充套件程式的 0.74.0 版本的更新日誌,瞭解其他亮點。

預覽功能

最近的快速修復鍵盤快捷鍵

有一個新設定,可以透過 ⌘. (Windows, Linux Ctrl+.)(命令 ID editor.action.quickFix)啟用一行中最近的快速修復,無論游標在該行的哪個位置。

該命令會突出顯示將要透過快速修復進行重構或修復的原始碼。正常的程式碼操作和非修復重構仍然可以在游標位置啟用。要啟用此功能,請檢查Code Action Widget: Include Nearby Quickfixeseditor.codeActionWidget.includeNearbyQuickfixes)。

Example of new Quick Fix behavior, showing activation on nearest errors, and showing how all Code Actions can still be utilized at the cursor location

原始碼管理同步檢視

本里程碑版本包含一個早期版本的Source Control Sync檢視。新檢視提供了有關尚未推送到遠端分支的本地更改(傳出)以及尚未從遠端分支本地拉取的更改(傳入)的詳細資訊。該檢視還允許您釋出分支並與遠端分支同步更改(拉取/推送)。新檢視仍處於實驗階段,我們將在接下來的里程碑中根據使用者反饋繼續改進它。您可以透過scm.experimental.showSyncView設定顯示新檢視。請嘗試使用並在issue #192290中提供反饋。

Source Control Sync view showing a diff view of an incoming change

命令中心和除錯工具欄

有一個新的實驗性設定,用於在命令中心內顯示除錯工具欄。確保啟用命令中心並配置debug.debugToolbarLocation設定。

"debug.toolBarLocation": "commandCenter"

Debug controls inside the Command Center

主題:GitHub Light Colorblind (Beta) (在 vscode.dev 上預覽)

擴充套件開發

支援 Unicode 字元類轉義,用於字串設定驗證

現在支援在正則表示式中使用Unicode 字元類轉義來驗證字串和字串陣列設定。換句話說,字串和字串陣列設定現在可以指定一個pattern欄位,其值為"\\p{Letter}+",允許字串值僅包含字母。

目前,物件設定(帶有字串值)不支援 Unicode 字元類轉義。

為終端選單做出貢獻

有兩個新選單可以貢獻到terminal/contextterminal/title/context,它們分別向終端上下文選單和終端標籤頁上下文選單新增條目。示例用法:

{
  "contributes": {
    "menus": {
      "terminal/context": [
        { "command": "terminalTest.sendText" }
      ],
      "terminal/title/context": [
        { "command": "terminalTest.sendText" }
      ]
    }
    }
}

新的 env.onDidChangeShell 事件

有一個新的env.onDidChangeShell: Event<string>事件,當env.shell的值更改時會觸發。

keytar 已從 VS Code 中移除

早在六月,我們就將 SecretStorage API 遷移到使用 Electron 的 safeStorage,並制定了已歸檔且未維護的keytar模組從 VS Code 中棄用和移除的計劃。我們最初沒有移除keytar是因為一些擴充套件仍然直接匯入/要求keytar(在 SecretStorage API 存在之前推薦這樣做,但在 SecretStorage API 釋出之後不推薦)。

根據產品遙測資料和不包含keytar的 Insiders 構建,keytar的使用量已下降,我們已準備好從 VS Code 中完全移除keytar

這對我的擴充套件意味著什麼?

如果您使用 SecretStorage API,則沒有任何變化。自六月以來,我們一直在將機密從keytar遷移出去,因此如果您在兩個月內接觸過這些機密,它們應該都已遷移。

如果您仍然在擴充套件中直接使用keytar,則有幾個選項供您考慮:

  • (推薦)使用 VS Code 在ExtensionContext上提供的SecretStorage API。此 API 是跨平臺的,適用於 VS Code 支援的所有平臺。它也由 VS Code 團隊維護,並將繼續維護,並且已經作為 VS Code API 的一部分存在多年。
  • (不推薦)您可以將keytar模組與您的擴充套件程式打包。請記住,keytar是一個本地 Node 模組,這意味著您需要為要支援的每個平臺釋出一個平臺特定的擴充套件

--disable-keytar 已重新命名為 --use-inmemory-secretstorage

--disable-keytar標誌停用了在使用SecretStorage API 時在機器上持久化機密。這主要用於 CI 環境,這些環境通常沒有配置金鑰環,因為如果沒有金鑰環,當SecretStorage API 在沒有可用金鑰環的情況下使用時,VS Code 會丟擲錯誤。

由於我們已移除keytar,因此此標誌需要一個新名稱。我們現在已將--disable-keytar標記為已棄用,並推薦使用--use-inmemory-secretstorage。將來,我們將考慮移除--disable-keytar,但它在不久的將來不會消失。

最後,我們要感謝所有出色的擴充套件作者,他們迅速採取行動擺脫了keytar,並確保他們的使用者在 VS Code 中擁有出色且安全的機密體驗!

語言伺服器協議

已釋出Language Server Protocol npm 包的新版本(protocol@3.17.5, client@9.0.1 和 server@9.0.1)。

此版本的主要亮點包括:

  • 添加了提議的內聯完成請求。

  • 添加了提議的格式化範圍請求。

  • 添加了用於摺疊範圍的提議重新整理請求。這改變了摺疊範圍功能的形狀,因為 API 需要暴露事件發射器,並且這是一個破壞性更改。要訪問提供程式,您現在需要使用以下程式碼:

    client.getFeature(lsclient.FoldingRangeRequest.method).getProvider(document)?.provider;
    
  • 各種錯誤修復

工程

浮動編輯器視窗探索

我們已經開始探索如何將編輯器從工作臺視窗移出到它們自己的視窗。此功能是我們得票最多的功能請求,我們計劃在 10 月為我們的 Insiders 使用者提供第一個可用的版本。

所有視窗中的所有編輯器都操作相同的底層編輯器模型,因此在一個視窗中進行的更改會在所有其他視窗中即時反映。您可以建立浮動視窗中的任何編輯器佈局,並開啟任何您喜歡的編輯器,在任意數量的視窗中。

對於我們的第一個可用版本,我們設想狀態列也將出現在浮動視窗中,以便顯示編輯器資訊——例如行號和選擇範圍。敬請關注未來幾個月的更多開發!

vscode.dev 現已實現跨源隔離

vscode.dev現已啟用跨源隔離。這實現了共享陣列緩衝區等強大的新功能,這些是跨檔案 TypeScript 支援、Web 中的 Python 執行以及vscode-wasm-wasi的基礎。

設定同步故障排除

我們添加了一個新的開發人員命令Developer: Download Settings Sync Activity,它下載您所有的Settings Sync活動,包括雲端和本地機器上的活動以及日誌。這將幫助我們排除設定同步問題。我們還建立了一個新檢視來瀏覽下載的活動。您可以透過執行命令Settings Sync: Show Synced Data並啟用SYNC ACTIVITY (DEVELOPER)檢視來開啟該檢視。您可以選擇檢視中的Load Sync Activity按鈕來載入下載的同步活動,如下圖所示。

Sync activity (developer) view with Load Sync Activity button

值得注意的修復

  • 190679 主題顏色 icon.foreground 不一致且無法與 .svg 一起使用

感謝

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

問題跟蹤

對我們問題跟蹤的貢獻

拉取請求

vscode 的貢獻

vscode-css-languageservice 的貢獻

vscode-html-languageservice 的貢獻

vscode-languageserver-node 的貢獻

vscode-pull-request-github 的貢獻

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