2022 年 1 月 (版本 1.64)
更新 1.64.1:此更新解決了這些安全性問題。
更新 1.64.2:此更新解決了這些問題。
下載:Windows:x64 Arm64 | Mac:通用 Intel silicon | Linux:deb rpm tarball Arm snap
歡迎使用 Visual Studio Code 2022 年 1 月發行版本。此版本包含許多更新,希望您會喜歡,以下是一些重點功能
- 新側邊欄 - 使用新的側邊欄一次顯示更多檢視。
- 設定編輯器搜尋 - 搜尋現在優先比對完整字詞。
- 音訊提示 - 當游標移動到摺疊區域、錯誤和中斷點時,會聽到提示音。
- Unicode 強調顯示 - 避免強調顯示支援語言中的字元。
- 自動終端機回覆 - 建立針對常見終端機提示的自動回應。
- 筆記本 UI 改善 - 在 Markdown 和輸出儲存格中搜尋文字。
- 偵錯二進位資料檢視 - 在偵錯時檢視和編輯二進位資料。
- Markdown 路徑建議 - 快速插入相對檔案路徑和標題連結。
- JS/TS 以程式碼片段包圍 - 將選取的程式碼插入程式碼片段中。
- VS Code 網頁版 - 支援 vscode.dev 和 github.dev 中已簽署的 GitHub 提交。
如果您想在線上閱讀這些版本資訊,請前往 code.visualstudio.com 上的更新。
觀看重點,了解 VS Code 團隊發行派對中此版本的新功能。您可以在我們的 YouTube 頻道上找到活動錄影。
Insiders 版本:想盡快試用新功能嗎?您可以下載 Insiders 每日建置版本,並在最新更新可用時立即試用。
工作台
新側邊欄
在此里程碑中,我們推出了側邊欄,這是工作台中與側邊列相對的新介面,您可以在其中放置來自側邊列或底部面板的檢視。與將底部面板移動到編輯器的左側或右側不同,新的側邊欄除了底部面板外,還能讓您一次看到更多組檢視。
若要使用側邊欄,您需要將一些檢視移至其中。根據我們最受歡迎的功能要求之一,您可能會想要將 [大綱] 檢視從側邊列移至側邊欄。您可以透過將檢視拖放到側邊欄中來完成此操作。如果側邊欄未開啟,就像底部面板一樣,將檢視拖曳到編輯器區域的邊緣,將會彈出側邊欄。
在下面的簡短影片中,[大綱] 檢視會拖曳到右側並放下以建立側邊欄。然後,使用者可以在側邊列中切換檢視 (此處開啟全域 [搜尋] 檢視),同時保持 [大綱] 檢視可見。
或者,您可以使用命令面板中的 移動檢視 命令,這將會顯示可用檢視的下拉式清單。當您選取檢視時,您可以選擇位置,方法是建立新的面板/側邊列/側邊欄項目,或將檢視放置在現有位置,例如 [檔案總管] 或 [原始檔控制]。
您可以透過抓取檢視圖示,在面板、側邊列和側邊欄之間拖放檢視。您可以透過在檢視圖示上按一下滑鼠右鍵,然後選取 重設位置,將檢視的位置重設回預設值。
如果您想要將所有檢視重設回預設版面配置,您可以從命令面板執行 檢視:重設檢視位置。
取代面板位置
如上所述,新的側邊欄提供與將面板移動到左側或右側類似的功能,但透過不移動原始面板的整個內容來改善此功能。除了面板之間的檢視拖放之外,新的側邊欄正在取代移動底部面板的選項。
有鑑於此,我們已淘汰 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
) 現在可與觸控螢幕裝置搭配使用。
設定同步
設定同步現在支援同步使用者工作。
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"
}
佈景主題:藍寶石
您可以為其他項目設定自訂回覆,但在執行此操作時請小心,因為您會自動將文字傳送至處理序。例如,您可以使用它在提示時自動更新 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 命令的時間,以及命令的持續時間,但不包括產生子處理序所花費的時間。
筆記本
在呈現的 Markdown 和程式碼儲存格輸出中尋找文字
VS Code 現在支援在 Markdown 儲存格的呈現檢視和程式碼儲存格的輸出中尋找文字。此功能預設為停用,因為它需要呈現所有 Markdown 儲存格和輸出,這在開啟筆記本時可能會耗費大量資源。您可以從 [尋找] 控制項輸入方塊上的篩選下拉式清單中選擇選項 ([Markdown 預覽]、[程式碼儲存格輸出]) 來開啟此功能。
目前,在輸出中搜尋文字時有一些限制。例如,您無法搜尋 VS Code 本身呈現的串流/文字輸出。我們計劃在下一個反覆運算中改善此功能。
儲存格摺疊 UI
筆記本儲存格的左側有一個藍色長條,表示它們已聚焦。此長條現在是互動式的 - 您可以按一下頂部以摺疊儲存格輸入,並按一下底部以摺疊輸出。
Markdown 儲存格摺疊提示
當 Markdown 儲存格區域已摺疊時,會顯示一則訊息,其中包含摺疊儲存格的數量,以更清楚地表示某些儲存格已隱藏。
儲存格執行提示
我們進行了一些變更,讓儲存格執行中以及哪個儲存格正在執行中更加明顯。
首先,當儲存格正在執行但未捲動到檢視畫面中時,編輯器窗格頂端會顯示進度列。
其次,當儲存格正在執行時,會在筆記本工具列中新增一個新按鈕 前往執行中儲存格。
第三,如果程式碼儲存格透過 notebook.outline.showCodeCells
和 notebook.breadcrumbs.showCodeCells
設定在 [大綱] 或 [階層連結] 中可見,則它們會在執行時顯示動畫執行圖示。
偵錯
檢視和編輯二進位資料
VS Code 的通用偵錯工具現在支援檢視和編輯二進位資料 (又稱為「記憶體」)。可供記憶體檢視和編輯的變數會在 [變數] 檢視中顯示內嵌二進位圖示,選取它會開啟 Hex Editor
佈景主題:程式碼之歌
記憶體檢視和編輯仰賴偵錯介面協定的記憶體相關功能,偵錯擴充功能必須實作這些功能,才能在 VS Code 中啟用對應的 UI。如需詳細資訊,請參閱下方的 偵錯工具擴充功能撰寫 區段。在此版本中,只有內建 JavaScript 偵錯工具支援檢視和編輯二進位資料,但我們預期其他偵錯擴充功能很快就會跟進。
JavaScript 偵錯
從在中斷點暫停中排除呼叫者
有時您可能會設定中斷點或新增偵錯工具陳述式,但只想在從特定程式碼路徑呼叫時暫停。DOM 事件處理常式 (例如 mousemove
) 是這方面的好範例。在此版本中,JavaScript 偵錯工具新增了從在中斷點或偵錯工具陳述式暫停中「排除呼叫者」的功能。
在位置暫停時,您可以按一下滑鼠右鍵按一下 [呼叫堆疊] 檢視中的框架,然後選擇 排除呼叫者 命令。將會顯示新的 排除的呼叫者 檢視,讓您檢視和管理排除的呼叫者,之後,如果排除的呼叫者出現在其中斷點位置的呼叫堆疊中的任何位置,您的程式將不會在此暫停。
Linux 上的 Edge 支援
現在 Linux 上可透過 edge
偵錯類型使用 Microsoft Edge 偵錯。
語言
Markdown 路徑 IntelliSense
內建的 Markdown 擴充功能現在包含連結和影像的路徑 IntelliSense。
路徑建議的運作方式與 CSS 和 HTML 檔案中的路徑 IntelliSense 類似。以 /
開頭的路徑會相對於目前工作區解析,而以 ./
開頭或沒有任何前置字元的路徑則相對於目前檔案解析。當您輸入 /
時,會自動顯示路徑建議,或者可以使用 ⌃Space (Windows、Linux Ctrl+Space) 手動叫用。
路徑 IntelliSense 也可以協助您連結至目前檔案或另一個 Markdown 檔案中的標題。以 #
開頭路徑以查看檔案中所有標題的完成項目 (根據您的設定,您可能需要使用 ⌃Space (Windows、Linux Ctrl+Space) 才能看到這些)
您可以使用 "markdown.suggest.paths.enabled": false
停用路徑 IntelliSense。
Markdown 刪除線支援
VS Code 現在支援在 Markdown 編輯器和內建 Markdown 預覽中呈現 ~~刪除線~~
文字
刪除線是透過將文字包裝在兩個波浪符號字元中來撰寫。
雖然所有 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 基本語言支援。這包括語法強調顯示和自動關閉配對。
VS Code 網頁版
遠端存放庫
GitHub 存放庫
在 VS Code 網頁版中建立的提交現在已簽署,並在 GitHub UI 中標示為 已驗證。此外,維護人員現在可以在使用 VS Code 網頁版時,提交從分支提交的提取要求。這要歸功於新的 GitHub GraphQL createCommitOnBranch API。
此外,[原始檔控制] 檢視現在支援多重選取。
佈景主題:One Monokai
先前,只有在將 GitHub 存放庫複製到本機或遠端電腦後,才支援建立空白提交。您現在也可以使用 GitHub 存放庫:提交空白 命令在 VS Code 網頁版中建立空白提交。
也新增了一個新的組態,以啟用自動下載指定大小以下的存放庫完整內容,以啟用進階功能,例如全存放庫文字搜尋和 前往參考。設定 remoteHub.experimental.fs.maxAutoDownloadSize
控制存放庫大小限制,超過此限制會在嘗試下載完整內容時顯示提示。根據預設,未設定 maxAutoDownloadSize
,以便永遠不會在未提示的情況下下載。
Azure Repos
Azure Repos 支援已從 GitHub 存放庫擴充功能移至其專用的 擴充功能,該擴充功能也可以安裝在桌面上。
已採用預先發行擴充功能
VS Code 網頁版現在會搭售 GitHub Pull Request and Issues 和 GitHub 存放庫 擴充功能的預先發行版本。
PWA 和離線支援
VS Code 網頁版已採用 PWA 模型,現在可以作為 PWA 安裝在主機作業系統上。由於採用了此模型,現在也可以啟用一些離線功能。在造訪 vscode.dev 或 insiders.vscode.dev 一次後,使用者現在可以使用它來編輯本機檔案,即使在離線狀態下也是如此。
擴充功能貢獻
Python
改善的解譯器快速選取
為了更輕鬆地選取所需的解譯器,Python 擴充功能現在會依 [選取解譯器] 快速選取中的類型將解譯器分組。
我們也正在實驗將狀態列中的作用中/選取解譯器移至右側,可能會移至語言狀態內,因此如果看不到,請檢查右側的 Python 狀態。
新增 'conda run' 的支援
為了改善我們對 Anaconda 使用者的支援,我們已實作 conda run
的支援,使用 --no-capture-output
參數,該參數不會擷取過去造成錯誤的輸出。此功能已針對執行 linter、測試和格式化函式實作。
有一個已知的錯誤 問題 #10972,當在參數中使用特殊字元執行 linting 和測試時,會在 Windows 上造成錯誤。這是因為 conda run
讀取具有特殊字元的參數的方式所造成,因此可能會影響您在 settings.json
中指定的任何命令列引數。
Anaconda 團隊正在處理此問題,並希望很快能推出修正程式。您可以在 Conda 網站 上更新您的 Anaconda 版本,一旦新版本發行。
智慧選取和更佳的摺疊支援
也透過 Pylance 語言伺服器,對 Python 程式碼選取和摺疊進行了改善。
使用鍵盤選取 Python 程式碼所需的按鍵次數較少,因為在定義選取範圍時會考慮到程式碼的語意資訊
佈景主題:Horizon Extended
至於摺疊,先前區域僅由縮排定義,這在某些情況下並不理想,例如多行字串。現在,摺疊區域會適當地考量語意資訊,並且也支援 #region
註解
Jupyter
遠端 Jupyter 伺服器
Jupyter 擴充功能現在不再需要在本機和遠端 Jupyter 伺服器之間切換時重新載入 VS Code。此外,擴充功能現在會在核心選取器中同時顯示本機和遠端核心。
Hex Editor
Hex Editor 經歷了一些重要的架構重構。值得注意的是,在大多數情況下,它現在能夠開啟任何大小的檔案,而不會發生效能問題。此外,其版面配置寬度現在可設定,並且具有更強大的尋找/取代實作。未來反覆運算將會持續改善。
遠端開發
持續開發遠端開發擴充功能,可讓您使用容器、遠端電腦或 適用於 Linux 的 Windows 子系統 (WSL) 作為功能完整的開發環境。
您可以在遠端開發版本資訊中,了解新的擴充功能功能和錯誤修正。
GitHub Pull Requests and Issues
「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 事件的取消 Token
VS Code API 公開事件以參與檔案操作,例如 onWillRenameFiles。 這種參與可能是長時間執行的,因此使用者可以取消它。 在此版本中,擴充功能可以透過對應事件上的取消 Token 觀察使用者端的取消,例如 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 的步驟
- 尋找您想要嘗試的建議,並將其名稱新增到
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 類型時。 詳細資訊請參閱 issue #141418。 試用它並為 vscode.proposed.treeViewDragAndDrop.d.ts 提供意見回饋。
註解時間戳記
註解 API 在 Comment
上有一個新的 timestamp
屬性。 與 API 一起提供的是一個新的設定,用於控制註解時間戳記的顯示方式:comments.useRelativeTime
。 請試用它並為 vscode.proposed.commentTimestamp.d.ts 提供意見回饋。
工程
vscode-bisect 工具
一個用於剖析已發布的 VS Code Insiders 版本(網頁版和桌面版)的新工具可用於協助診斷問題
npx vscode-bisect
類似於 git bisect
,vscode-bisect
將啟動過去發布的一系列 Insiders 建置版本,詢問該建置版本是否重現該問題。 最終結果是引入問題的一系列提交。 該實例將為使用者資料使用專用的全新資料夾,以避免影響您的主要開發環境。
從原始碼執行 Code Web 和 Server
從原始碼執行 VS Code for the Web 和 VS Code Server 的腳本已移動到 scripts
資料夾
./scripts/code-web.sh|bat
從原始碼啟動 Code for the Web(又名「無伺服器」)並在瀏覽器中開啟它。 使用--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 使用 sass 擴充功能展開 emmet 的 "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)
Issue tracking
貢獻於我們的 issue tracking
- John Murray (@gjsjohnmurray)
- Andrii Dieiev (@IllusionMH)
- ArturoDent (@ArturoDent)
- Simon Chan (@yume-chan)
- heartacker (@heartacker)
- Lemmingh (@Lemmingh)
Pull requests
貢獻於 vscode
- @btidor (Benjamin Tidor): 修正文字搜尋結果中的
undefined
PR #141522 - @ckline-tryptic (Christopher M Kline): 在 git 擴充功能 API 中公開 'tag' 和 'deleteTag' PR #123815
- @DanielRosenwasser (Daniel Rosenwasser): TS/JS 片段中的 "Surround with" 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): 建立 PR 的章節 PR #141130
- @KhaledSamir (Khaled): 修正偵測逸出百分比符號的 regex。 PR #139437
- @lostintangent (Jonathan Carter): [Markdown] 新增對 GitHub 主題圖片的支援 PR #137820
- @Mai-Lapyst: 新增預設 fileicon 支援至語言貢獻 PR #118846
- @MaxGrekhov (Max Grekhov): 開啟的編輯器:依完整路徑排序 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): 新增選項以不將 --no-ignore-parent 傳遞至 rg 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: 將新的 API
sortText
屬性新增至 TestItem 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 regex PR #140977
- @TwitchBronBron (Bronley Plumb): 修正 InstallAnotherVersionAction 的效能問題 PR #136992
- @WaqasAliAbbasi (Waqas Ali): 防止 markdown 程式碼區塊和 spans 中的連結醒目提示 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): 功能:支援新的解析 import at-rules PR #255
- @romainmenke (Romain Menke): css color : 新增對 hue 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): 文件:修正錯字 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): 修正:docker 基礎映像需要是最新的
node:14-alpine
PR #651 - @joerohde (Joe Rohde): 功能:健全檢查以驗證進入點 PR #669
- @ritwickdey (Ritwick Dey): 修正:沒有 js 標籤的進入點驗證 PR #676
貢獻於 debug-adapter-protocol
- @Calindro: 新增 Emulicious Debugger PR #230
- @cdaringe (Christopher Dieringer): 文件(實作者):新增 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): 文件:(範例) 簡化瀏覽器 ESM Parcel 建置 PR #2832
- @ValeraS (Valeriy)
貢獻於 node-jsonc-parser
- @Marcono1234
- @P0lip (Jakub Rożek): findNodeAtLocation 無法處理不完整的屬性配對 PR #44