2022 年 7 月 (1.70 版本)
更新 1.70.1:此更新解決了這些問題。
更新 1.70.2:此更新解決了這些問題。
更新 1.70.3:此更新僅適用於 Windows 7 使用者,並且是支援 Windows 7 的最後一個版本。
下載:Windows:x64 Arm64 | Mac:通用 Intel Apple 晶片 | Linux:deb rpm tarball Arm snap
歡迎使用 Visual Studio Code 2022 年 7 月版本。此版本有許多更新,我們希望您會喜歡,其中一些主要亮點包括:
- 標題欄自定義 - 隱藏/顯示選單欄、命令中心或佈局控制。
- 摺疊選區 - 在編輯器中建立您自己的摺疊區域。
- 搜尋多選 - 選擇多個搜尋結果,然後對它們進行操作。
- 樹檢視搜尋和過濾 - 在檔案資源管理器等樹檢視中查詢和過濾。
- 終端改進 - 預設啟用 Shell 整合,擴充套件 PowerShell 快捷鍵。
- 命令列選項 --merge - 使用三向合併編輯器作為您的預設合併工具。
- 筆記本:跳轉到最近失敗的單元格 - 直接跳轉到筆記本錯誤。
- Python 入門體驗 - 在 VS Code 中快速安裝和配置 Python。
- 粘性滾動預覽 - 新的滾動 UI 顯示當前原始碼範圍。
- 開發容器 CLI 主題 - 瞭解更新後的開發容器 CLI。
如果您想線上閱讀這些發行說明,請訪問 code.visualstudio.com 上的更新頁面。
觀看釋出派對:收聽 VS Code 團隊討論一些新功能。您可以在我們的 YouTube 頻道上找到活動錄影。
內測版:想盡快嘗試新功能?您可以下載每晚的內測版構建,並儘快嘗試最新的更新。
工作臺
更簡單的標題欄自定義
對於使用自定義標題欄(Windows、macOS 和 Web 上的預設設定)的使用者,您可能已經注意到我們正在向標題欄引入更多互動式內容。雖然已經有個別設定可以隱藏這些元素,但您現在可以右鍵單擊標題欄以訪問上下文選單,該選單可以切換選單欄(不在 macOS 桌面上顯示)、命令中心和佈局控制元件。
對於希望使用系統上下文選單的 Windows 使用者,仍然可以透過右鍵單擊視窗左上角的 VS Code 圖示或按下 Alt+Space
來觸發選單。觸發時使用滑鼠位置來確定行為 Alt+Space
,因此如果自定義選單位於標題欄上方,則會顯示該選單。
對於 Linux 使用者,由於問題 #156397,標題欄中的空白區域將不會開啟上下文選單。您必須右鍵單擊標題欄中要隱藏的專案之一。
改進的選單欄摺疊
隨著命令中心的新增,我們嘗試將選單欄縮小為漢堡選單以騰出空間。在聽取使用者反饋後,我們切換回舊的選單欄摺疊行為,直到大部分選單摺疊起來,然後才切換到漢堡選單。
可訪問的 macOS 標題欄縮放
同樣作為改進命令中心體驗的一部分,當 macOS 標題欄中存在互動式元件時,標題欄現在將與 UI 的其餘部分一起縮放,以提高可訪問性。
摺疊選區
命令從選區建立手動摺疊範圍 (⌘K ⌘, (Windows, Linux Ctrl+K Ctrl+,)) 從當前選定的行建立摺疊範圍並將其摺疊。該範圍稱為手動摺疊範圍,並位於摺疊提供程式計算的範圍之上。
可以使用命令刪除手動摺疊範圍 (⌘K ⌘. (Windows, Linux Ctrl+K Ctrl+.)) 再次刪除手動摺疊範圍。
手動摺疊範圍對於沒有程式語言支援摺疊的情況特別有用。
保留摺疊範圍
VS Code 現在保留摺疊範圍,即使摺疊範圍不再是摺疊提供程式計算的範圍的一部分。一個典型的例子是當用戶註釋掉檔案、啟動字串字面量或建立語法錯誤導致無法建立所有範圍時。此類摺疊範圍成為“恢復”範圍。一旦摺疊提供程式在相同位置返回範圍或使用命令刪除手動摺疊範圍,它們就會被刪除。
隱藏摺疊控制元件
現在可以使用設定 "editor.showFoldingControls": "never"
隱藏裝訂線中的摺疊控制元件。仍然可以使用摺疊命令和快捷方式展開和摺疊摺疊範圍。
三向合併編輯器改進
我們繼續完善新的三向合併編輯器,並在本次釋出中預設啟用它。可以透過單擊原始碼管理檢視中的衝突檔案來開啟合併編輯器。
亮點包括接受來自一側所有更改的新命令、改進的上下文選單、增強的差異顏色以及對沖突與非衝突更改的更大強調。
我們還開始探索替代的差異演算法,以提高合併衝突的精度。如果您在差異或合併編輯器中遇到次優的更改突出顯示或對齊,我們希望在我們的 GitHub 問題跟蹤器中記錄這些情況!
命令列選項合併
您現在可以使用命令列選項在 VS Code 中調出合併編輯器
-m --merge <path1> <path2> <base> <result> Perform a three-way merge by providing paths for two modified versions of a file, the common origin of both modified versions, and the output file to save merge results.
這使您可以使用 VS Code 作為 Git 的合併工具,例如,如果您在 .gitconfig
中配置此項
[merge]
tool = code
[mergetool "code"]
cmd = code --wait --merge $REMOTE $LOCAL $BASE $MERGED
搜尋檔案裝飾
搜尋檢視中的搜尋結果現在在右側顯示檔案裝飾和顏色,以表達檔案的問題和原始碼管理資訊。這類似於檔案資源管理器中已顯示的檔案裝飾。
搜尋多選
搜尋檢視現在還支援多選。您對選定結果中的一個結果執行的任何操作(例如,解除或替換)也將對其他選定專案執行。
樹查詢控制元件
檔案資源管理器等樹檢視現在支援查詢控制元件。您可以在樹中按下⌥⌘F (Windows, Linux Ctrl+Alt+F) 以彈出查詢控制元件。您可以使用查詢控制元件突出顯示匹配的元素或切換過濾按鈕以隱藏所有不匹配搜尋詞的元素。
注意:如果您習慣於在檔案資源管理器獲得焦點時呼叫⌥⌘F (Windows, Linux Ctrl+Alt+F) 時在編輯器中開啟查詢控制元件,則可以相應地配置您的快捷鍵
{
"key": "cmd+f", // "ctrl+f" on Windows/Linux
"command": "-list.find",
"when": "listFocus && listSupportsFind"
}
透過新建檔案任意建立檔案
已改進檔案 > 新建檔案...(或歡迎頁面上的新建檔案...連結)體驗,以允許任意檔案建立。您現在可以在快速輸入框中鍵入檔名以在磁碟上建立檔案。
終端
預設啟用 Shell 整合
Shell 整合的自動注入功能已在上一個版本中退出預覽版,現在預設啟用。對於受支援的 Shell 設定(大多數 bash/zsh/pwsh 配置),它應該無需任何更改即可正常工作,並且您應該會看到命令裝飾
注意:在 Windows 上,您需要 PowerShell 7 (pwsh) 才能支援 Shell 整合。您可以透過https://aka.ms/PSWindows 安裝。
如果 Shell 整合功能未自動啟用,您需要設定手動安裝,此版本中已簡化。
當 terminal.integrated.shellIntegration.enabled
設定為 true
時,自動注入功能將啟用,將此新增到您的 settings.json
檔案中以停用此功能
"terminal.integrated.shellIntegration.enabled": "false"
這將僅停用 VS Code 的 Shell 整合注入。即使停用,如果您的設定已為 VS Code 能夠理解的其他終端啟用了 Shell 整合,它仍然會識別這些。如果您不喜歡命令和/或捲軸裝飾,您可以只停用它們的顯示,同時仍然利用 Shell 整合帶來的額外功能。
簡化的 Shell 整合手動安裝
以前的手動安裝需要幾個步驟,並且是平臺和 Shell 特定的。新的手動安裝使用 code
CLI 來獲取 Shell 整合指令碼,並且可以跨平臺工作,並在連線到遠端視窗時工作,這意味著您可以將其同步到您的 dotfiles 中,它應該就能正常工作。
# Manual install on bash
[[ "$TERM_PROGRAM" == "vscode" ]] && . "$(code --locate-shell-integration-path bash)"
您可以在終端 Shell 整合中閱讀有關如何為其他 Shell 安裝 Shell 整合的更多資訊。
更多 Shell 整合配置選項
新的設定 terminal.integrated.shellIntegration.decorationsEnabled
允許您在 gutter
、overviewRuler
或兩者都不顯示命令裝飾。為了方便訪問,您可以在單擊裝飾時透過上下文選單中的配置命令裝飾來修改此設定(選擇切換可見性以顯示選項下拉選單)。
您還可以從下拉選單中配置預設、成功或錯誤圖示。
預設顏色和圖示選項卡設定
可以使用 terminal.integrated.tabs.defaultIcon
和 terminal.integrated.tabs.defaultColor
為每個資料夾設定預設圖示和終端選項卡顏色。
擴充套件 PowerShell 快捷鍵
由於 Shell 整合,PowerShell 還有其他快捷鍵,例如 Ctrl+Space。由於缺少 VT 編碼,這些以前是不可能的。如果 Shell 整合在 pwsh 中工作,以下快捷鍵現在應該可以工作
- Ctrl+Space - 在 Windows 上預設為
MenuComplete
。 - Alt+Space - 預設為
SetMark
。 - Shift+Enter - 預設為
AddLine
。 - Shift+End - 預設為
SelectLine
。 - Shift+Home - 預設為
SelectBackwardsLine
。
這適用於所有平臺,甚至 Linux/macOS,這些快捷鍵通常無法使用。在您的 pwsh 配置檔案中可以使用 Set-PSReadLineKeyHandler
始終重置預設值。如果您希望有其他快捷鍵,請告訴我們。
執行最近命令作為反向搜尋的替代
當啟用 Shell 整合時,我們的目標是讓“執行最近命令”成為 Shell 反向搜尋(Ctrl+R)的跨 Shell 替代。有一個新的連續搜尋模式,在觸發命令時預設為此模式。這在大多數 Shell 中行為類似於Ctrl+R,並可以選擇切換回模糊搜尋
新的 inTerminalRunCommandPicker
上下文鍵可用,它允許設定像 Ctrl+R 這樣的快捷鍵來跳轉到下一個匹配項。例如,以下快捷鍵現在是您的 Shell 反向搜尋的相當完整的替代品,Ctrl+Alt+R 作為舊行為的回退
{ "key": "ctrl+r", "command": "workbench.action.terminal.runRecentCommand", "when": "terminalFocus" },
{ "key": "ctrl+alt+r", "command": "workbench.action.terminal.sendSequence", "args": { "text": "\u0012"/*^R*/ }, "when": "terminalFocus" },
{ "key": "ctrl+r", "command": "workbench.action.quickOpenNavigateNextInViewPicker", "when": "inQuickOpen && inTerminalRunCommandPicker" },
{ "key": "ctrl+c", "command": "workbench.action.closeQuickOpen", "when": "inQuickOpen && inTerminalRunCommandPicker" },
多行命令現在在適當位置顯示換行符,並且還將使用括號貼上模式,這意味著它們在支援 Shell 時被視為已貼上。這通常意味著它們都將被新增到同一個提示符中,而不是單獨執行它們。
其他 Shell 整合改進
以下是 Shell 整合的一些較小的改進
-
命令導航改進了視覺反饋,短暫顯示“焦點邊框”,然後在裝訂線中保留一個持久的矩形,以幫助突出顯示緩衝區中的位置。
-
新的
workbench.action.terminal.copyLastCommand
命令可用於設定快捷鍵以複製最後一個命令的輸出(Ctrl/Cmd+Shift+Up、Ctrl/Cmd+C、Escape、Ctrl/Cmd+End 的快捷方式)。 -
Bash Shell 整合
- 支援更多
$PROMPT_COMMAND
格式。 - 當已經使用
bash-preexec
助手時,Shell 整合應該會工作得更好。
- 支援更多
渲染改進
在啟用 GPU 加速時,終端渲染方面進行了一些改進
-
半圓形 Powerline 符號現在是自定義渲染的。與上一個版本中的箭頭符號一樣,它們應該與相鄰單元格無縫融合,並且即使使用行高,也能擴充套件到單元格的高度。
-
圓角框線字元 (
╭
,╮
,╰
,╯
) 現在使用更平滑的曲線。 -
改進了背景顏色更改時字形的裁剪,這在
npm
輸出警告時很常見。 -
類似於上面的裁剪問題,之前存在一個問題,即某些字形中的抗鋸齒會與其他字元重疊並降低視覺效果。這個問題最容易透過上面的背景示例來說明。
Work
中的k
中的畫素也可能向另一個方向超出單元格的邊界。這個畫素將不再出現在字形中,因為它因與背景顏色幾乎相同而被移除。
原始碼管理
操作按鈕改進
我們根據使用者反饋繼續完善原始碼管理操作按鈕
- 僅當高度確定本地分支領先或落後於遠端跟蹤分支時,才會顯示同步更改操作按鈕。
- 提交操作按鈕僅根據更改資源列表啟用,同時考慮智慧提交設定
git.enableSmartCommit
git.suggestSmartCommit
git.smartCommitChanges
- 提交操作按鈕圖示根據分支保護設定進行更新
git.branchProtection
git.branchProtectionPrompt
改進的變基衝突解決
在本次里程碑中,我們解決了一些在解決合併衝突時變基流程中的小問題。使用者現在應該能夠在解決所有合併衝突後,使用原始碼管理檢視中的提交按鈕繼續變基操作。
提交輸入欄位拼寫檢查
在本次里程碑中,我們確認所有必要的擴充套件 API 都可用於支援提交輸入欄位中的拼寫檢查。我們聯絡了兩個流行的拼寫檢查擴充套件的作者,並提交了拉取請求,說明如何更新他們的擴充套件以提供提交描述文字的拼寫檢查。
除錯
JavaScript 除錯
當您建立啟動配置來除錯 JavaScript/TypeScript 程式時,您可以設定 "console": "integratedTerminal"
以在終端中執行該程式(而不是直接派生程序)。幾個月前,我們注意到 launch.json
配置中的 "args"
部分對 shell 進行了轉義,但不是完全轉義。這意味著嘗試將引數傳遞給程式可能會意外觸發 shell 中的特殊行為。我們清理了這個問題,然後意識到包含對 shell 具有特殊含義的字元的設定引數是一件有用的事情,並且一些使用者依賴這種行為。
我們討論了正確的修復方案,並決定此行為應為可選,並且需要對 除錯介面卡協議 (DAP) 進行更改。我們對 DAP 進行了此更改,並在 VS Code 和 js-debug 中實現了它,其他除錯介面卡也應該很快跟進。
以下是如何在節點啟動配置中使用新行為
{
"type": "node",
"console": "integratedTerminal",
...
// If you pass args as a single string, the characters will not be escaped for the terminal,
// so the command in backticks will be evaluated, and output will be redirected to "outfile".
// The user is responsible for knowing the type of shell that this will be run in,
// and doing any escaping necessary.
"args": "`echo hello` > outfile",
// If you pass args as an array, the characters will be escaped for the terminal,
// so that the program receives them verbatim.
"args": ["`echo hello` > outfile"]
}
除錯會話選擇器
在除錯時,您現在可以在命令面板中執行除錯:選擇除錯會話。這會顯示一個包含您活動除錯會話的選擇器,您可以使用它來搜尋和過濾您的各個除錯會話。每個選擇器專案的描述將顯示啟動它的會話(如果適用)。
在選擇器中選擇一個專案將使除錯會話在呼叫堆疊檢視中獲得焦點。除錯操作(例如,暫停、步進、重新啟動、停止)將在獲得焦點的除錯會話上執行。選擇一個會話也會顯示該會話的除錯控制檯。
任務
“執行任務”命令的過濾支援
任務:執行任務 (workbench.action.tasks.runTask
) 操作支援按任務名稱和型別過濾,以提供更簡潔和可配置的方式來選擇和執行任務。
例如
{
"key": "ctrl+h",
"command": "workbench.action.tasks.runTask",
"args": {
"task": "VS Code - Build",
"type": "npm"
}
}
改進的自動任務流
受信任的工作區功能允許 VS Code 簡化執行自動任務的流程。預設情況下,如果資料夾受信任,則會自動執行自動任務,否則每個資料夾會提示一次。此行為可以透過 task.allowAutomaticTasks
設定(預設為 auto
)進行配置,以始終 (on
) 或從不 (off
) 在執行自動任務之前進行提示。
語言
格式化 JSON 時保留換行符
您現在可以在格式化 JSON 文件中的一行時保留初始行位置。例如,包含在一行中的值的陣列在格式化後仍將保留這些值在同一行上。JSON 檔案中的額外換行符(newlines)也將保留。要啟用此功能,請在設定編輯器中設定選項JSON > 格式:保留行。
Notebook
跳轉到最近失敗的單元格
如果最近執行的單元格失敗,現在有一個按鈕可以跳轉到該單元格。您還可以執行筆記本:跳轉到最近失敗的單元格以執行相同的操作。
當您執行一組單元格並想知道哪個單元格失敗並導致組執行停止時,這非常有用。
筆記本 Markdown 預覽附件渲染
現在可以在 Jupyter 筆記本中渲染嵌入的 base64 影像。
貼上到 Jupyter 筆記本中並透過 
引用的影像現在將在 VS Code 筆記本中按預期渲染。
以下 Markdown 原始碼
將渲染為
共享筆記本連結
共享子選單中的複製 vscode.dev 連結命令現在支援筆記本連結。
Web 版 VS Code
設定顯示語言
您現在可以使用擴充套件檢視中語言包擴充套件上提供的設定顯示語言按鈕來設定瀏覽器的顯示語言。
設定後,您可以透過使用當前設定的語言包擴充套件上的清除顯示語言按鈕來清除顯示語言。
對擴充套件的貢獻
Python
入門體驗
Python 擴充套件演練現在可以順利地引導使用者安裝 Python(如果需要)並選擇它。當未安裝 Python 時,會開啟 Microsoft Store 或相應的演練磁貼,使用者可以自動執行顯示說明。任何與直譯器相關的提示僅在使用者操作需要直譯器時顯示,而不在啟動時顯示。此外,UI 提示已改進,以更精確地說明錯誤和建議的更改。
狀態列中的直譯器資訊
添加了一個新設定 python.interpreter.infoVisibility
,它控制何時在狀態列中顯示有關所選直譯器的資訊。預設情況下,直譯器資訊僅在開啟 Python 相關檔案時顯示 (onPythonRelated
)。可以將其設定為 always
以恢復舊行為,即無論開啟什麼檔案都顯示所選直譯器。添加了一個警告狀態以指示所選直譯器無效的情況
自動除錯配置
Python 擴充套件現在支援自動除錯配置,該配置會分析當前專案併為您提供無需額外修改的除錯配置。
該擴充套件識別 Django、Flask 和 FastApi 專案,以及簡單的 Python 檔案。
實驗性擴充套件:WWBD
有一個新的實驗性 Python 副檔名為 WWBD,它充當 Python 環境工作流構想的沙盒。目前,有一個用於虛擬環境的建立環境命令,以檢視單個命令是否可以幫助使用者設定新的虛擬環境(有關完整詳細資訊和其他擴充套件功能,請參閱 WWBD 擴充套件頁面)。您可以在專案儲存庫中閱讀“想法”類別,瞭解正在考慮的其他想法,包括 conda 支援。
Jupyter
將繪圖影像複製到剪貼簿
現在可以在 Jupyter 擴充套件中將單元格輸出中的繪圖複製到剪貼簿。請確保您選擇了正確的簡報,因為目前僅支援 PNG 輸出
設定正確的演示型別後,選擇右上角的複製到剪貼簿按鈕
Web 擴充套件
以下功能已移植到 Jupyter 擴充套件的 Web 版本
- 繪圖檢視器
- 資料框檢視器
如果您想體驗此功能,請在本地機器上啟動 Jupyter,命令如下:
jupyter notebook --no-browser --NotebookApp.allow_origin_pat=https://.*\.vscode-cdn\.net
然後從 vscode.dev 內部使用命令Jupyter: 指定用於連線的 Jupyter 伺服器連線到它。
有關更多資訊(和評論),請參閱此討論項。
互動式視窗恢復
透過啟用設定 interactiveWindow.restore
,現在可以在 VS Code 視窗重新載入後恢復互動式視窗會話。
限制:原始核心狀態在視窗重新載入後不會持久化(請參閱此討論項中的更多資訊)。如果您使用的是遠端 Jupyter 伺服器,互動式視窗將在重新載入時連線到以前的核心會話。
從 .env 檔案載入環境變數
已對從 .env
檔案載入環境變數進行了一些修復,包括檢測 .env
檔案的更改。Python 核心現在將從設定 python.envFile
中定義的檔案載入環境變數。
GitHub 拉取請求和議題
GitHub 拉取請求和問題擴充套件取得了更多進展,該擴充套件允許您處理、建立和管理拉取請求和問題。此版本的亮點包括
- 有一個新按鈕,僅顯示自檢視者上次審查以來對拉取請求所做的更改。
- 原始碼管理檢視中新的提交併建立拉取請求操作允許您執行 Git 提交併一步轉到建立 PR檢視。
githubPullRequests.pullRequestDescription
設定可用於配置 PR 描述的源文字。
檢視擴充套件的 0.48.0 版本更新日誌以檢視其他亮點。
遠端開發
遠端開發擴充套件的工作仍在繼續,它允許您使用容器、遠端機器或 適用於 Linux 的 Windows 子系統 (WSL) 作為功能齊全的開發環境。
您可以在遠端開發發行說明中瞭解新的擴充套件功能和錯誤修復。
預覽功能
編輯器粘性滾動
現在可以顯示 UI,顯示使用者在滾動時所處的範圍。“粘性滾動”UI 將顯示編輯器頂部所在的類/介面/名稱空間/函式/方法/建構函式,幫助您瞭解文件中的位置。使用 editor.experimental.stickyScroll.enabled
設定啟用粘性滾動。
<video src="/assets/updates/1_70/sticky-scroll.mp4" autoplay loop controls muted title="“粘性滾動”顯示 TypeScript 檔案的原始碼範圍">
TypeScript 4.8 支援
此更新包括對即將釋出的 TypeScript 4.8 版本的支援。有關 TypeScript 團隊目前正在進行的工作的更多詳細資訊,請參閱 TypeScript 4.8 迭代計劃。
要開始使用 TypeScript 4.8 每夜構建,請安裝 TypeScript Nightly 擴充套件。
設定配置檔案
在過去的幾個月中,我們一直致力於在 VS Code 中支援設定配置檔案,這是社群最受歡迎的需求之一。此功能在 Insiders 版本中透過 workbench.experimental.settingsProfiles.enabled
設定提供預覽。請嘗試一下,並透過在 VS Code 儲存庫中建立問題或在 問題 #116740 中評論來告訴我們您的反饋。
在此里程碑中,我們還在 VS Code for the Web 中添加了對設定配置檔案的支援。您可以使用 insiders.vscode.dev 和相同的 workbench.experimental.settingsProfiles.enabled
設定進行嘗試。
主題:Light Pink
任務重新連線
在視窗重新載入時,可以透過啟用 task.experimental.reconnection
來重新連線監視任務,從而在擴充套件更改或 VS Code 版本更新後更快地恢復工作。
程式碼操作
我們一直致力於在 VS Code 中提供更好的程式碼操作體驗。程式碼操作包括重構、源操作和快速修復。
新的實驗性程式碼操作控制元件可以透過選擇重構或源操作,從燈泡或透過快速修復從上下文選單中開啟。透過 editor.experimental.useCustomCodeActionMenu
設定嘗試一下。透過在 VS Code 儲存庫中建立問題或在 問題 #152913 中評論,告訴我們您的任何反饋。
程式碼操作的重構預覽也可以從新的程式碼操作控制元件訪問。將滑鼠懸停在啟用的專案上以檢視如何預覽。自定義快捷鍵支援程式碼操作的選擇以及預覽選擇。
在此里程碑中,我們還添加了對程式碼操作(包括快速修復 (⌘. (Windows, Linux Ctrl+.)))的自定義快捷鍵支援。您可以透過將以下程式碼片段與所需的鍵盤快捷鍵新增到 keybindings.json
來嘗試。
[
{
"key": "ctrl+k",
"when": "codeActionMenuVisible",
"command": "focusPreviousCodeAction"
},
{
"key": "ctrl+j",
"when": "codeActionMenuVisible",
"command": "focusNextCodeAction"
}
]
跨 VS Code for Web 和桌面編輯會話
編輯會話的開發仍在繼續,它允許您在跨 VS Code for Web 或桌面繼續處理儲存庫時,攜帶未提交的更改。一些亮點包括
- 您現在可以在關閉編輯會話功能時刪除雲中所有儲存的編輯會話。
- 現在支援使用 Microsoft 身份驗證登入。
- 如果您在查詢編輯會話時遇到問題,可以使用編輯會話:顯示編輯會話命令檢視所有編輯會話。
要試用編輯會話,請在設定中設定 workbench.experimental.editSessions.enabled
並使用編輯會話:儲存當前編輯會話命令,在提示時使用 GitHub 或 Microsoft 身份驗證登入。然後使用編輯會話:恢復最新編輯會話命令在另一臺計算機或 VS Code 例項上的儲存庫中恢復所有修改檔案的內容到您的工作區。您可以隨時使用編輯會話:退出命令退出編輯會話。
隨著我們不斷迭代編輯會話體驗,請嘗試一下並透過在 問題 #141293 中評論與我們分享您的反饋。
擴充套件開發
“when”子句中的“not in”運算子
“when”子句中已經存在一個運算子 in
,它允許在另一個具有陣列或物件型別值的上下文鍵中動態查詢上下文鍵的值。我們添加了一個新的運算子 not in
,它否定了這一點。有關詳細資訊,請參閱when 子句上下文文件。
htmlLanguageParticipants 貢獻點
一個新的貢獻點 htmlLanguageParticipants
允許類似 HTML 的語言宣告它們希望繼承所有 HTML 語言伺服器功能,例如程式碼完成、懸停和大綱。這對於不想實現完整語言伺服器的程式語言擴充套件很有用。
一個例子是內建的 handlebars
擴充套件,它現在將其自身新增到其 package.json
中的 htmlLanguageParticipants
"contributes": {
"htmlLanguageParticipants": [
{
"languageId": "handlebars"
}
]
}
Quarkus 擴充套件已經採用了該貢獻點。它透過為嵌入式 Qute HTML 模板語言提供額外的建議來豐富 HTML 功能
拖放到編輯器 API
文字編輯器拖放 API 允許擴充套件處理檔案或其他內容拖放到文字編輯器中。這些拖放事件可以來自 VS Code 內部,例如將檔案從 VS Code 的資源管理器拖放到文字編輯器中,也可以透過將檔案從作業系統拖放到 VS Code 中生成。
要將檔案拖放到編輯器中,使用者可以在拖動時按住 kbsytyle(Shift)
,然後將檔案拖放到檔案中的特定位置。此時,您的擴充套件可以選擇如何處理拖放的資料。
檢視拖放到編輯器擴充套件示例,瞭解此 API 實際操作的簡單示例。
提議的 API
每個里程碑都會帶來新的提議 API,擴充套件作者可以嘗試這些 API。一如既往,我們希望得到您的反饋。以下是嘗試提議 API 的步驟
- 查詢您要嘗試的提議並將其名稱新增到
package.json#enabledApiProposals
。 - 使用最新的vscode-dts並執行
vscode-dts dev
。它會將相應的d.ts
檔案下載到您的工作區中。 - 您現在可以根據該提議進行程式設計。
您不能釋出使用提議 API 的擴充套件。下個版本中可能會有破壞性更改,我們絕不希望破壞現有擴充套件。
Webview 上下文選單
新的 webview 上下文選單提案使高階 webview 能夠輕鬆自定義使用者右鍵單擊 webview 內部時顯示的上下文選單。這個新的貢獻點使用 VS Code 的常規上下文選單,因此自定義選單與編輯器的其餘部分完美契合。Webview 還可以為 webview 的不同部分顯示自定義上下文選單。
要試用這個新的 API,您需要啟用 contribWebviewContext
提案。
"enabledApiProposals": [
"contribWebviewContext"
]
要向您的 webview 新增新的上下文選單項,請在 menus
下的新 webview/context
部分中新增一個新條目。每個貢獻都包含一個 command
(也是標題的來源)和一個 when
子句。when 子句應包含 webview == 'YOUR_WEBVIEW_VIEW_TYPE'
,以確保上下文選單僅適用於您的擴充套件的 webview
"contributes": {
"menus": {
"webview/context": [
{
"command": "catCoding.yarn",
"when": "webview == 'catCoding'"
},
{
"command": "catCoding.insertLion",
"when": "webview == 'catCoding' && webviewSection == 'editor'"
}
]
},
"commands": [
{
"command": "catCoding.yarn",
"title": "Yarn 🧶",
"category": "Cat Coding"
},
{
"command": "catCoding.insertLion",
"title": "Insert 🦁",
"category": "Cat Coding"
},
...
]
}
在 webview 內部,您還可以使用 data-vscode-context
資料屬性(或在 JavaScript 中使用 dataset.vscodeContext
)設定 HTML 特定區域的上下文。data-vscode-context
值是一個 JSON 物件,它指定當使用者右鍵單擊元素時要設定的上下文。最終上下文是從文件根到單擊的元素確定的。
例如,考慮以下 HTML
<div class="main" data-vscode-context='{"webviewSection": "main", "mouseCount": 4}'>
<h1>Cat Coding</h1>
<textarea data-vscode-context='{"webviewSection": "editor", "preventDefaultContextMenuItems": true}'></textarea>
</div>
如果使用者右鍵單擊 textarea
,將設定以下上下文
webviewSection == 'editor'
— 這會覆蓋父元素的webviewSection
。mouseCount == 4
— 這繼承自父元素。preventDefaultContextMenuItems == true
— 這是一個特殊上下文,它隱藏了 VS Code 通常新增到 webview 上下文選單的複製和貼上條目。
如果使用者在 <textarea>
內右鍵單擊,他們將看到
檢視大小
檢視大小提案允許擴充套件為其貢獻的檢視提供權重
"contributes": {
"views": {
"github-pull-request": [
{
"id": "github:createPullRequest",
"type": "webview",
"name": "Create Pull Request",
"size": 2
},
{
"id": "github:compareChanges",
"name": "Compare Changes",
"size": 1
}
]
}
}
大小類似於 CSS 屬性 flex-grow
。在上面的示例中,"size": 2
的檢視將是 "size": 1
的檢視的兩倍。僅當檢視容器由同一擴充套件貢獻時,才會遵循 size 屬性。
可擴充套件的 HTML 筆記本渲染器
我們的內建 筆記本渲染器 現在公開了一個實驗性 API,允許擴充套件自定義 HTML 內容的渲染。此 API 目前公開了一個單一的鉤子 postRender
,它在 HTML 內容的初始渲染之後呼叫。
要嘗試使用此實驗性 API,您的擴充套件需要擴充套件 vscode.builtin-renderer
API。
"contributes": {
"notebookRenderer": [
{
"id": "vscode-samples.my-custom-html-extension",
"displayName": "My custom html renderer extension",
"entrypoint": {
"extends": "vscode.builtin-renderer",
"path": "./out/main.js"
}
}
]
}
然後您的渲染器可以在 vscode-builtin-renderer
上註冊一個渲染鉤子
import type { RendererContext } from 'vscode-notebook-renderer';
export async function activate(ctx: RendererContext<void>) {
const htmlRenderer = await ctx.getRenderer('vscode.builtin-renderer');
if (!htmlRenderer) {
throw new Error(`Could not load 'vscode.builtin-renderer'`);
}
htmlRenderer.experimental_registerHtmlRenderingHook({
// Invoked after the HTML content for `outputItem` has been rendered to `element`
postRender(outputItem: OutputItem, element: HTMLElement): HTMLElement | undefined {
// You can either modify `element` or return a replacement element
}
});
}
試用這個新的 API,並告訴我們您的想法!
除錯介面卡協議
RunInTerminalRequest 的 argsCanBeInterpretedByShell
RunInTerminalRequest
支援一個新的屬性 argsCanBeInterpretedByShell
,它告訴客戶端命令 args
中的特殊 shell 字元是否應保留不轉義。這是為了讓使用者能夠編寫將在終端中啟動的啟動配置,幷包含應由 shell 解釋的字元。
工程
Electron 沙盒支援的進展
在此里程碑中,我們在預設啟用 Electron 的 沙盒 方面取得了實質性進展。我們計劃在 8 月為 Insiders 啟用沙盒,並最終將其作為 Stable VS Code 的預設設定。
對於好奇的人,在設定中配置 "window.experimental.useSandbox": true
將啟用沙盒模式。希望您不會注意到任何變化,但如果您發現問題,請向我們報告。
Markdown 語言伺服器
本次迭代,我們將 VS Code 編寫 Markdown 的大部分工具提取到一個庫和語言伺服器中。這包括我們用於路徑完成、文件大綱和診斷的工具。
VS Code 的內建 Markdown 擴充套件已切換到使用這個新的語言伺服器,儘管希望您不會注意到行為上的任何差異。但是,此切換應該有助於提高效能,因為它將 Markdown 工具移到了自己的程序中。轉向語言伺服器也幫助我們改進了實驗性 Markdown 連結診斷的效能。
我們希望其他工具和編輯器也能從這些新包中受益,甚至為它們做出貢獻。我們可以一起為每個人構建更好的 Markdown 工具!如果您有興趣,請檢視相關專案
- Markdown 語言服務 — 一個提供用於處理 Markdown 的工具的 TypeScript 庫。
- Markdown 語言伺服器 — 一個使用語言服務構建的 Markdown 語言伺服器。
Debian 包依賴項
Debian 包依賴項現在由指令碼而不是硬編碼生成。這解決了早在 2016 年就提出的一個問題,即缺少依賴項會導致程式在某些機器上執行時崩潰。
文件和擴充套件
開發容器 CLI
開發容器命令列介面 (CLI) 主題已更新為 最新版本 的 CLI。開發容器 CLI 允許您構建和執行開發容器,並且是 開發容器規範 的開源參考實現
Azure Developer CLI (azd)
Azure Developer CLI 及其配套的 VS Code 擴充套件 現已公開發布預覽版。Azure Developer CLI (azd) 透過提供開發人員友好的命令,這些命令對映到工作流中的關鍵階段:程式碼、構建、部署、監控、重複,從而加速您從本地開發環境到 Azure 的時間。
Azure Developer CLI 使用可擴充套件模板,其中包含在 Azure 中啟動和執行應用程式所需的一切。這些模板包括最佳實踐、應用程式程式碼和可重用的基礎設施即程式碼資產。更重要的是,它們涵蓋了遠遠超出“Hello World!”的端到端場景。
使用 Azure Developer CLI,您可以初始化、預配和部署應用程式,或者更好的是,使用 'azd up'
在一步中完成!有關支援的 azd
命令列表,請參閱開發人員 CLI 參考。
感謝
最後但同樣重要的是,向 VS Code 的貢獻者們致以衷心的感謝。
問題跟蹤
對我們問題跟蹤的貢獻
拉取請求
對 vscode
的貢獻
- @0evan (Evan Spensley):區分測試裝飾標籤 PR #155433
- @amanasifkhalid (Aman Khalid):關閉 #134566:為終端選項卡新增預設顏色/圖示設定 PR #147463
- @angelozerr (Angelo):為自定義語言貢獻 HTML 語言伺服器。 PR #146731
- @babakks (Babak K. Shandiz)
- 🎁 將“用程式碼片段包圍”新增到快速修復選單 PR #152718
- 🔨 修復具有檔名中包含點的檔案的 markdown 診斷問題 PR #153206
- @Balastrong (Leonardo Montini):正確顯示警告訊息 PR #154266
- @CGNonofr (Loïc Mangeonjean):向 monaco 程式碼操作提供程式提供觸發器和文件 PR #149937
- @eamodio (Eric Amodio):關閉 #54285 新增 webview/context 貢獻 PR #154524
- @eltociear (Ikko Ashimine):修復 languageDetectionWorkerServiceImpl.ts 中的拼寫錯誤 PR #155923
- @fadeevab (Alexander Fadeev):為升級的語法新增 Makefile 測試:逗號、註釋、shebang PR #154625
- @FantasqueX (FantasqueX):將已棄用的 canceled 替換為 Cancellation Error。 PR #156094
- @ferdnyc (Frank Dana)
- RPM:使 /usr/bin/code 由包擁有 PR #142907
- 構建 .rpm 包時刪除 fakeroot 包裝器 PR #153249
- @gjsjohnmurray (John Murray):嘗試防止以管理員身份執行時更新使用者型別 Windows 安裝 (#_148428) PR #155631
- @jbicker (Jan Bicker):修復了錯誤的 SignatureInformation.activeParameter 註釋 PR #155279
- @jeanp413 (Jean Pierre):提案 TerminalExitStatus.reason PR #152833
- @jlelong (Jerome Lelong):為以字母開頭或結尾的括號對分隔符新增單詞邊界 PR #151204
- @joscol (Joshua Cole):允許 CommentNode 同時更改正文文字並進入編輯模式 PR #155767
- @jzyrobert (Robert Jin)
- 在資源管理器檢視中新增“全部展開”按鈕 PR #153614
- 編輯 showFoldingControls 以具有 never 設定 PR #153764
- @liby (Bryan Lee):在 TypeScript 中新增對尖括號匹配和著色的支援 PR #151705
- @mingwiki:修復 Socks5 代理正則表示式檢查警告 PR #144954
- @MonadChains (MonadChains):新增命令以複製上一個命令的輸出 (#_152097) PR #153235
- @nirabhromakhal (nirabhromakhal):修復了狀態列溢位而不影響通知提示的問題 PR #155649
- @PieterBranderhorst:使隱藏的摺疊範圍獨立於範圍提供程式,新增手動摺疊… PR #139779
- @pingren (Ping)
- 修復 #114461 PR #151824
- 修復換行選項卡時的選項卡位置 PR #156116
- @pwxn (Paul Landers):新增命令以將編輯器滾動到頂部/底部 PR #155861
- @qingpeng9802 (Qingpeng Li):刪除 es5 類相容性 PR #153853
- @r3m0t (Tomer Chachamu)
- 修復展開時測試錯誤不顯示的問題 PR #153994
- 工作區資料夾更新時更新麵包屑 PR #154616
- @SamirPS (SamirAk):程式碼掃描:棄用 CodeQL Action v1 PR #156271
- @ssigwart (Stephen Sigwart)
- 修復編輯器區域中的終端無法重新載入的問題 PR #151852
- 修復建議小部件掛起的問題 PR #152011
- 為搜尋編輯器檔案過濾器新增快捷鍵 PR #153954
- 檢測帶空格的終端連結,然後是行:列 PR #153957
- 修復 Webview 顯示後選單快捷方式不起作用的問題 PR #154648
- @SvanT (Svante Boberg):新增缺少的處置 PR #155976
- @yiliang114 (易良):修復:拼寫錯誤 PR #155310
對 vscode-generator-code
的貢獻
- @hawkticehurst (Hawk Ticehurst)
- @MatejKastak:chore:統一生成 package.json 中的縮排 PR #357
- @nhedger (Nicolas Hedger):新增 pnpm 作為包管理器 PR #339
對 vscode-js-debug
的貢獻
- @Balastrong (Leonardo Montini):再次檢查 native tostring 是否是 [object *] PR #1339
對 vscode-json-languageservice
的貢獻
- @bytemain (Artin):feat:支援數字常量 PR #141
- @octogonz (Pete Gonzalez):當使用“//”作為註釋時,不報告“重複物件鍵” PR #144
對 monaco-editor
的貢獻
- @alexander-zw (Alexander Wu):[webpack readme] 新增如何獲取語言/功能 PR #3171
- @MasterOdin (Matthew Peveler):刪除 mysql 的重複測試用例 PR #3138
- @tonilastre (Toni):新增查詢語言 Cypher 的配置和詞法分析器 PR #3102