IT之家 8 月 6 日消息 微軟今天宣布發(fā)布 Visual Studio Code 七月更新(v1.59),其中包括幾個(gè)新功能,包括 Live HTML Preview 擴(kuò)展 w/JS 調(diào)試支持、測(cè)試運(yùn)行程序的本地支持、跨窗口拖放終端的能力等等。
微軟中國(guó) MSDN 表示,歡迎使用 2021 年 7 月版的 Visual Studio Code。我們希望您會(huì)喜歡此版本中的許多更新與改進(jìn),以下是其中的一些亮點(diǎn):
* 擴(kuò)展視圖的改進(jìn) - 豐富的擴(kuò)展詳細(xì)信息懸停,新的運(yùn)行狀態(tài)標(biāo)簽頁(yè)。
* 設(shè)置編輯器驗(yàn)證 - 快速查找到對(duì)象設(shè)置的編輯錯(cuò)誤。
* 拖放終端 - 將終端跨窗口移動(dòng)到編輯器和面板區(qū)域。
* 擴(kuò)展的主題定制 - 一次定制多個(gè)顏色主題。
* Jupyter 筆記本的內(nèi)建支持 - 直接在 VS Code 中打開(kāi) .ipynb 文件。
* 筆記本 UI 的改進(jìn) - 顯示折疊單元格的第一行,每個(gè)單元格的撤消/重做。
* 測(cè)試 API 的最終確定 - 原生支持 VS Code 中使用測(cè)試資源管理器運(yùn)行測(cè)試。
* 調(diào)試反匯編視圖預(yù)覽 - 在 VS Code 中顯示反匯編的 C++ 代碼。
* 實(shí)時(shí)預(yù)覽擴(kuò)展 - VS Code 中的實(shí)時(shí)的 HTML 預(yù)覽,支持 JavaScript 調(diào)試。
* 遠(yuǎn)程 - 容器 devcontainer CLI - 用于開(kāi)發(fā)容器的命令行界面。
如果您想在線閱讀這些發(fā)行說(shuō)明,請(qǐng)?jiān)L問(wèn) code.visualstudio.com 上的更新。
更多關(guān)于 VS Code 的資料請(qǐng)?jiān)L問(wèn)微軟 MS Learn 平臺(tái):http://aka.ms/vscodelearn
內(nèi)部搶先版:想更先一步體驗(yàn)新功能嗎?您可以下載每晚的 Insiders 版本,并在最新更新可用時(shí)立即試用。
code.visualstudio.com:
https://code.visualstudio.com/
更新:
https://code.visualstudio.com/updates/v1_58
http://aka.ms/vscodelearn:
https://docs.microsoft.com/zh-cn/users/nathanxue/collections/3jxsyzg0epdj3?WT.mc_id=VSCode_457601
Insiders:
https://code.visualstudio.com/insiders/
工作臺(tái)
擴(kuò)展插件:
改進(jìn)了調(diào)整大小后的擴(kuò)展視圖。在下面的動(dòng)圖中,你可以看到默認(rèn)寬度的擴(kuò)展視圖顯示了所有詳細(xì)信息(以前未顯示圖標(biāo)、評(píng)分和安裝計(jì)數(shù))。當(dāng)它縮小時(shí),會(huì)顯示較小的擴(kuò)展圖標(biāo),當(dāng)其寬度進(jìn)一步減小時(shí),圖標(biāo)和評(píng)分將被隱藏。
主題:GitHub Light
擴(kuò)展視圖現(xiàn)在會(huì)顯示自定義懸停信息。這個(gè)豐富的懸停包括擴(kuò)展的完整描述和其他有用的信息,例如為什么禁用或推薦擴(kuò)展。
主題:GitHub Light
您現(xiàn)在可以在插件面板中看到更多的插件運(yùn)行狀態(tài),例如其激活時(shí)間、是否在啟動(dòng)時(shí)激活,以及擴(kuò)展編輯器中新引入的 運(yùn)行時(shí)狀態(tài) 選項(xiàng)卡中是否生成了任何警告或錯(cuò)誤。當(dāng)然,你也可以懸停在插件試圖上看到部分的運(yùn)行狀態(tài)信息。
主題:GitHub Light
插件面板的詳細(xì)信息標(biāo)簽頁(yè)現(xiàn)在會(huì)顯示分類(lèi)信息,資源鏈接,和諸如插件發(fā)布時(shí)間和更新時(shí)間的其他信息。選擇某個(gè)分類(lèi)會(huì)顯示當(dāng)前分類(lèi)下的所有插件。
主題:GitHub Light
GitHub Light:
https://marketplace.visualstudio.com/items?itemName=GitHub.github-vscode-theme
設(shè)置編輯器:
設(shè)置編輯器現(xiàn)在支持對(duì)象驗(yàn)證功能。驗(yàn)證會(huì)涵蓋直接編輯 JSON 文件時(shí)可能引入的類(lèi)型錯(cuò)誤。
非編輯模式下,數(shù)組設(shè)置現(xiàn)在具有了拖放功能的支持。
此外,將 uniqueItems 屬性設(shè)置為 true 的枚舉數(shù)組設(shè)置現(xiàn)在僅顯示剩余選項(xiàng),而不是下拉列表中的所有選項(xiàng)。
設(shè)置編輯器現(xiàn)在還支持多行字符串設(shè)置,其中值呈現(xiàn)在多行文本區(qū)域而不是單行輸入框中:
擴(kuò)展的主題自定義語(yǔ)法:
顏色自定義設(shè)置允許用戶(hù)自定義當(dāng)前主題的顏色:
workbench.colorCustomizations
editor.tokenColorCustomizations
editor.semanticTokenColorCustomizations
以下語(yǔ)法可以用來(lái)一次自定義多個(gè)主題的顏色:
您可以列出多個(gè)主題,或者,在名稱(chēng)的開(kāi)頭或者結(jié)尾使用 * 通配符來(lái)選取多個(gè)主題。
Jupyter 筆記本文件的支持:
本月,我們把支援 *.ipynb 文件的代碼從 Jupyter 筆記本 插件吸收為了內(nèi)建插件。這意味著你現(xiàn)在可以在一個(gè)全新安裝的 VS Code 環(huán)境中得到 Jupyter 筆記本的原生支持。你甚至都不用安裝 Jupyter 的插件。需要注意的是,如果你想要執(zhí)行 ipywidgets 或者其他復(fù)雜渲染類(lèi)型的代碼單元或者查看運(yùn)行結(jié)果時(shí),你依然需要完整安裝 Jupyter 插件。
Jupyter 筆記本:
https://marketplace.visualstudio.com/items?itemName=ms-toolsai.jupyter
筆記本布局的改進(jìn):
我們?cè)诒敬蔚袑?duì)筆記本布局進(jìn)行了一些改進(jìn):
我們現(xiàn)在將會(huì)在折疊時(shí)渲染代碼單元的第一行。
當(dāng)窗口寬度不足以呈現(xiàn)所有主要操作時(shí),筆記本編輯器工具欄上的操作將移至溢出區(qū)。
notebook.undoRedoPerCell 的默認(rèn)值現(xiàn)在更改為 true。
我們還更新了代碼單元格的默認(rèn)樣式,顯示背景顏色以幫助區(qū)分單元格。主題可以使用 notebook.cellEditorBackground 來(lái)自定義這個(gè)顏色。
最后,您現(xiàn)在可以使用 notebook.globalToolbarShowLabel 設(shè)置在筆記本工具欄上切換文本標(biāo)簽:
“復(fù)制相對(duì)路徑”配置路徑分隔符:
在調(diào)用“復(fù)制相關(guān)路徑”操作時(shí),新設(shè)置 explorer.copyRelativePathSeparator 允許顯式設(shè)置使用路徑分隔符。以下為可用選項(xiàng):
Auto(默認(rèn)) - 使用操作系統(tǒng)特定的路徑分隔符
/- 使用斜線作為路徑分隔符
\\ - 使用反斜杠作為路徑分隔符
跨編輯器組共享視圖狀態(tài):
添加了一個(gè)新設(shè)置 workbench.editor.sharedViewState 以配置編輯器視圖狀態(tài)(例如,編輯器中的滾動(dòng)位置)在編輯器組之間共享的方式。
默認(rèn)情況下,此設(shè)置被禁用以保留當(dāng)前設(shè)置。如果您在靠邊打開(kāi)編輯器并稍后關(guān)閉該編輯器組,只是為了再次打開(kāi)編輯器到靠邊,則不會(huì)恢復(fù)視圖狀態(tài),因?yàn)槟诖蜷_(kāi)一個(gè)新的編輯器組。但是,當(dāng)您啟用此設(shè)置時(shí),除非為編輯器組找到更具體的視圖狀態(tài),否則將在所有編輯器組中保留并使用最新的編輯器視圖狀態(tài)。
編輯器
在不同的折疊范圍之間切換:
以下的新指令可以將光標(biāo)位置設(shè)置為相應(yīng)的折疊:
轉(zhuǎn)到下一個(gè)折疊 (editor.gotoNextFold)
轉(zhuǎn)到上一個(gè)折疊 (editor.gotoPreviousFold)
轉(zhuǎn)到父級(jí)折疊 (editor.gotoParentFold)
這些命令目前沒(méi)有默認(rèn)鍵綁定,但是你可以通過(guò)以下方法添加自己的鍵盤(pán)快捷鍵:
** 首選項(xiàng):打開(kāi)鍵盤(pán)快捷鍵 ** (kb (workbench.action.openGlobalKeybindings))
自動(dòng)折疊 Import 語(yǔ)句:
通過(guò)設(shè)置 editor.foldingImportsByDefault 來(lái)自動(dòng)折疊 Import 語(yǔ)句。
當(dāng)文件被打開(kāi)后,折疊的狀態(tài)將會(huì)被保存。
TypeScript,JavaScript,Java,C#,C++ 和其他具備折疊范圍提供程序的編程語(yǔ)言都支持這項(xiàng)新功能。注:折疊范圍提供程序特指將 Import 語(yǔ)句標(biāo)注為 FoldingRangeKind.Imports 的提供程序。
選擇項(xiàng)的種子搜索字符串:
Find Widget 設(shè)置 editor.find.seedSearchStringFromSelection 已支持從非空選擇中播種搜索字符串。默認(rèn)情況下,當(dāng)顯示小部件時(shí),編輯器將使用以下兩項(xiàng)作為搜索關(guān)鍵詞:1. 選擇項(xiàng)。2. 空選擇周?chē)膯卧~。
內(nèi)聯(lián)建議的改進(jìn):
我們改變了內(nèi)聯(lián)建議的呈現(xiàn)方式。這不僅修復(fù)了許多錯(cuò)誤,而且還使自動(dòng)換行識(shí)別了內(nèi)聯(lián)建議。
此外,現(xiàn)在支持了非尾隨位置的多行內(nèi)聯(lián)建議。
嵌入提示的改進(jìn):
我們還改變了嵌入提示的呈現(xiàn)方式。通過(guò)使用與內(nèi)聯(lián)建議相同的機(jī)制,嵌入提示現(xiàn)在也被用于自動(dòng)換行。
這種機(jī)制還實(shí)現(xiàn)了嵌入提示周?chē)膯为?dú)光標(biāo)???。
終端
在窗口之間拖拽終端:
現(xiàn)在,您可以任意地從標(biāo)簽頁(yè)或一個(gè)窗口的編輯區(qū)域,拖拽終端到標(biāo)簽頁(yè),編輯區(qū)域,或者另一個(gè)窗口的面板。
子進(jìn)程跟蹤和關(guān)閉警告:
當(dāng)用戶(hù)嘗試關(guān)閉一個(gè)有子進(jìn)程的終端時(shí),terminal.integrated.confirmOnExit 和新的設(shè)置 terminal.integrated.confirmOnKill 會(huì)警告用戶(hù)。默認(rèn)情況下,這僅影響編輯器區(qū)域中的終端,但用戶(hù)可以配置為顯示所有的(面板區(qū)域中)終端警告。
設(shè)置所提供的終端配置文件為默認(rèn):
現(xiàn)在用戶(hù)可以將插件所提供的終端配置文件設(shè)為默認(rèn)的配置文件。
下劃線和刪除線支持:
終端現(xiàn)在支持下劃線和刪除線屬性。例如,用可以可以配置 git 來(lái)使用這些新屬性:
主題: Sapphire
上述的例子使用了下列 .gitconfig 參數(shù):
配置 git:
https://git-scm.com/docs/git-config#Documentation/git-config.txt-color
Sapphire:
https://marketplace.visualstudio.com/items?itemName=Tyriar.theme-sapphire
編輯區(qū)域靠邊創(chuàng)建終端:
現(xiàn)在,用戶(hù)可以在活動(dòng)編輯區(qū)域使用新指令 workbench.action.createTerminalEditorSide 來(lái)創(chuàng)建一個(gè)靠邊新的終端。
活動(dòng)終端標(biāo)簽頁(yè)指示器:
主題現(xiàn)在可以使用主題鍵 terminal.tab.activeBorder 設(shè)置垂直線的顏色,用以指示活動(dòng)的終端選項(xiàng)卡。
如果沒(méi)有設(shè)置 terminal.tab.activeBorder,顏色將回退到 tab.activeBorder。
禁用終端標(biāo)簽頁(yè)動(dòng)畫(huà)圖標(biāo):
terminal.integrated.tabs.enableAnimation 會(huì)禁用終端標(biāo)簽頁(yè)動(dòng)畫(huà)圖標(biāo)。如果是針對(duì)任務(wù)而不是微調(diào)器,播放按鈕會(huì)被使用:
調(diào)試
改進(jìn)了編輯器標(biāo)題區(qū)域內(nèi)的 播放/調(diào)試 按鍵:
在 2 月的版本中,我們引入了一個(gè)下拉按鈕,用以在編輯器標(biāo)題區(qū)域的中央(緊湊)位置對(duì)運(yùn)行和調(diào)試命令進(jìn)行分組。根據(jù)一些用戶(hù)反饋,我們嘗試通過(guò)記憶上次執(zhí)行的操作來(lái)改進(jìn)下拉按鈕。下拉按鈕現(xiàn)在將會(huì)擁有兩個(gè)單擊區(qū)域,一個(gè)用于默認(rèn)動(dòng)作(左),另一個(gè)用于下拉(右),其中,所選運(yùn)行操作將被記憶并存為新的默認(rèn)值。
請(qǐng)注意:
如果只有一個(gè)運(yùn)行或調(diào)試操作,則會(huì)省略下拉菜單。
如果有多個(gè)運(yùn)行或調(diào)試操作,所有操作都會(huì)出現(xiàn)在下拉菜單中,并且默認(rèn)操作設(shè)置為下拉菜單中的第一個(gè)操作(前提是沒(méi)有記住的操作)。
VS Code 重新啟動(dòng)時(shí),會(huì)為特定工作區(qū)保留默認(rèn)操作;它不會(huì)為編輯器內(nèi)容保留。
2 月的版本:
https://code.visualstudio.com/updates/v1_54#_limits-for-editor-title-menu-and-run-submenu
對(duì)擴(kuò)展插件的貢獻(xiàn)
實(shí)時(shí)預(yù)覽:
實(shí)時(shí)預(yù)覽擴(kuò)展插件本月出現(xiàn)了一些令人興奮的新功能!這包括:
內(nèi)建 JavaScript 調(diào)試器兼容性的外部預(yù)覽。
請(qǐng)使用 `Live Preview: Show Debug Preview` 來(lái)嘗鮮使用!
對(duì)嵌入式瀏覽器的改進(jìn),例如“在頁(yè)面中查找”的支持和快速訪問(wèn) `webvivew` DevTools。
文件系統(tǒng)監(jiān)視自動(dòng)生成文件。
期待更多!
要查看有關(guān)本月進(jìn)度的更多詳細(xì)信息,請(qǐng)參閱擴(kuò)展的發(fā)行說(shuō)明。
主題:GitHub Dark
實(shí)時(shí)預(yù)覽擴(kuò)展插件:
https://marketplace.visualstudio.com/items?itemName=ms-vscode.live-server
發(fā)行說(shuō)明:
https://github.com/microsoft/vscode-livepreview/blob/main/release_notes/july-2021.md
GitHub Dark:
https://marketplace.visualstudio.com/items?itemName=GitHub.github-vscode-theme
GitHub 拉取請(qǐng)求和問(wèn)題:
GitHub 拉取請(qǐng)求和問(wèn)題 擴(kuò)展插件的工作仍在繼續(xù),它允許您響應(yīng)、創(chuàng)建和管理拉取請(qǐng)求和問(wèn)題。本月重點(diǎn):
對(duì)問(wèn)題的“開(kāi)始工作”進(jìn)行了擴(kuò)展,讓您可以處理當(dāng)前打開(kāi)的存儲(chǔ)庫(kù)之外的問(wèn)題。
要了解所有新功能和更新,您可以查看 0.29.0 版擴(kuò)展的完整變更日志。
GitHub 拉取請(qǐng)求和問(wèn)題:
https://marketplace.visualstudio.com/items?itemName=GitHub.vscode-pull-request-github
0.29.0 版擴(kuò)展的完整變更日志:
https://github.com/microsoft/vscode-pull-request-github/blob/main/CHANGELOG.md#0290
Jupyter:
Jupyter 擴(kuò)展插件的工作仍在繼續(xù)。要了解所有的新功能和更新,您可以查看 7 月版本的完整更新日志。
Jupyter:
https://marketplace.visualstudio.com/items?itemName=ms-toolsai.jupyter
7 月版本的完整更新日志:
https://github.com/microsoft/vscode-jupyter/blob/main/CHANGELOG.md#202189-3-august-2021
互動(dòng)窗口:
Jupyter 交互窗口提供了另一種構(gòu)建和使用 Jupyter 筆記本的方法,使用文本文件而不是筆記本界面。上個(gè)月,我們預(yù)覽了 Jupyter 交互式窗口的升級(jí)版本,現(xiàn)在我們提供了具有更深入的工作臺(tái)集成,包括對(duì)主題的支持、自定義鍵綁定、片段、與擴(kuò)展的兼容性等!非常感謝我們的用戶(hù)通過(guò) GitHub 問(wèn)題提供有關(guān)預(yù)覽體驗(yàn)版的反饋。內(nèi)置交互窗口現(xiàn)在已經(jīng)成為了 1.59 版本中的默認(rèn)界面。之前的界面在 "jupyter.enableNativeInteractiveWindow": false 后將仍然可用,并會(huì)在即將發(fā)布的版本中刪除。我們期待您的反饋!
您的反饋:
https://github.com/microsoft/vscode-jupyter/issues
逐行運(yùn)行:
我們一直致力于支持 Jupyter 筆記本中的“逐行運(yùn)行”功能。此功能本質(zhì)上是一種簡(jiǎn)化的調(diào)試模式,可讓您逐行執(zhí)行單元代碼,而無(wú)需任何復(fù)雜的調(diào)試 UI。這依然是實(shí)驗(yàn)性的,您可以通過(guò)設(shè)置 "jupyter.experimental.debugging": true,在您選擇的內(nèi)核中安裝 ipykernel 的第 6 版,然后選擇單元格工具欄中的“按行運(yùn)行”按鈕來(lái)嘗鮮一下。
遠(yuǎn)程容器 devcontainer CLI:
遠(yuǎn)程 - 容器 擴(kuò)展適用于在 VS Code 中使用 Docker 容器。它現(xiàn)在包含 devcontainer 命令行界面,讓您可以輕松地打開(kāi)容器中的文件夾 (devcontainer open) 或者構(gòu)建開(kāi)發(fā)容器映像 (devcontainer build)。
您可以在 遠(yuǎn)程開(kāi)發(fā) 發(fā)行說(shuō)明中了解新的功能和錯(cuò)誤修復(fù)。
遠(yuǎn)程 - 容器:
https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers
遠(yuǎn)程開(kāi)發(fā):
https://github.com/microsoft/vscode-docs/blob/main/remote-release-notes/v1_59.md
預(yù)覽功能
無(wú)標(biāo)題文件的自動(dòng)語(yǔ)言檢測(cè):
我們很高興地宣布無(wú)標(biāo)題文件的自動(dòng)語(yǔ)言檢測(cè)的初始預(yù)覽版,它使用機(jī)器學(xué)習(xí)來(lái)檢測(cè)您正在編碼的語(yǔ)言并自動(dòng)設(shè)置無(wú)標(biāo)題文件的語(yǔ)言模式。此功能利用了開(kāi)源 ML 庫(kù) Tensorflow.js 和 GitHub 用戶(hù) @yoeo 來(lái)自 Guesslang 的 ML 模型。
在此版本中,該功能將默認(rèn)關(guān)閉,但我們計(jì)劃將其設(shè)為下一次迭代版本的默認(rèn)設(shè)置。如果您想要啟用它,請(qǐng)應(yīng)用以下設(shè)置:
```json "workbench.editor.untitled.experimentalLanguageDetection": true ``` "workbench.editor.untitled.experimentalLanguageDetection": true
舉個(gè)例子,您可以打開(kāi)一個(gè)無(wú)標(biāo)題文件并將一段代碼粘貼到您的編輯器中。
以下是一段自動(dòng)識(shí)別的 Python 代碼段:
主題:Panda
此外,您可以通過(guò)打開(kāi)語(yǔ)言選擇器查看正在檢測(cè)的語(yǔ)言。
主題:Panda
注意:如果語(yǔ)言檢測(cè)結(jié)果不夠確信,那么您將保持當(dāng)前的語(yǔ)言模式,語(yǔ)言選擇器中不會(huì)顯示任何結(jié)果,直到語(yǔ)言檢測(cè)結(jié)果更有把握。
該設(shè)置還允許您提供語(yǔ)言覆蓋,可用于指定您不想自動(dòng)關(guān)閉的語(yǔ)言模式。
以下的例子展示了如何關(guān)閉 .md 文件自動(dòng)檢測(cè):
在您編輯無(wú)標(biāo)題的 Markdown 文件時(shí),自動(dòng)語(yǔ)言檢測(cè)功能 * 不會(huì) * 運(yùn)行。但是,如果您正在修改任何其他類(lèi)型的無(wú)標(biāo)題文件,自動(dòng)語(yǔ)言檢測(cè)功能 * 將 * 會(huì)檢測(cè)這些文件的內(nèi)容。
我們已經(jīng)將與 ML 模型交互的代碼分離并合并到它自己的代碼庫(kù)中,作為 npm 包發(fā)布,該包存在于 vscode-languagedetection 存儲(chǔ)庫(kù)中。
請(qǐng)讓我們知道無(wú)標(biāo)題文件的自動(dòng)語(yǔ)言檢測(cè)功能是否幫助到了您的日常工作!
Tensorflow.js:
https://www.tensorflow.org/js/
@yoeo:
https://github.com/yoeo
Guesslang:
https://github.com/yoeo/guesslang
Panda:
https://marketplace.visualstudio.com/items?itemName=tinkertrain.theme-panda
vscode-languagedetection:
https://github.com/Microsoft/vscode-languagedetection
TypeScript 4.4:
此版本包括對(duì) TypeScript 4.4 版本的支持。您可以在 TypeScript 博客上閱讀有關(guān) TypeScript 4.4 中新語(yǔ)言功能和改進(jìn)的更多信息。一些工具亮點(diǎn):
在 JavaScript 和 TypeScript 文件中嵌入?yún)?shù)名稱(chēng)和類(lèi)型的提示。
純 JS 文件中的基本拼寫(xiě)建議。只有當(dāng)我們對(duì)錯(cuò)誤和修復(fù)有把握時(shí)才會(huì)顯示這些。
要開(kāi)始使用 TypeScript 4.4 內(nèi)測(cè)版本,請(qǐng)安裝 TypeScript Nightly 擴(kuò)展。
如果您在使用 TypeScript 4.4 時(shí)遇到任何錯(cuò)誤,請(qǐng)分享您的反饋并告訴我們。
TypeScript 博客:
https://devblogs.microsoft.com/typescript/announcing-typescript-4-4-beta/
TypeScript Nightly 擴(kuò)展:
https://marketplace.visualstudio.com/items?itemName=ms-vscode.vscode-typescript-next
反匯編試圖:
感謝微軟 C++ 團(tuán)隊(duì)貢獻(xiàn)的大量代碼,我們很高興在這個(gè)里程碑版本中包括了 ** 反匯編視圖 ** 的預(yù)覽功能。
反匯編視圖可以從編輯器的上下文菜單中打開(kāi),用以顯示活動(dòng)堆棧幀的反匯編源碼,它支持單步執(zhí)行匯編指令,并且可以在單個(gè)指令上設(shè)置斷點(diǎn)。
反匯編視圖僅在活動(dòng)的調(diào)試會(huì)話(huà)中可用。注意,底層調(diào)試擴(kuò)展插件也需要有相應(yīng)的支持。
目前,只有 C++ 和 Mock Debug 可以支持反匯編視圖。
從技術(shù)角度而言,VS Code 的反匯編視圖實(shí)現(xiàn)了 DAP (Debug Adapter Protocol) 協(xié)議另外四個(gè)功能:
disassembly 請(qǐng)求,用以提供基于內(nèi)存位置的反匯編源碼。
堆棧幀上的 instructionPointerReference 屬性。
步進(jìn)請(qǐng)求的 granularity 屬性。
指令斷點(diǎn)和 setInstructionBreakpoints 請(qǐng)求。
貢獻(xiàn)的大量代碼:
https://github.com/microsoft/vscode/pull/125737
C++:
https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools
Mock Debug:
https://marketplace.visualstudio.com/items?itemName=andreweinand.mock-debug
擴(kuò)展創(chuàng)作
測(cè)試 API:
去年秋天,我們開(kāi)始在 VS Code 中添加對(duì)運(yùn)行測(cè)試的原生支持,本月,第一組與測(cè)試相關(guān)的 API 已經(jīng)交付。與之前的擴(kuò)展插件相比,這些 API 提供了更大的靈活性、更好的性能和更豐富的用戶(hù)體驗(yàn)。查看有關(guān)編寫(xiě)測(cè)試擴(kuò)展的指南以深入了解。
主題:
測(cè)試資源管理器 UI 插件的現(xiàn)有用戶(hù)可以通過(guò)將 testExplorer.useNativeTesting 設(shè)置為 true 來(lái)獲得原生體驗(yàn)。但是,該轉(zhuǎn)換是基于測(cè)試資源管理器 UI 擴(kuò)展現(xiàn)有 API,因此不包括諸如豐富差異之類(lèi)的一些功能。
Java 擴(kuò)展包中包含的 Microsoft Java 測(cè)試運(yùn)行器是最早采用測(cè)試 API 的擴(kuò)展之一 。
編寫(xiě)測(cè)試擴(kuò)展的指南:
https://code.visualstudio.com/api/extension-guides/testing
測(cè)試資源管理器 UI:
https://marketplace.visualstudio.com/items?itemName=hbenl.vscode-test-explorer
Java 擴(kuò)展包:
https://marketplace.visualstudio.com/items?itemName=vscjava.vscode-java-pack
Microsoft Java 測(cè)試運(yùn)行器:
https://marketplace.visualstudio.com/items?itemName=vscjava.vscode-java-test
新建文件菜單的貢獻(xiàn)點(diǎn):
有助于創(chuàng)建新文件編輯器的擴(kuò)展(例如筆記本或自定義編輯器)現(xiàn)在可以向新的 文件/新文件 菜單貢獻(xiàn)點(diǎn)貢獻(xiàn)命令。可以從歡迎頁(yè)面或文件菜單中的“新建文件...”項(xiàng)目訪問(wèn)此菜單。
豐富狀態(tài)欄懸停:
狀態(tài)欄項(xiàng)目現(xiàn)在支持豐富的懸停,包括鏈接和圖標(biāo) StatusBarItem.tooltip: string | IMarkdownString
* If `MarkdownString.supportThemeIcons` is true, you can use icons with the `$(iconName)` syntax.
* If the `MarkdownString` is trusted, you can also add command links. Syntax: `([test](command:vscode.newWindow))`
如果 MarkdownString.supportThemeIcons 設(shè)置為 true,您可以使用帶有 $(iconName) 語(yǔ)法的圖標(biāo)
如果 MarkdownString 受信任,還可以添加命令鏈接。語(yǔ)法:([test](command:vscode.newWindow))
狀態(tài)欄警告顏色:
表示警告的狀態(tài)欄項(xiàng)目可以使用新添加的顏色 statusBarItem.warningBackground 和 statusBarItem.warningForeground。
沒(méi)有 additionalProperties 的對(duì)象設(shè)置:
對(duì)象設(shè)置必須將 additionalProperties 設(shè)置為 false,以便在設(shè)置編輯器中支持對(duì)象。否則,設(shè)置編輯器會(huì)解讀為復(fù)雜設(shè)置(不規(guī)律的設(shè)置),并將用戶(hù)定向到設(shè)置 JSON 文件。
多行字符串設(shè)置:
要在設(shè)置編輯器中添加多行字符串設(shè)置的支持,請(qǐng)將 "editPresentation": "multilineText" 作為鍵值配對(duì)添加到字符串設(shè)置中。將字符串設(shè)置更改為多行設(shè)置將導(dǎo)致設(shè)置編輯器在多行文本區(qū)域(而非單行輸入框中)呈現(xiàn)設(shè)置值。
更新的 Codicons:
我們已經(jīng)添加了下列新圖標(biāo)到 codicon 庫(kù)中:
azure
compass-active
compass-active
compass-dot
compass
debug-all
debug-coverage
git-pull-request-closed
git-pull-request-draft
issue-draft
layers-active
layers-dot
layers
codicon:
https://code.visualstudio.com/api/references/icons-in-labels
文本文檔更改原因:
當(dāng)事件 workspace.onDidChangeTextDocument 被觸發(fā)時(shí),事件對(duì)象的新屬性 reason 會(huì)告知用戶(hù)文本更改的原因是撤消或重做操作。
語(yǔ)言服務(wù)器協(xié)議:
語(yǔ)言服務(wù)器協(xié)議的下一個(gè)新版本以及對(duì)應(yīng)的 npm 模塊已經(jīng)發(fā)布。3.17 版本包含了一個(gè)關(guān)于完成項(xiàng)標(biāo)簽詳細(xì)信息的新提案,該提案符合 VS Code 本身的最新變化。
語(yǔ)言服務(wù)器協(xié)議:
https://microsoft.github.io/language-server-protocol/
3.17 版本:
https://microsoft.github.io/language-server-protocol/specifications/specification-3-17/
調(diào)試適配器協(xié)議
最終確定“writeMemory”請(qǐng)求和“memory”事件提案:
writeMemory 請(qǐng)求已經(jīng)完成,現(xiàn)在可以在 Debug Adapter Protocol 的 1.48 版和與之相對(duì)應(yīng)的 npm 模塊中使用。如果調(diào)試適配器具有 supportsWriteMemoryRequest 功能,客戶(hù)端可以使用 writeMemory 請(qǐng)求將字節(jié)寫(xiě)入給定位置的內(nèi)存。
memory 事件有一個(gè)新的提案,將在下一個(gè)里程碑中添加到 DAP。
Debug Adapter Protocol:
https://microsoft.github.io/debug-adapter-protocol/
新的提案:
https://github.com/microsoft/debug-adapter-protocol/issues/194#issuecomment-886687894
提議的擴(kuò)展插件 API
每個(gè)里程碑版本都附有新提議的 API,擴(kuò)展插件的作者們可以試用它們。我們期待您的反饋。如果您想要嘗鮮提議的新 API,請(qǐng)完成以下步驟:
您必須使用 Insiders 版本,因?yàn)樘嶙h的 API 經(jīng)常被修改
你必須在你的擴(kuò)展的 package.json 文件中加入這一行:"enableProposedApi": true
將最新版本的 vscode.proposed.d.ts 文件復(fù)制到項(xiàng)目的源位置
您將不能使用建議 API 發(fā)布擴(kuò)展插件。因?yàn)樾碌陌姹究赡軙?huì)有重大變化,我們需要保證現(xiàn)有的擴(kuò)展插件可以被繼續(xù)使用。
vscode.proposed.d.ts:
https://github.com/microsoft/vscode/blob/main/src/vs/vscode.proposed.d.ts
isDefault 用于 TaskGroup:
group 屬性存在于 tasks.json 文件中定義的任務(wù)上,也通過(guò)任務(wù) API 公開(kāi)。group 屬性有一個(gè) isDefault 屬性,該屬性直到現(xiàn)在在 API 中都不可用。該提案將 isDefault 屬性公開(kāi)為 TaskGroup 上的只讀屬性,以便擴(kuò)展可以讀取哪個(gè)任務(wù)是組的默認(rèn)任務(wù),但不能通過(guò)為組設(shè)置默認(rèn)值來(lái)覆蓋用戶(hù)配置。
用于 AuthenticationGetSessionOptions 的 forceRecreate
到目前為止,用于獲取身份驗(yàn)證會(huì)話(huà)對(duì)象的 getSession API 從來(lái)沒(méi)有能力要求用戶(hù)需要再次登錄。然而這對(duì)于使用 SAML/單點(diǎn)登錄 (SSO) 體驗(yàn)的 GitHub 等身份驗(yàn)證服務(wù)是必需的,其中訪問(wèn)令牌最終會(huì)在 SSO 會(huì)話(huà)到期時(shí)失去對(duì)資源的訪問(wèn)權(quán)限。該提案為 AuthenticationGetSessionOptions 添加了另一個(gè)名為 forceRecreate 的屬性,允許您要求用戶(hù)再次登錄。向用戶(hù)顯示類(lèi)似于您指定 createIfNone 時(shí)顯示的模式體驗(yàn)。
工程
基于 iframe 的 webviews 現(xiàn)在在桌面上隨處可見(jiàn):
本月我們完成了從 Electron 的 webview 標(biāo)簽元素過(guò)渡到基于普通 <iframe> 元素的 webview 。這更好地協(xié)調(diào)了 VS Code 的 webviews 跨桌面和 web 的實(shí)現(xiàn),也讓我們刪除了很多現(xiàn)在冗余的代碼。
Electron 的 webview 標(biāo)簽:
https://www.electronjs.org/docs/api/webview-tag
Electron 13 更新:
在這個(gè)里程碑版本中,我們完成了將 Electron 13 捆綁到 VS Code 的實(shí)驗(yàn),這要感謝所有參與 Insiders 測(cè)試和自托管的參與者。這是 Chromium 91.0.4472.124 附帶的主要 Electron 版本。此版本的 Node.js 版本沒(méi)有變化,它仍然是 v14.16.0。
Electron 沙盒支持的進(jìn)展:
隨著我們準(zhǔn)備讓 VS Code 工作臺(tái)啟用 Electron 的沙盒功能,我們希望在 linux 上啟用混合沙盒模式,且不在分布式軟件包 deb、rpm、snap、tar 存檔中捆綁 cli 參數(shù) --no-sandbox。Chromium 在 linux 上有一個(gè)多層沙盒模型。如果 Chromium 無(wú)法將命名空間沙盒用于第 1 層,它將嘗試通過(guò)幫助程序 chrome-sandbox 來(lái)使用 setuid 沙盒。要使 setuid 二進(jìn)制文件工作,它需要滿(mǎn)足以下條件:
沙箱二進(jìn)制文件必須可由 Chromium 進(jìn)程執(zhí)行
它必須是 SUID 并且可以被其他人執(zhí)行
我們能夠?yàn)?deb 和 rpm 包保留這些條件。目前無(wú)法獲得 snap 的這些權(quán)限,我們有以下跟蹤問(wèn)題 https://github.com/microsoft/vscode/issues/127140。
至于其他使用 tar 存檔的應(yīng)用程序,如果應(yīng)用程序無(wú)法使用命名空間沙盒(這在容器內(nèi)運(yùn)行時(shí)可能會(huì)發(fā)生)它將失敗并顯示以下錯(cuò)誤
FATAL:setuid_sandbox_host.cc (158)] 找到了 SUID 沙盒助手二進(jìn)制文件,但沒(méi)有正確配置。而不是在沒(méi)有沙盒的情況下運(yùn)行,我現(xiàn)在正在中止程序。您需要確保 chrome-sandbox 由 root 用戶(hù)擁有并且模式為 4755。
如果發(fā)生這種情況,您可以使用以下兩個(gè)選項(xiàng)之一來(lái)使其正常工作:
修復(fù) setuid helper 權(quán)限問(wèn)題
使用 --no-sandbox 標(biāo)志運(yùn)行
沙盒:
https://www.electronjs.org/docs/tutorial/sandbox
linux 上有一個(gè)多層沙盒模型:
https://chromium.googlesource.com/chromium/src/+/HEAD/docs/linux/sandboxing.md
setuid 沙盒:
https://chromium.googlesource.com/chromium/src/+/HEAD/docs/linux/suid_sandbox.md
煙霧測(cè)試的一些改進(jìn):
我們一直為每個(gè)構(gòu)建版本運(yùn)行一套完整的煙霧測(cè)試。我們測(cè)試打開(kāi) VSCode(桌面和 Web)并執(zhí)行一堆 UI 元素以確保正確的功能。這個(gè)里程碑版本中我們?cè)谶@個(gè)基礎(chǔ)上投入了更多資源,從而使我們能夠從最終計(jì)劃中移除手動(dòng)的煙霧測(cè)試。
煙霧測(cè)試現(xiàn)在可以在所有平臺(tái)(macOS、Linux 和 Windows)上運(yùn)行。最重要的是,我們已經(jīng)實(shí)現(xiàn)在每次代碼提交時(shí)自動(dòng)運(yùn)行煙霧測(cè)試,從而我們可以及時(shí)地發(fā)現(xiàn) VS Code 新版本可能引入的軟件錯(cuò)誤。
最后,感謝我們用于自動(dòng)化 Web 冒煙測(cè)試的 Playwright 庫(kù),我們采用了他們的跟蹤工具,這使得我們可以查看并且重復(fù)運(yùn)行失敗的煙霧測(cè)試。
Playwright:
https://github.com/microsoft/playwright
跟蹤工具:
https://playwright.dev/docs/next/trace-viewer/
學(xué)習(xí)資料
http://aka.ms/vscodelearn
http://aka.ms/vscodelearn:
https://docs.microsoft.com/zh-cn/users/nathanxue/collections/3jxsyzg0epdj3?WT.mc_id=VSCode_457601
重大修復(fù)
[26425](https://github.com/microsoft/vscode/issues/26425):沒(méi)有更改時(shí)不應(yīng)顯示“打開(kāi)更改”按鈕
[100815](https://github.com/microsoft/vscode/issues/100815):外部終端在連接到遠(yuǎn)程 WSL 時(shí)中斷
[106981](https://github.com/microsoft/vscode/issues/106981):當(dāng)窗口縮放設(shè)置為 -1 時(shí),終端光標(biāo)重影
[127959](https://github.com/microsoft/vscode/issues/127959):調(diào)試程序暫停時(shí)將打開(kāi)調(diào)試窗格
[129059](https://github.com/microsoft/vscode/issues/129059):設(shè)置編輯器中的對(duì)象小組件不呈現(xiàn)說(shuō)明
[129070](https://github.com/microsoft/vscode/issues/129070):無(wú)法通過(guò)僅按“確定”按鈕更正下拉列表設(shè)置值
[129415](https://github.com/microsoft/vscode/issues/129415):無(wú)法在單一文件模式下運(yùn)行用戶(hù)任務(wù)
廣告聲明:文內(nèi)含有的對(duì)外跳轉(zhuǎn)鏈接(包括不限于超鏈接、二維碼、口令等形式),用于傳遞更多信息,節(jié)省甄選時(shí)間,結(jié)果僅供參考,IT之家所有文章均包含本聲明。