歡迎使用 2021 年 7 月版的 Visual Studio Code。咱們但願您會喜歡此版本中的許多更新與改進,如下是其中的一些高亮:java
若是您想在線閱讀這些發行說明,請訪問 code.visualstudio.com上的更新。linux
更多關於VS Code 的資料請訪問微軟 MS Learn 平臺:http://aka.ms/vscodelearngit
內部搶先版 :想更先一步體驗新功能嗎?您能夠下載每晚的 Insiders 版本,並在最新更新可用時當即試用。github
改進了調整大小後的擴展視圖。在下面的動圖中,你能夠看到默認寬度的擴展視圖顯示了全部詳細信息(之前未顯示圖標、評分和安裝計數)。當它縮小時,會顯示較小的擴展圖標,當其寬度進一步減少時,圖標和評分將被隱藏。
web
擴展視圖如今會顯示自定義懸停信息。這個豐富的懸停包括擴展的完整描述和其餘有用的信息,例如爲何禁用或推薦擴展。chrome
您如今能夠在插件面板中看到更多的插件運行狀態,例如其激活時間、是否在啓動時激活,以及擴展編輯器中新引入的 運行時狀態 選項卡中是否生成了任何警告或錯誤。固然,你也能夠懸停在插件試圖上看到部分的運行狀態信息。
插件面板的詳細信息標籤頁如今會顯示分類信息,資源連接,和諸如插件發佈時間和更新時間的其餘信息。選擇某個分類會顯示當前分類下的全部插件。
typescript
設置編輯器如今支持對象驗證功能。驗證會涵蓋直接編輯 JSON 文件時可能引入的類型錯誤。
npm
非編輯模式下,數組設置如今具備了拖放功能的支持。編程
此外,將 uniqueItems 屬性設置爲 true 的枚舉數組設置如今僅顯示剩餘選項,而不是下拉列表中的全部選項。
json
設置編輯器如今還支持多行字符串設置,其中值呈如今多行文本區域而不是單行輸入框中:
顏色自定義設置容許用戶自定義當前主題的顏色:
- workbench.colorCustomizations
- editor.tokenColorCustomizations
- editor.semanticTokenColorCustomizations
如下語法能夠用來一次自定義多個主題的顏色:
"workbench.colorCustomizations": { "[Abyss][Red]": { "activityBar.background": "#ff0000" }, "[Monokai*]": { "activityBar.background": "#ff0000" } },
您能夠列出多個主題,或者,在名稱的開頭或者結尾使用*
通配符來選取多個主題。
本月,咱們把支援 *.ipynb
文件的代碼從 Jupyter 筆記本 插件吸取爲了內建插件。這意味着你如今能夠在一個全新安裝的 VS Code 環境中獲得 Jupyter 筆記本的原生支持。你甚至都不用安裝 Jupyter 的插件。須要注意的是,若是你想要執行 ipywidgets 或者其餘複雜渲染類型的代碼單元或者查看運行結果時,你依然須要完整安裝 Jupyter 插件。
咱們在本次迭代中對筆記本佈局進行了一些改進:
notebook.undoRedoPerCell
的默認值如今更改成 true
。notebook.globalToolbarShowLabel
設置在筆記本工具欄上切換文本標籤:在調用 "複製相關路徑" 操做時,新設置 explorer.copyRelativePathSeparator 容許顯式設置使用路徑分隔符。如下爲可用選項:
Auto
(默認) - 使用操做系統特定的路徑分隔符/
- 使用斜線做爲路徑分隔符\\
- 使用反斜槓做爲路徑分隔符添加了一個新設置 workbench.editor.sharedViewState
以配置編輯器視圖狀態(例如,編輯器中的滾動位置)在編輯器組之間共享的方式。
默認狀況下,此設置被禁用以保留當前設置。若是您在靠邊打開編輯器並稍後關閉該編輯器組,只是爲了再次打開編輯器到靠邊,則不會恢復視圖狀態,由於您正在打開一個新的編輯器組。可是,當您啓用此設置時,除非爲編輯器組找到更具體的視圖狀態,不然將在全部編輯器組中保留並使用最新的編輯器視圖狀態。
如下的新指令能夠將光標位置設置爲相應的摺疊:
editor.gotoNextFold
)editor.gotoPreviousFold
)editor.gotoParentFold
)這些命令目前沒有默認鍵綁定,可是你能夠經過如下方法添加本身的鍵盤快捷鍵:
首選項:打開鍵盤快捷鍵(kb(workbench.action.openGlobalKeybindings)
)
經過設置 editor.foldingImportsByDefault
來自動摺疊 Import 語句。
當文件被打開後,摺疊的狀態將會被保存。
TypeScript,JavaScript,Java,C#,C++ 和其餘具有摺疊範圍提供程序的編程語言都支持這項新功能。注:摺疊範圍提供程序特指將 Import 語句標註爲 FoldingRangeKind.Imports
的提供程序。
Find Widget 設置 editor.find.seedSearchStringFromSelection
已支持從非空選擇中播種搜索字符串。默認狀況下,當顯示小部件時,編輯器將使用如下兩項做爲搜索關鍵詞:
咱們改變了內聯建議的呈現方式。這不只修復了許多錯誤,並且還使自動換行識別了內聯建議。
此外,如今支持了非尾隨位置的多行內聯建議。
咱們還改變了嵌入提示的呈現方式。經過使用與內聯建議相同的機制,嵌入提示如今也被用於自動換行。
這種機制還實現了嵌入提示周圍的單獨光標停靠。
如今,您能夠任意地從標籤頁或一個窗口的編輯區域,拖拽終端到標籤頁,編輯區域,或者另外一個窗口的面板。
當用戶嘗試關閉一個有子進程的終端時,terminal.integrated.confirmOnExit
和新的設置 terminal.integrated.confirmOnKill
會警告用戶。默認狀況下,這僅影響編輯器區域中的終端,但用戶能夠配置爲顯示全部的(面板區域中)終端警告。
如今用戶能夠將插件所提供的終端配置文件設爲默認的配置文件。
終端如今支持下劃線和刪除線屬性。例如,用能夠能夠配置git來使用這些新屬性:
上述的例子使用了下列 .gitconfig
參數:
[color "status"] added = green bold changed = red bold strike untracked = cyan branch = yellow black bold ul
如今,用戶能夠在活動編輯區域使用新指令workbench.action.createTerminalEditorSide
來建立一個靠邊新的終端。
主題如今可使用主題鍵terminal.tab.activeBorder
設置垂直線的顏色,用以指示活動的終端選項卡。
若是沒有設置 terminal.tab.activeBorder
,顏色將回退到tab.activeBorder
。
terminal.integrated.tabs.enableAnimation
會禁用終端標籤頁動畫圖標。若是是針對任務而不是微調器,播放按鈕會被使用:
在2月的版本中,咱們引入了一個下拉按鈕,用以在編輯器標題區域的中央(緊湊)位置對運行和調試命令進行分組。根據一些用戶反饋,咱們嘗試經過記憶上次執行的操做來改進下拉按鈕。下拉按鈕如今將會擁有兩個單擊區域,一個用於默認動做(左),另外一個用於下拉(右),其中,所選運行操做將被記憶並存爲新的默認值。
請注意:
實時預覽擴展插件本月出現了一些使人興奮的新功能!這包括:
Live Preview: Show Debug Preview
來嚐鮮使用!webvivew
DevTools。要查看有關本月進度的更多詳細信息,請參閱擴展的發行說明。
GitHub 拉取請求和問題 擴展插件的工做仍在繼續,它容許您響應、建立和管理拉取請求和問題。本月重點對問題的 "開始工做" 進行了擴展,讓您能夠處理當前打開的存儲庫以外的問題。
要了解全部新功能和更新,您能夠查看 0.29.0 版擴展的完整變動日誌。
Jupyter擴展插件的工做仍在繼續。要了解全部的新功能和更新,您能夠查看 7月版本的完整更新日誌。
Jupyter 交互窗口提供了另外一種構建和使用 Jupyter 筆記本的方法,使用文本文件而不是筆記本界面。上個月,咱們預覽了 Jupyter 交互式窗口的升級版本,如今咱們提供了具備更深刻的工做臺集成,包括對主題的支持、自定義鍵綁定、片斷、與擴展的兼容性等!很是感謝咱們的用戶經過 GitHub 問題提供有關預覽體驗版的反饋。內置交互窗口如今已經成爲了 1.59 版本中的默認界面。以前的界面在 "jupyter.enableNativeInteractiveWindow": false
後將仍然可用,並會在即將發佈的版本中刪除。咱們期待您的反饋!
咱們一直致力於支持 Jupyter 筆記本中的 "逐行運行" 功能。此功能本質上是一種簡化的調試模式,可以讓您逐行執行單元代碼,而無需任何複雜的調試 UI。這依然是實驗性的,您能夠經過設置 "jupyter.experimental.debugging": true
,在您選擇的內核中安裝 ipykernel 的第 6 版,而後選擇單元格工具欄中的 " 按行運行" 按鈕來嚐鮮一下。
遠程- 容器 擴展適用於在 VS Code 中使用 Docker 容器。它如今包含 devcontainer 命令行界面,讓您能夠輕鬆地打開容器中的文件夾 ( devcontainer open ) 或者構建開發容器映像 ( devcontainer build )。
您能夠在 遠程開發 發行說明中瞭解新的功能和錯誤修復。
咱們很高興地宣佈無標題文件的自動語言檢測的初始預覽版,它使用機器學習來檢測您正在編碼的語言並自動設置無標題文件的語言模式。此功能利用了開源 ML 庫 Tensorflow.js 和 GitHub 用戶 @yoeo 來自 Guesslang 的 ML 模型。
在此版本中,該功能將默認關閉,但咱們計劃將其設爲下一次迭代版本的默認設置。若是您想要啓用它,請應用如下設置:
"workbench.editor.untitled.experimentalLanguageDetection": true
舉個例子,您能夠打開一個無標題文件並將一段代碼粘貼到您的編輯器中。
如下是一段自動識別的 Python 代碼段:
此外,您能夠經過打開語言選擇器查看正在檢測的語言。
注意:若是語言檢測結果不夠確信,那麼您將保持當前的語言模式,語言選擇器中不會顯示任何結果,直到語言檢測結果更有把握。
該設置還容許您提供語言覆蓋,可用於指定您不想自動關閉的語言模式。
如下的例子展現瞭如何關閉 .md 文件自動檢測:
"workbench.editor.untitled.experimentalLanguageDetection": true "[markdown]": { "workbench.editor.untitled.experimentalLanguageDetection": false }
在您編輯無標題的 Markdown 文件時,自動語言檢測功能不會運行。可是,若是您正在修改任何其餘類型的無標題文件,自動語言檢測功能將會檢測這些文件的內容。
咱們已經將與 ML 模型交互的代碼分離併合併到它本身的代碼庫中,做爲 npm 包發佈,該包存在於 vscode-languagedetection存儲庫中。
請讓咱們知道無標題文件的自動語言檢測功能是否幫助到了您的平常工做!
此版本包括對 TypeScript 4.4 版本的支持。您能夠在 TypeScript 博客上閱讀有關 TypeScript 4.4 中新語言功能和改進的更多信息。一些工具亮點:
要開始使用 TypeScript 4.4 內測版本,請安裝 TypeScript Nightly 擴展。
若是您在使用 TypeScript 4.4 時遇到任何錯誤,請分享您的反饋並告訴咱們。
感謝微軟 C++ 團隊貢獻的大量代碼,咱們很高興在這個里程碑版本中包括了 反彙編視圖 的預覽功能。
反彙編視圖能夠從編輯器的上下文菜單中打開,用以顯示活動堆棧幀的反彙編源碼,它支持單步執行彙編指令,而且能夠在單個指令上設置斷點。
反彙編視圖僅在活動的調試會話中可用。注意,底層調試擴展插件也須要有相應的支持。
目前,只有 C++和 Mock Debug能夠支持反彙編視圖。
從技術角度而言,VS Code 的反彙編視圖實現了 DAP (Debug Adapter Protocol) 協議另外四個功能:
disassembly
請求,用以提供基於內存位置的反彙編源碼。instructionPointerReference
屬性。granularity
屬性。setInstructionBreakpoints
請求。去年秋天,咱們開始在 VS Code 中添加對運行測試的原生支持,本月,第一組與測試相關的 API 已經交付。與以前的擴展插件相比,這些 API 提供了更大的靈活性、更好的性能和更豐富的用戶體驗。查看有關編寫測試擴展的指南以深刻了解。
測試資源管理器UI 插件的現有用戶能夠經過將 testExplorer.useNativeTesting
設置爲true
來得到原生體驗。可是,該轉換是基於測試資源管理器 UI 擴展示有 API,所以不包括諸如豐富差別之類的一些功能。
Java 擴展包中包含的 Microsoft Java 測試運行器是最先採用測試 API 的擴展之一 。
有助於建立新文件編輯器的擴展(例如筆記本或自定義編輯器)如今能夠向新的 文件/新文件 菜單貢獻點貢獻命令。能夠從歡迎頁面或文件菜單中的 "新建文件..." 項目訪問此菜單。
狀態欄項目如今支持豐富的懸停,包括連接和圖標 StatusBarItem.tooltip: string | IMarkdownString
MarkdownString.supportThemeIcons
設置爲 true
,您可使用帶有 $(iconName)
語法的圖標。MarkdownString
受信任,還能夠添加命令連接。語法:([test](command:vscode.newWindow))
表示警告的狀態欄項目可使用新添加的顏色 statusBarItem.warningBackground
和 statusBarItem.warningForeground
。
對象設置必須將 additionalProperties
設置爲 false
,以便在設置編輯器中支持對象。不然,設置編輯器會解讀爲複雜設置(不規律的設置),並將用戶定向到設置 JSON 文件。
要在設置編輯器中添加多行字符串設置的支持,請將 "editPresentation": "multilineText"
做爲鍵值配對添加到字符串設置中。將字符串設置更改成多行設置將致使設置編輯器在多行文本區域(而非單行輸入框中)呈現設置值。
咱們已經添加了下列新圖標到 codicon庫中:
-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
當事件 workspace.onDidChangeTextDocument
被觸發時,事件對象的新屬性reason
會告知用戶文本更改的緣由是撤消或重作操做。
語言服務器協議的下一個新版本以及對應的 npm 模塊已經發布。3.17版本包含了一個關於完成項標籤詳細信息的新提案,該提案符合 VS Code 自己的最新變化。
writeMemory
請求已經完成,如今能夠在 Debug Adapter Protocol的 1.48 版和與之相對應的 npm 模塊中使用。若是調試適配器具備 supportsWriteMemoryRequest
功能,客戶端可使用 writeMemory
請求將字節寫入給定位置的內存。
memory
事件有一個新的提案,將在下一個里程碑中添加到 DAP。
每一個里程碑版本都附有新提議的 API,擴展插件的做者們能夠試用它們。咱們期待您的反饋。若是您想要嚐鮮提議的新 API,請完成如下步驟:
package.json
文件中加入這一行: "enableProposedApi": true
。您將不能使用建議 API 發佈擴展插件。由於新的版本可能會有重大變化,咱們須要保證現有的擴展插件能夠被繼續使用。
group
屬性存在於tasks.json
文件中定義的任務上,也經過任務 API 公開。 group
屬性有一個 isDefault
屬性,該屬性直到如今在 API 中都不可用。該提案將isDefault
屬性公開爲TaskGroup
上的只讀屬性,以便擴展能夠讀取哪一個任務是組的默認任務,但不能經過爲組設置默認值來覆蓋用戶配置。
到目前爲止,用於獲取身份驗證會話對象的getSession
API 歷來沒有能力要求用戶須要再次登陸。然而這對於使用 SAML/單點登陸 (SSO) 體驗的 GitHub 等身份驗證服務是必需的,其中訪問令牌最終會在 SSO 會話到期時失去對資源的訪問權限。該提案爲 AuthenticationGetSessionOptions
添加了另外一個名爲 forceRecreate
的屬性,容許您要求用戶再次登陸。向用戶顯示相似於您指定 createIfNone
時顯示的模式體驗。
本月咱們完成了從 Electron 的 webview 標籤元素過渡到基於普通 <iframe>
元素的 webview 。這更好地協調了 VS Code 的 webviews 跨桌面和 web 的實現,也讓咱們刪除了不少如今冗餘的代碼。
在這個里程碑版本中,咱們完成了將 Electron 13 捆綁到 VS Code 的實驗,這要感謝全部參與 Insiders 測試和自託管的參與者。這是 Chromium 91.0.4472.124 附帶的主要 Electron 版本。此版本的 Node.js 版本沒有變化,它仍然是 v14.16.0。
隨着咱們準備讓 VS Code 工做臺啓用 Electron 的沙盒功能,咱們但願在 linux 上啓用混合沙盒模式,且不在分佈式軟件包 deb、rpm、snap、tar 存檔中捆綁 cli 參數--no-sandbox
。 Chromium 在 linux 上有一個多層沙盒模型。若是 Chromium 沒法將命名空間沙盒用於第 1 層,它將嘗試經過幫助程序 chrome-sandbox
來使用 setuid 沙盒。要使 setuid 二進制文件工做,它須要知足如下條件:
咱們可以爲 deb 和 rpm 包保留這些條件。目前沒法得到 snap 的這些權限,咱們有如下跟蹤問題 https://github.com/microsoft/vscode/issues/127140。
至於其餘使用 tar 存檔的應用程序,若是應用程序沒法使用命名空間沙盒(這在容器內運行時可能會發生)它將失敗並顯示如下錯誤:
FATAL:setuid\_sandbox\_host.cc(158)]
找到了 SUID 沙盒助手二進制文件,但沒有正確配置。而不是在沒有沙盒的狀況下運行,我如今正在停止程序。您須要確保 chrome-sandbox 由 root 用戶擁有而且模式爲4755。
若是發生這種狀況,您可使用如下兩個選項之一來使其正常工做:
sudo chown root <path-to-vscode>/chrome-sandbox sudo chmod 4755 <path-to-vscode>/chrome-sandbox
--no-sandbox
標誌運行咱們一直爲每一個構建版本運行一套完整的煙霧測試。咱們測試打開 VSCode(桌面和 Web)並執行一堆 UI 元素以確保正確的功能。這個里程碑版本中咱們在這個基礎上投入了更多資源,從而使咱們可以從最終計劃中移除手動的煙霧測試。
煙霧測試如今能夠在全部平臺(macOS、Linux 和 Windows)上運行。最重要的是,咱們已經實如今每次代碼提交時自動運行煙霧測試,從而咱們能夠及時地發現 VS Code 新版本可能引入的軟件錯誤。
最後,感謝咱們用於自動化 Web 冒煙測試的 Playwright 庫,咱們採用了他們的跟蹤工具,這使得咱們能夠查看而且重複運行失敗的煙霧測試。