2022 年 1 月 (version 1.64)
更新 1.64.1:此更新解決了這些 安全問題。
更新 1.64.2:此更新解決了這些 問題。
下載:Windows:x64 Arm64 | Mac:通用 Intel Apple 晶片 | Linux:deb rpm tarball Arm snap
歡迎使用 Visual Studio Code 2022 年 1 月版本。此版本中包含許多我們希望您會喜歡的更新,主要亮點包括:
- 新側邊面板 - 使用新的側邊面板一次顯示更多檢視。
- 設定編輯器搜尋 - 搜尋現在優先匹配完整單詞。
- 音訊提示 - 當游標移動到摺疊區域、錯誤和斷點時,會聽到提示音。
- Unicode 高亮改進 - 避免在支援的語言中高亮顯示字元。
- 自動終端回覆 - 為常見的終端提示建立自動回覆。
- 筆記本 UI 改進 - 在 Markdown 和輸出單元格中搜索文字。
- 除錯二進位制資料檢視 - 在除錯時檢視和編輯二進位制資料。
- Markdown 路徑智慧感知 - 快速插入相對檔案路徑和標題連結。
- JS/TS 環繞程式碼片段 - 將選定的程式碼插入到程式碼片段中。
- Web 版 VS Code - 在 vscode.dev 和 github.dev 中支援已簽名的 GitHub 提交。
如果您想線上閱讀這些發行說明,請訪問 code.visualstudio.com 上的更新頁面。
在 VS Code 團隊的釋出派對上觀看此版本新功能的亮點。您可以在我們的 YouTube 頻道上找到活動的錄製。
內測版:想盡快嘗試新功能?您可以下載每晚的內測版構建,並儘快嘗試最新的更新。
工作臺
新側邊面板
在此里程碑中,我們引入了側邊面板,它是工作臺中側邊欄對面的一個新區域,您可以在其中容納來自側邊欄或底部面板的檢視。與將底部面板移動到編輯器的左側或右側不同,新的側邊面板與底部面板同時工作,因此您可以一次看到更多組檢視。
要使用側邊面板,您需要將一些檢視移到其中。根據我們收到點贊最多的功能請求之一,您可能希望將大綱檢視從側邊欄移動到側邊面板。您可以透過拖放將檢視拖到側邊面板中來完成此操作。如果側邊面板未開啟,就像底部面板一樣,將檢視拖到編輯器區域的邊緣會將其彈出。
在下面的短片中,大綱檢視被拖到右側並放下以建立側邊面板。然後,使用者可以在側邊欄中切換檢視(此處開啟全域性搜尋檢視),同時保持大綱檢視可見。
或者,您可以使用命令面板中的移動檢視命令,該命令將顯示可用檢視的下拉列表。選擇檢視後,您可以透過建立新的面板/側邊欄/側邊面板條目或將檢視放置在現有位置(例如資源管理器或原始碼管理)來選擇位置。

透過抓取檢視圖示,可以在面板、側邊欄和側邊面板之間拖放檢視。您可以透過右鍵單擊檢視圖示並選擇重置位置來將檢視的位置重置回預設位置。

如果您想將所有檢視重置回預設佈局,您可以從命令面板執行檢視:重置檢視位置。
替換面板位置
如上所述,新的側邊面板提供了與將面板移動到左側或右側類似的功能,但透過不移動原始面板的全部內容來改進它。除了檢視在面板之間拖放之外,新的側邊面板正在取代移動底部面板的選項。
鑑於此,我們已棄用 workbench.panel.defaultLocation 設定以及移動面板命令,轉而使用類似的命令:
- 將檢視從面板移動到側邊面板 (
workbench.action.movePanelToSidePanel) - 將檢視從側邊面板移動到面板 (
workbench.action.moveSidePanelToPanel)
舊的移動面板命令已重新對映到提供類似行為的新命令。即使有此對映,我們仍建議將鍵繫結更新為新命令。
下面,整個底部面板被移動到側邊面板,然後移回原始面板位置。
面板對齊
針對另一個流行的功能請求,我們添加了一個名為“面板對齊”的新佈局選項。此選項允許您配置底部面板在視窗中跨越的距離。有四個選項:
- 居中 - 這是經典行為。面板僅跨越編輯器區域的寬度。
- 左側 - 面板將從視窗左邊緣延伸到編輯器區域右邊緣。
- 右側 - 面板將從視窗右邊緣延伸到編輯器區域左邊緣。
- 對齊 - 面板將跨越視窗的全寬。
請注意,對於所有選項,活動欄都被視為視窗的邊緣。
您可以在選單下的檢視 > 外觀 > 對齊面板中配置這些選項,或者使用新的設定面板對齊方式為...命令。
自定義佈局控制元件
有了所有這些新的佈局選項,我們一直在探索如何更好地公開佈局配置以提高可發現性和易用性。這就是為什麼您可能會在標題欄中注意到一個新的實驗性配置佈局按鈕。僅當您的 window.titleBarStyle 設定為 custom(Windows 和 macOS 上的預設值)且 workbench.experimental.layoutControl.enabled 設定為 true 時,此按鈕才會出現。按鈕的可見性由實驗控制,但如果您想手動啟用它,您可以在設定編輯器中應用這些設定值 (⌘, (Windows, Linux Ctrl+,))。

選單的內容仍在完善中,但目前您應該可以看到切換側邊欄、面板和側邊面板的功能。此外,您將看到一個新命令自定義佈局的條目。這個新命令會觸發一個新的互動式快速選擇體驗,允許您在一個地方控制佈局配置的所有方面。
試用一下,如果您有任何反饋,請在問題 #137633中告訴我們。
設定編輯器
設定編輯器搜尋現在在搜尋時會查詢字串和列舉設定中的字串值匹配項。

新的搜尋演算法還優先考慮完整單詞匹配,這意味著如果同時安裝了 Java 和 JavaScript 擴充套件,搜尋“java”時 Java 設定會首先顯示。

最後,設定編輯器中的下拉列表(例如 files.autoSave)和列表小部件(例如 files.associations)現在支援觸控式螢幕裝置。
設定同步
設定同步現在支援同步使用者任務。

Web 版 VS Code 中的預設設定同步機器名稱現在包含瀏覽器和產品名稱。

資源管理器:確認並停用撤消
檔案資源管理器長期以來一直支援撤消堆疊來恢復檔案和資料夾編輯(重新命名、剪下/複製/貼上、移動、匯入等)。一些使用者認為此功能出乎意料,因此現在有一個設定可以停用資源管理器中的撤消 (explorer.enableUndo)。
此外,還添加了一個新設定 (explorer.confirmUndo) 來配置在執行撤消時資源管理器提示確認的頻率。預設情況下,資源管理器會比以前更頻繁地提示,以確保不會意外發生破壞性撤消,但這可以透過值 "light" 更改為舊行為,或設定為 "verbose" 以在所有撤消操作之前提示。
編輯器
音訊提示
音訊提示指示當前行是否具有某些標記,例如錯誤、斷點或摺疊的文字區域。
當主游標更改其行或第一次將標記新增到當前行時播放。當螢幕閱讀器連線時,音訊提示會自動啟用,但也可以透過將 audioCues.enabled 設定為 on 來手動開啟。
將會有更多音訊提示,我們將迭代聲音設計。
Unicode 高亮改進
為了改進 11 月版本中引入的Unicode 高亮功能,有新的設定可以更好地處理誤報。
新設定 editor.unicodeHighlight.allowedLocales 可用於允許在一個或多個配置的語言環境中常見的字元。預設情況下,這包括當前的 VS Code 顯示語言和當前的作業系統語言。目前,僅支援在 vscode-loc 語言包中翻譯的語言環境。
設定 editor.unicodeHighlight.includeStrings 控制是否應高亮顯示字串中的字元。該值預設為 true,但可以設定為 false 以忽略字串。
編輯器摺疊限制
新設定 editor.foldingMaximumRegions 允許使用者更改編輯器中顯示的摺疊範圍的最大數量。預設情況下,限制為 5000。請注意,較大的數字可能會導致效能下降。
編輯器適應語言功能時序
擴充套件為幾乎所有語言功能提供支援,包括摺疊區域、CodeLens、內聯提示和語義令牌等內建功能。這些功能不是由使用者手勢觸發的,而是由輸入觸發的,通常是在超時後。例如,CodeLens 會隨著您的輸入而更新,語義令牌也是如此。選擇的超時值是固定的,並且或多或少是任意的。在此版本中,編輯器會根據觀察到的時序進行調整,以便較慢的機器或網路連線不會因請求過多而超負荷,並且可以更好地利用較快的機器。
終端
自動回覆
終端現在具有一個可選功能,用於在收到特定字元序列時自動回覆。一個很好的例子是 Windows 批處理指令碼訊息 Terminate batch job (Y/N)?,在執行批處理指令碼時按 Ctrl+C 後出現。要讓終端在 Windows 中按 Ctrl+C 時自動回覆 Y 並回車 (\r),請新增以下設定:
"terminal.integrated.autoReplies": {
"Terminate batch job (Y/N)?": "Y\r"
}
主題:Sapphire
您可以為其他內容設定自定義回覆,但在執行此操作時要小心,因為您會自動向程序傳送文字。例如,您可以使用它來在出現提示時自動更新 Oh My Zsh:
"terminal.integrated.autoReplies": {
"[Oh My Zsh] Would you like to check for updates? [Y/n]": "Y\r"
}
如果您使用 Clink 並啟用其類似功能,您可以在 Clink 或 VS Code 中透過將回復設定為 null 來停用它,以避免兩個功能相互衝突:
"terminal.integrated.autoReplies": {
"Terminate batch job (Y/N)": null
}
增強的 VT 支援
添加了對作業系統命令 (OSC) 4/10/11/12 轉義序列的支援,使應用程式能夠控制終端的主題顏色。
鍵盤導航連結
以前,終端中的連結導航需要使用滑鼠。現在,可以透過以下命令僅使用鍵盤開啟連結:
- 終端:開啟上一個網路連結... 例如,
https://github.com/microsoft/vscode - 終端:開啟上一個檔案連結... 例如,
/Users/user/repo/file.txt - 終端:開啟檢測到的連結... 檢視所有連結(網路、檔案、單詞)

原始碼管理
更多對儲存庫發現的控制
根據社群反饋,有兩個新設定可以更好地控制 Git 儲存庫發現過程並適應更多樣化的資料夾結構。
git.repositoryScanMaxDepth- 控制掃描時使用的深度。git.repositoryScanIgnoredFolders- 控制掃描期間應忽略的資料夾列表。
更改列表排序改進
新設定 (scm.defaultViewSortKey) 控制原始碼管理檢視中更改列表使用的預設排序鍵。排序鍵的選擇也會為每個資料夾/工作區記住。
選項包括
name- 按檔名對更改進行排序。path- 按檔案路徑對更改進行排序(預設)。status- 按原始碼管理狀態對更改進行排序。
您需要重新載入 VS Code 窗口才能應用設定更改。
新的 Git 暫存命令
已向命令面板添加了一個新命令Git:刪除所有暫存...,允許使用者清除所有暫存條目。與任何具有永久後果的 Git 操作一樣,請謹慎使用此命令。
Git 輸出 - git 命令執行時間,以及持續時間
為了幫助查明效能問題,Git 輸出通道現在顯示 git 命令執行的時間以及命令的持續時間,不包括啟動子程序所花費的時間。
Notebook
在渲染的 Markdown 和程式碼單元格輸出中查詢文字
VS Code 現在支援在 Markdown 單元格的渲染檢視和程式碼單元格的輸出中查詢文字。此功能預設停用,因為它需要渲染所有 Markdown 單元格和輸出,這在開啟筆記本時可能會很耗時。您可以透過從查詢控制輸入框上的過濾器下拉列表中選擇選項(Markdown 預覽、程式碼單元格輸出)來開啟此功能。
目前,在輸出中搜索文字時存在一些限制。例如,您無法搜尋 VS Code 本身渲染的流式傳輸/文字輸出。我們計劃在下一次迭代中改進這一點。
單元格摺疊 UI
筆記本單元格左側有一個藍色條,用於指示它們處於焦點狀態。此條現在是互動式的 - 您可以單擊頂部部分以摺疊單元格輸入,單擊底部部分以摺疊輸出。
Markdown 單元格摺疊提示
當 Markdown 單元格區域被摺疊時,將出現一條訊息,其中包含摺疊單元格的數量,以使其更明顯地顯示一些單元格被隱藏。

單元格執行提示
我們進行了一些更改,使單元格執行時和哪個單元格正在執行時更加明顯。
首先,當一個單元格正在執行但未滾動到檢視中時,編輯器窗格頂部將顯示一個進度條。
其次,當一個單元格正在執行時,筆記本工具欄上會新增一個新按鈕轉到正在執行的單元格。
第三,如果程式碼單元格透過 notebook.outline.showCodeCells 和 notebook.breadcrumbs.showCodeCells 設定在大綱或麵包屑中可見,它們將在執行時顯示動畫執行圖示。
除錯
檢視和編輯二進位制資料
VS Code 的通用偵錯程式現在支援檢視和編輯二進位制資料(又名“記憶體”)。在變數檢視中,可用於記憶體檢視和編輯的變數會顯示一個內聯二進位制圖示,選擇它會開啟十六進位制編輯器:

主題:Codesong
記憶體檢視和編輯依賴於除錯介面卡協議的記憶體相關功能,除錯擴充套件必須實現這些功能才能在 VS Code 中啟用相應的 UI。有關詳細資訊,請參閱下面的偵錯程式擴充套件編寫部分。在此版本中,只有內建的 JavaScript 偵錯程式支援檢視和編輯二進位制資料,但我們預計其他除錯擴充套件很快就會跟進。
JavaScript 除錯
排除呼叫者在斷點處暫停
有時您可能會設定斷點或新增偵錯程式語句,但只想在從特定程式碼路徑呼叫時暫停。DOM 事件處理程式(如 mousemove)就是一個很好的例子。在此版本中,JavaScript 偵錯程式添加了“排除呼叫者”在斷點或偵錯程式語句處暫停的功能。
在某個位置暫停時,您可以在呼叫堆疊檢視中右鍵單擊框架並選擇排除呼叫者命令。將顯示一個新的已排除的呼叫者檢視,允許您檢視和管理已排除的呼叫者,之後如果已排除的呼叫者出現在其呼叫堆疊中的任何位置,您的程式將不會在斷點位置暫停。
Linux 上的 Edge 支援
現在可以透過 edge 除錯型別在 Linux 上使用 Microsoft Edge 除錯。
語言
Markdown 路徑智慧感知
內建的 Markdown 擴充套件現在包括用於連結和影像的路徑智慧感知。

路徑建議的工作方式類似於 CSS 和 HTML 檔案中的路徑智慧感知。以 / 開頭的路徑相對於當前工作區解析,而以 ./ 開頭或沒有任何字首的路徑相對於當前檔案解析。當您鍵入 / 時,路徑建議會自動顯示,或者可以透過使用 ⌃Space (Windows, Linux Ctrl+Space) 手動呼叫。
路徑智慧感知還可以幫助您連結到當前檔案或另一個 Markdown 檔案中的標題。以 # 開頭路徑以檢視檔案中所有標題的完成情況(根據您的設定,您可能需要使用 ⌃Space (Windows, Linux Ctrl+Space) 才能看到這些)

您可以使用 "markdown.suggest.paths.enabled": false 停用路徑智慧感知。
Markdown 刪除線支援
VS Code 現在支援在 Markdown 編輯器和內建 Markdown 預覽中渲染 ~~strikethrough~~ 文字

刪除線是透過將文字包裝在兩個波浪號字元中來編寫的。
雖然所有 VS Code 內建主題都支援刪除線,但 Marketplace 中的某些主題可能需要更新才能在編輯器中正確渲染刪除線文字。
TS 4.5.5
VS Code 現在捆綁了 TypeScript 4.5.5。
此次小更新修復了一些重要的崩潰和工具錯誤。
JS/TS 環繞程式碼片段
許多 JavaScript 和 TypeScript 程式碼片段已更新為支援環繞選定文字。
要使用環繞功能,首先選擇一些文字,然後執行插入程式碼片段。現在,if 或 forof 等程式碼片段不會替換選定的文字,而是使用選定的文字作為新語句的主體。
HTML 等號後自動插入引號
當在 HTML 中屬性後鍵入 = 時,語言服務現在會自動插入引號並將游標放在引號之間。設定 html.completion.attributeDefaultValue 允許您指定引號的型別(單引號或雙引號),預設使用雙引號。
可以透過設定 "html.autoCreateQuotes": false 停用此功能。
JSON 清除架構快取命令
新命令清除架構快取會清除以前下載的架構的快取。
LaTeX 支援
已新增 LaTeX 基本語言支援。這包括語法高亮和自動關閉對。

Web 版 VS Code
遠端倉庫
GitHub 儲存庫
在 Web 版 VS Code 中建立的提交現在已簽名並在 GitHub UI 中標記為已驗證。此外,維護人員現在在使用 Web 版 VS Code 時可以提交到從 fork 提交的拉取請求。這要歸功於新的 GitHub GraphQL createCommitOnBranch API。
此外,原始碼管理檢視現在支援多選。
主題:One Monokai
以前,只有在將 GitHub 儲存庫克隆到本地或遠端計算機後才支援建立空提交。現在,您還可以使用GitHub 儲存庫:提交空提交命令在 Web 版 VS Code 中建立空提交。
還添加了一個新配置,用於啟用自動下載小於給定大小的儲存庫的全部內容,以啟用高階功能,例如整個儲存庫文字搜尋和轉到引用。設定 remoteHub.experimental.fs.maxAutoDownloadSize 控制在嘗試下載全部內容時顯示提示之前的儲存庫大小限制。預設情況下,未設定 maxAutoDownloadSize,以便在不提示的情況下永遠不會下載。
Azure Repos
Azure Repos 支援已從 GitHub Repositories 擴充套件移出到其自己的專用擴充套件中,該擴充套件也可以安裝在桌面上。
採用預釋出擴充套件
Web 版 VS Code 現在捆綁了 GitHub Pull Request and Issues 和 GitHub Repositories 擴充套件的預釋出版本。
PWA 和離線支援
Web 版 VS Code 採用了 PWA 模型,現在可以作為 PWA 安裝在主機作業系統上。由於採用了 PWA,現在也可以啟用一些離線功能。一旦訪問過 vscode.dev 或 insiders.vscode.dev,使用者現在即使離線也可以使用它來編輯本地檔案。

對擴充套件的貢獻
Python
改進的直譯器快速選擇
為了更容易選擇所需的直譯器,Python 擴充套件現在在選擇直譯器快速選擇中按型別對直譯器進行分組。

我們還在嘗試將活動/選定的直譯器移動到狀態列的右側,可能位於語言狀態內,因此如果它不可見,請檢查右側的Python狀態。
新增對 'conda run' 的支援
為了改善對 Anaconda 使用者的支援,我們實現了對 conda run 的支援,使用 --no-capture-output 引數,該引數不會捕獲過去導致錯誤的輸出。此功能用於執行 linting、測試和格式化功能。
存在一個已知錯誤問題 #10972,該錯誤會導致 Windows 在執行 linting 和測試時在引數中包含特殊字元時出錯。這是由於 conda run 讀取帶有特殊字元的引數的方式造成的,因此它可能會影響您在 settings.json 中指定的任何命令列引數。
Anaconda 團隊正在處理此問題,並希望儘快釋出修復程式。新版本釋出後,您可以在 Conda 網站上更新您的 Anaconda 版本。
智慧選擇和更好的摺疊支援
透過 Pylance 語言伺服器,Python 程式碼選擇和摺疊也得到了改進。
使用鍵盤選擇 Python 程式碼所需的擊鍵次數更少,因為在定義選擇範圍時會考慮程式碼的語義資訊
至於摺疊,以前區域僅由縮排定義,這對於某些情況(例如多行字串)來說並不理想。現在,摺疊區域會適當考慮語義資訊,並且還支援 #region 註釋
Jupyter
遠端 Jupyter 伺服器
Jupyter 擴充套件現在在本地和遠端 Jupyter 伺服器之間切換時不再需要重新載入 VS Code。此外,該擴充套件現在在核心選擇器中同時顯示本地和遠端核心。
十六進位制編輯器
十六進位制編輯器進行了一些重大的架構重構。值得注意的是,在大多數情況下,它現在能夠開啟任意大小的檔案而沒有效能問題。此外,其佈局寬度現在是可配置的,並且具有更強大的查詢/替換實現。未來的迭代中將繼續改進。
遠端開發
遠端開發擴充套件的工作仍在繼續,它允許您使用容器、遠端機器或 適用於 Linux 的 Windows 子系統 (WSL) 作為功能齊全的開發環境。
您可以在遠端開發發行說明中瞭解有關新擴充套件功能和錯誤修復的資訊。
GitHub 拉取請求和議題
GitHub Pull Requests and Issues 擴充套件的工作仍在繼續,該擴充套件允許您處理、建立和管理拉取請求和問題。檢視擴充套件 0.36.0 版本的更新日誌以檢視亮點。
預覽功能
終端 Shell 整合
終端現在具有實驗性 shell 整合功能,允許 VS Code 深入瞭解終端中發生的情況,而這在以前是未知的。當使用設定 "terminal.integrated.enableShellIntegration": true 啟用時,如果可能,用於執行 shell 整合指令碼的引數將被注入到您的終端配置檔案中。指令碼本身主要將不可見序列注入到您的提示符中,為 VS Code 提供有關提示符、命令和命令輸出的位置、每個命令的當前工作目錄 (cwd) 以及每個命令的退出程式碼等資訊。
使用此資訊,我們可以透過各種方式增強現有功能:
- 快速檢測 cwd - 以前這隻在 macOS 和 Linux 上可能,並且會啟動程序或查詢檔案系統以獲取該資訊。現在這在 Windows 上也有效。cwd 用於諸如連結檢測和拆分終端選項卡時繼承 cwd 等功能。
- 改進命令跟蹤功能 - 此功能以前就存在,但在 macOS 上只有預設鍵繫結 (
Cmd+Up/Down),並且使用一種幼稚的方法來根據按下Enter的時間來猜測行在哪裡。
Shell 整合啟用以下新功能:
- 執行最近的命令 - 既然我們知道運行了哪些命令,我們就可以公開一個命令,允許您在快速選擇中再次檢視和執行它們。

- 轉到最近的目錄 - 與上面類似,我們還允許導航到過去的目錄。

- 相對於 cwd 的連結支援 - 我們現在知道終端緩衝區中每一行的 cwd,因此我們可以支援開啟終端中相對於啟用位置 cwd 的連結。以前,當單擊連結時,會開啟一個快速選擇,其中包含與該名稱匹配的任何資料夾的結果。現在,將開啟完全匹配的檔案。

目標是當功能的可靠性足夠好時,預設開啟 shell 整合。我們對引數注入採取的方法是儘可能不引人注目。例如,我們不像某些終端那樣自動修改您的 shell 初始化指令碼,而是攔截程序的建立,檢查引數,如果我們確信終端可以使用它們執行,則注入 shell 整合引數。希望它無需使用者進行任何配置即可正常工作,並且不會干擾您現有的 shell 設定。
目前支援的 shell 是適用於 Windows 的 pwsh 以及適用於 Linux 和 macOS 的 pwsh、bash 和 zsh。
如前所述,這是一個實驗性功能,有些粗糙,並且存在一些已知問題:
- 尚不支援
$PS2行繼續。但是,pwsh 中的行繼續確實有效。 - 尚不支援右側提示。
- 已知 zsh 指令碼有時無法啟用。
- 遠端 VS Code 視窗支援有限。
檔案資源管理器檔案巢狀
資源管理器現在具有實驗性支援,可以在邏輯巢狀佈局中顯示同一目錄中的檔案。這有助於將相關檔案在視覺上分組在一起,並將檔案摺疊到“根”檔案中以減少混亂。已新增幾個新設定來控制此行為:
explorer.experimental.fileNesting.enabled:控制是否啟用檔案巢狀。explorer.experimental.fileNesting.expand:控制檔案巢狀是否預設顯示為展開。explorer.experimental.fileNesting.patterns:控制檔案如何巢狀。
例如,在許多儲存庫中,.ts 檔案與其派生的 .js、.d.ts 和/或 .js.map 檔案相鄰。雖然透過 files.exclude 隱藏派生檔案一直以來都是可能的,但能夠快速訪問派生檔案是很好的,現在透過巢狀可以實現
下面,資源管理器正在使用預設的 explorer.experimental.fileNesting.patterns 配置來巢狀 .js 和 .js.map 檔案,這些檔案在展開相應的 .ts 檔案時顯示。

主題:GitHub Light
擴充套件創作
語言預設圖示
語言貢獻者可以為語言定義一個圖示。
{
"contributes": {
"languages": [
{
"id": "latex",
// ...
"icon": {
"light": "./icons/latex-light.png",
"dark": "./icons/latex-dark.png"
}
}
]
如果當前檔案圖示主題只有該語言的通用檔案圖示,則會顯示該圖示。
此外,像 Minimal 或 None 這樣不顯示檔案圖示的檔案圖示主題也不會使用語言圖示。如果檔案圖示主題具有副檔名或檔名的圖示,則將優先使用這些圖示。
檔案圖示主題可以透過在主題檔案中定義 showLanguageModeIcons: true|false來自定義新行為。
showLanguageModeIcons: true顯示預設語言圖示,即使主題未指定檔案圖示。showLanguageModeIcons: false阻止使用預設語言圖示。
QuickPickItem 分隔符
擴充套件作者現在可以向快速選擇新增分隔符。這對於對專案進行分組或在專案之間新增一些空間很有用

要將分隔符新增到現有快速選擇中,請將新的 QuickPickItem 新增到現有專案列表中,但指定 QuickPickItem 上的 kind 屬性並將其設定為 QuickPickItemKind.Separator。
在上面的示例中,您需要將以下物件新增到專案列表中:
{
label: 'APIs',
kind: QuickPickItemKind.Separator
}
如果您沒有指定 kind 屬性,或者將其設定為 QuickPickItemKind.Default,則該專案將被視為正常的 QuickPickItem。
vscode.workspace.createFileSystemWatcher 現在支援任何路徑
現有的 vscode.workspace.createFileSystemWatcher API 已得到改進,允許您傳入任何檔案或資料夾路徑進行檔案監視,即使它在工作區之外。以前,檔案監視器僅限於工作區中開啟的資料夾。
根據您傳入方法的 glob 模式,監視器將是遞迴的(例如,**/*.js)或非遞迴的 (*.js)。遞迴監視器需要更多資源,因此如果可能,我們建議使用簡單的 glob 模式。
示例
// Watch a folder non-recursively
vscode.workspace.createFileSystemWatcher(new vscode.RelativePattern(vscode.Uri.file(<path to folder outside workspace>), '*.js'));
// Watch the active text editor file
vscode.workspace.createFileSystemWatcher(new vscode.RelativePattern(vscode.window.activeTextEditor.document.uri, '*'));
注意:作為此更改的一部分,我們對現有檔案監視器進行了行為更改。僅使用 glob 模式(例如 vscode.workspace.createFileSystemWatcher('**'))指示的檔案監視器將不再接收在工作區外部更改的檔案的事件。它將僅接收來自工作區內部路徑的檔案事件。如果使用者沒有開啟的工作區,則不會再透過此方法傳遞任何事件。這樣做是為了確保擴充套件不會接收來自工作區外部的意外事件。
vscode.TerminalLocation
您可以使用新的 TerminalLocation API 指定建立擴充套件終端的位置。
這使您能夠透過提供 parentTerminal、在編輯器區域和麵板之間進行選擇等來建立拆分終端。
onWill 事件的取消令牌
VS Code API 公開了用於參與檔案操作的事件,例如 onWillRenameFiles。這種參與可能是長時間執行的,因此使用者可以取消它。在此版本中,可以透過相應事件上的取消令牌(例如 FileWillRenameEvent#token)觀察使用者端的取消。這允許擴充套件也可以取消昂貴的下層操作。
Git 擴充套件 API
- 已新增新的
Repository.add方法,以啟用暫存檔案的功能。 - 添加了
Repository.tag和Repository.deleteTag方法,以啟用建立和刪除標籤的功能。
onTaskType 啟用事件
提供任務的擴充套件可以透過使用新的 onTaskType:foo 啟用事件來限制不必要的啟用。這是對啟用 onCommand:workbench.action.tasks.runTask 的改進,因為 workbench.action.tasks.runTask 對於提供任務的擴充套件來說通常過於急切。
偵錯程式擴充套件創作
VS Code 現在實現了除錯介面卡協議的記憶體相關功能
在此版本中,VS Code 開始透過支援 除錯介面卡協議的以下記憶體相關功能來支援檢視和編輯二進位制資料:
- VS Code 遵守 DAP 變數上的
memoryReference屬性,並透過將客戶端功能supportsMemoryReferences傳遞給除錯介面卡來宣佈這一點。 - 如果 VS Code 從除錯介面卡接收到功能
supportsReadMemoryRequest,它將啟用用於檢視二進位制資料的 UI,並將發出readMemory請求來檢索資料。 - 如果 VS Code 從除錯介面卡接收到功能
supportsWriteMemoryRequest,它將啟用用於編輯二進位制資料的 UI,並將發出writeMemory請求來儲存資料。 - VS Code 處理
memory事件,並透過將客戶端功能supportsMemoryEvent傳遞給除錯介面卡來宣佈這一點。
語言伺服器協議
新版本的 語言伺服器協議以及相應的 npm 模組已釋出。該版本包含筆記本文件的擬議實現。可以在此處閱讀規範部分。
建議的擴充套件 API
每個里程碑都會帶來新的提議 API,擴充套件作者可以嘗試這些 API。一如既往,我們希望得到您的反饋。以下是嘗試提議 API 的步驟
- 查詢您要嘗試的提議並將其名稱新增到
package.json#enabledApiProposals。 - 使用最新的vscode-dts並執行
vscode-dts dev。它會將相應的d.ts檔案下載到您的工作區中。 - 您現在可以根據該提議進行程式設計。
您不能釋出使用提議 API 的擴充套件。下個版本中可能會有破壞性更改,我們絕不希望破壞現有擴充套件。
停用終端永續性
建立終端時,可以透過在 TerminalOptions 或 ExtensionTerminalOptions 中設定 disablePersistence 來選擇退出在重啟和重新載入時終端永續性。
export interface TerminalOptions {
disablePersistence?: boolean;
}
內聯提示 API
這是一條對所有對內聯提示 API感興趣的人的呼籲。它即將完成,並增加了對互動式標籤部分的支援。這些允許您將原始碼位置繫結到提示,從而啟用程式碼導航等功能。此外,現在支援命令。此提案的最新狀態和開發情況如下:vscode.proposed.inlayHints.d.ts
語言狀態 API
語言狀態項 API 計劃定稿。請試用並提供反饋:vscode.proposed.languageStatus.d.ts
測試提案
我們正在提出一種實現測試“重新整理”處理程式的官方方式,請檢視vscode.proposed.testRefresh.d.ts。這將允許擴充套件在 VS Code 中的標準“重新整理”按鈕後面統一起來,並避免實現自己的按鈕。
此外,我們建議 TestItem 在 vscode.proposed.testSortText.d.ts 中具有 sortText 屬性。
內聯完成:自動括號完成
當擴充套件提供內聯完成項時,它可以將其屬性 completeBracketPairs 設定為 true。如果設定,VS Code 會在向用戶顯示內聯完成之前嘗試透過關閉或刪除括號來修復完成文字中的無效括號。
樹拖放提案支援拖入編輯器
樹拖放提案即將定稿,現在支援當 TreeDragAndDropController 支援 "resourceurls" mime 型別時,從樹檢視拖動到編輯器中。詳細資訊可在問題 #141418中找到。試用並提供反饋:vscode.proposed.treeViewDragAndDrop.d.ts。
評論時間戳
評論 API 在 Comment 上有一個新的 timestamp 屬性。除了 API 之外,還有一個新設定來控制評論時間戳的顯示方式:comments.useRelativeTime。請試用並提供反饋:vscode.proposed.commentTimestamp.d.ts。
工程
vscode-bisect 工具
提供了一個用於對已釋出的 VS Code Insiders 版本(web 和 desktop)進行二分查詢的新工具,以幫助診斷問題
npx vscode-bisect
與 git bisect 類似,vscode-bisect 將啟動過去一系列已釋出的 Insiders 版本,詢問該版本是否重現了該問題。最終結果是引入該問題的提交範圍。該例項將使用專用的全新資料夾作為使用者資料,以免影響您的主要開發環境。
從原始碼執行 Code Web 和 Server
從原始碼執行 Web 版 VS Code 和 VS Code Server 的指令碼已移至 scripts 資料夾
./scripts/code-web.sh|bat從原始碼啟動 Web 版 Code(又名“無伺服器”)並在瀏覽器中開啟它。使用--help獲取更多選項。./scripts/code-server.sh|bat從原始碼啟動 VS Code Server。新增--launch以額外在瀏覽器中開啟 Web UI。使用--help獲取更多選項。./scripts/test-web-integration.sh|bat用於遠端 Web 測試。./scripts/test-remote-integration.sh|bat用於遠端測試。
擴充套件
在此里程碑中,我們透過最大限度地減少 VS Code 對服務進行的查詢次數來改進 Marketplace 互動。
值得注意的修復
- 91286 限制客戶端的設定同步活動
- 117648 使用 emmet 擴充套件 sass 展開“gtc”時的結果很奇怪。
- 134466 不存在的偵錯程式配置
- 135677 滑鼠懸停在設定 UI 連結上時,開頭顯示 #
- 138072 將最近開啟的工作區儲存在全域性儲存中
- 138805 開啟大型二進位制檔案會讀取全部內容
- 138850 磁碟上的檔案更改後,開啟的編輯器最終可能為空
- 139880 除錯:在 F5 上被要求儲存檔案
- 140003 無法從位於不同工作區資料夾中的啟動配置中引用任務
- 140129 每次雙擊 settings.json 檔案都會導致新選項卡
- 140560 VS Code 停止除錯 API 的問題
- 140967 Comment.body 渲染為 Markdown,即使是純字串也是如此
感謝
最後但同樣重要的是,向 VS Code 的貢獻者們致以衷心的感謝。
Web 擴充套件
已啟用作為Web 擴充套件執行程式碼的擴充套件作者(以下列表介於 2021 年 12 月 7 日至 2022 年 1 月 31 日之間)
- Tabulate (a5hk)
- Powder (Alexey Osipov)
- VCDrom (Aliaksei Chapyzhenka)
- Reveal Button (Andreas Weber)
- Digital Solutions (Andrew Tacon)
- lorem ipsum (aroary)
- Convert Selection (ArturoDent)
- Custom Language Properties (ArturoDent)
- Find and Transform (ArturoDent)
- Launch Configs (ArturoDent)
- Instant Documentation (atanasster)
- Couper Configuration (Avenga Germany GmbH)
- Argdown (Christian Voigt)
- ES7+ React/Redux/React-Native snippets (dsznajder)
- fantasy.markdown-all-in-one-for-web (fantasy)
- fink (fink)
- GitLens (Insiders) (GitKraken)
- Select by Indent (haberdashPI)
- Selection Utilities (haberdashPI)
- Python-Factory Web Search (HyunseungLee)
- Custom Element Scanner (alpha) (JanKretschmer)
- tomato extensions (jingjingwu)
- vscode-position (jtr)
- KCL for vscode.dev (kcl_extension_publisher)
- KL Language support (Kevlanche)
- Systemd Helper (Liu Yue)
- bett3r icons (Lucas)
- xpro-snippets (Maratib Ali Khan)
- Projen (MarkMcCulloh)
- Rainbow CSV (mechatroner)
- Blogview (mkizka)
- CodeSandpack (Mojojoji)
- Abracadabra, refactor this! (Nicolas Carlo)
- Office Script Extension (office-script)
- Better Fountain (Piers Deseilligny)
- Dothttp Http Client (Prasanth)
- 小説 (Public Theta)
- bojodog (RanolP)
- JSON Validate (rioj7)
- Remove Comments (rioj7)
- Everforest (sainnhe)
- Gruvbox Material (sainnhe)
- JetSet for VSCode (Sudhay)
- MathJax for Markdown (TANIGUCHI Masaya)
- WebEnv-Client (Theboys619)
- Graphviz Interactive Preview (tintinweb)
- LLL (tintinweb)
- Vyper (tintinweb)
- Sourcegraph - preview (TJ Kandala)
- Keyboard Macro Beta (tshino)
- WakaTime (WakaTime)
- MSCode (WebXT ES)
- DigitalJS (Yichao Yu)
- Better Snippets (zardoy)
- Fix All JSON (zardoy)
- Zardoy Experiments (zardoy)
問題跟蹤
對我們問題跟蹤的貢獻
- John Murray (@gjsjohnmurray)
- Andrii Dieiev (@IllusionMH)
- ArturoDent (@ArturoDent)
- Simon Chan (@yume-chan)
- heartacker (@heartacker)
- Lemmingh (@Lemmingh)
拉取請求
對 vscode 的貢獻
- @btidor (Benjamin Tidor): 修復文字搜尋結果中的
undefinedPR #141522 - @ckline-tryptic (Christopher M Kline): 在 git 擴充套件 API 中公開 'tag' 和 'deleteTag' PR #123815
- @DanielRosenwasser (Daniel Rosenwasser): TS/JS 程式碼片段中的“環繞” PR #138565
- @dnicolson (Dave Nicolson): 新增 bisect 訊息的單數形式 PR #137626
- @eltociear (Ikko Ashimine): editors - 修復拼寫錯誤 PR #140320
- @Enzime (Michael Hoang): ripgrep: 不使用已棄用的 PCRE2 標誌 PR #139721
- @gjsjohnmurray (John Murray)
- 修復 #118617 在提到缺少上游分支時使用“remote”一詞 PR #120467
- 更正
screencastMode.keyboardShortcutsFormat設定的描述 (#_138644) PR #138645 - 顯示
editor.hover.delay的最大值和最小值 (#_140215) PR #140216 - 在 SQL 中支援
--#region和--#endregion(#_141257) PR #141264
- @iamkun: 重構:刪除重複的 if 語句 PR #140085
- @imphil (Philipp Wagner): 更新 ripgrep 二進位制檔案以包含 ppc64le 和 s390x PR #140028
- @jeanp413 (Jean Pierre)
- 使用 workbench.extensions.installExtension 安裝帶版本的擴充套件 PR #136314
- 修復在 Firefox 上開啟和關閉終端後 Ctrl + Shift + {Left, Right, Home, End} 損壞的問題 PR #139615
- 修復 vscode web 中更改鍵盤佈局損壞的問題 PR #140295
- 修復連線令牌解析 PR #140532
- @jlelong (Jerome Lelong)
- 基本的 LaTeX 內建擴充套件 PR #138395
- 更新 latex 語言語法和配置 PR #140801
- @jzyrobert (Robert Jin): 更新 html-language-features 以使用 doQuoteComplete PR #137080
- @KapitanOczywisty: 修復 PHP update-grammar.js PR #140619
- @KendallDoesCoding (Kendall Pinto): 建立 prs 部分 PR #141130
- @KhaledSamir (Khaled): 修正了用於檢測轉義百分號的正則表示式。 PR #139437
- @lostintangent (Jonathan Carter): [Markdown] 新增對 GitHub 主題影像的支援 PR #137820
- @Mai-Lapyst: 為語言貢獻新增預設 fileicon 支援 PR #118846
- @MaxGrekhov (Max Grekhov): 開啟的編輯器:按 fullPath 排序 PR #133790
- @nrayburn-tech (Nicholas Rayburn): 將原始碼管理檢視排序新增到儲存中 PR #123232
- @OPY-bbt (zhangyan): fix(suggest): 僅在聚焦標籤中顯示 readmore 圖示 PR #139792
- @orta (Orta Therox): 允許擴充套件程式透過命令向 typescript 擴充套件程式的 tsserver 發出請求 PR #138279
- @PieterBranderhorst: 超過最大摺疊數時通知使用者,並使最大摺疊數可配置。 PR #140480
- @samestep (Sam Estep): 新增選項以不向 rg 傳遞 --no-ignore-parent PR #140022
- @SeriousBug (Kaan Genç): hasCustomMarkdownPreview 停用上下文選單中的 markdown 預覽按鈕 PR #139241
- @ShafinKhadem (Nafiur Rahman Khadem): 在片段末尾新增撤消/重做停止 PR #140096
- @slidoooor (Hans)
- 修復當獲取快取的令牌時,相同的 markdown 生成不同的 html 內容 PR #138935
- 修復線條重疊幾畫素的問題 (#_139311) PR #139575
- testing: 在每次測試執行前新增自動儲存 PR #141254
- @smcenlly (Simon McEnlly): testing: 為 TestItem 新增新的 API `sortText` 屬性 PR #132099
- @SMSadegh19 (Mohammad Sadegh Salimi): 為 readme markdown 預覽新增對 RTL 語言的支援。 PR #139644
- @SNDST00M (M.U.N.I.N): 新增 `FontStyle.Strikethrough` 支援 PR #139413
- @somebee (Sindre Aarsaether): 修復透過 transform 縮放編輯器時的裝飾和滑鼠點選測試 PR #139282
- @stevenjoezhang (Mimi): 修復帶有預定義變數的 terminal.integrated.cwd PR #137023
- @Timmmm (Tim): 修復 parseAddress 正則表示式 PR #140977
- @TwitchBronBron (Bronley Plumb): 修復 InstallAnotherVersionAction 的效能問題 PR #136992
- @WaqasAliAbbasi (Waqas Ali): 防止 markdown 程式碼塊和 span 中的連結高亮顯示 PR #140816
- @wengj9 (James Weng): 為片段選擇器新增擴充套件資訊 PR #138880
- @Yash621 (Yash Goel): code-insiders --status 導致錯誤 PR #140152
- @zardoy (Vitaly): 使 `showInformationMessage`、`showWarningMessage`、`showErrorMessage` 的型別嚴格,將專案作為字串 PR #137672
對 vscode-css-languageservice 的貢獻
- @fyangstudio (yangfan): Feat: 支援新的解析 import at-rules PR #255
- @romainmenke (Romain Menke): css color: 新增對色調 rad|grad|turn 的支援 PR #257
- @Semigradsky (Dmitry Semigradsky): 支援大小寫敏感的屬性選擇器 PR #259
對 vscode-eslint 的貢獻
- @edupsousa (Eduardo Pereira de Sousa): 允許使用者忽略伺服器錯誤。 PR #1375
對 vscode-extension-samples 的貢獻
- @laurentlb (Laurent Le Brun): 修復 comment-sample 中的“取消”按鈕 PR #492
對 vscode-html-languageservice 的貢獻
- @zuochenxue (ZuoChenxue): docs: 修正拼寫錯誤 PR #118
對 vscode-js-debug 的貢獻
對 vscode-pull-request-github 的貢獻
對 vscode-textmate 的貢獻
- @SNDST00M (M.U.N.I.N): 實現 `FontStyle.Strikethrough` PR #159
對 vscode-vsce 的貢獻
- @hangxingliu (Liu Yue): fix: docker 基礎映象需要是最新的 `node:14-alpine` PR #651
- @joerohde (Joe Rohde): feat: 健全性檢查以驗證入口點 PR #669
- @ritwickdey (Ritwick Dey): fix: 沒有 js 標籤的入口點驗證 PR #676
對 debug-adapter-protocol 的貢獻
- @Calindro: 添加了 Emulicious 偵錯程式 PR #230
- @cdaringe (Christopher Dieringer): docs(implementors): 新增 OCaml PR #228
- @ko1 (Koichi Sasada): 新增 `VSCode rdbg Ruby Debugger` PR #232
對 monaco-editor 的貢獻
- @blutorange (Andre Wachsmuth): 實現 #2383 新增 FreeMarker 模板語言的語法模式 PR #2847
- @forensicmike (forensicmike1): 在克隆和執行示例的分步命令列說明中新增“cd monaco-editor” PR #2894
- @juan-carlos-diaz: 修復 #2851 正確高亮顯示 Shell 語言的屬性和識別符號(帶破折號) PR #2871
- @philipturner (Philip Turner)
- @rcjsuen (Remy Suen): 支援 Markdown 語法中的帶連字元的 HTML 標籤 PR #2864
- @resistdesign (Ryan Graff): doc: (samples) 簡化 Browser ESM Parcel 構建 PR #2832
- @ValeraS (Valeriy)
對 node-jsonc-parser 的貢獻
- @Marcono1234
- @P0lip (Jakub Rożek): findNodeAtLocation 不處理不完整的屬性對 PR #44