2023 年 5 月 (版本 1.79)
更新 1.79.1:此更新解決了此安全性問題。
更新 1.79.2:此更新解決了這些問題。
下載:Windows:x64 Arm64 | Mac:通用 Intel silicon | Linux:deb rpm tarball Arm snap
歡迎使用 Visual Studio Code 2023 年 5 月發行版本。此版本包含許多更新,我們希望您會喜歡,其中一些主要重點包括
- 唯讀模式 - 將工作區中的特定檔案和資料夾標記為唯讀。
- 「貼上為」選項 - 選擇您希望項目連結貼到編輯器的方式。
- 自動複製外部檔案 - 拖曳或貼到 Markdown 會將新檔案新增至您的工作區。
- 預設 Git 存放庫分支名稱 - 使用 "main" 作為預設值,或透過使用者設定覆寫。
- 筆記本豐富內容搜尋 - 根據筆記本輸出搜尋或依儲存格類型篩選。
- JSX 標籤的連結編輯 - 同時變更開頭和結尾 JSX 標籤。
- 預覽:GitHub Copilot Chat 改善 - 輕鬆管理您的聊天工作階段歷程記錄。內嵌聊天「即時預覽」。
- Microsoft Build 2023 大會上的 VS Code - 在 YouTube 播放清單中趕上會議進度。
如果您想在線上閱讀這些發行說明,請前往 code.visualstudio.com 上的更新。
Insiders: 想要盡快試用新功能嗎?您可以下載每晚建置的 Insiders 版本,並在最新更新可用時立即試用。
協助工具
詳細資訊設定
已新增其他 accessibility.verbosity 設定,以告知螢幕閱讀器使用者在功能聚焦時如何與功能互動。
對於 GitHub Copilot,有一些提示說明如何透過以下方式存取 Copilot 聊天檢視和編輯器程式碼聊天的協助工具說明功能表
accessibility.verbosity.panelChat
accessibility.verbosity.inlineChat
這些說明功能表提供有關預期內容、如何從輸入方塊導覽至其他元素等的資訊。
其他新的 verbosity
設定提供特定 VS Code UI 的資訊
accessibility.verbosity.keybindingsEditor
- 在鍵盤快速鍵編輯器中時。accessibility.verbosity.notebook
- 在筆記本中時。
accessibility.verbosity
設定預設為啟用(設定為「true」),但您可以個別關閉它們。
設定編輯器
macOS 上的 VoiceOver 現在會讀取設定編輯器中列舉設定選項的描述。試用列舉設定,例如 files.autoSave
和 editor.accessibilitySupport
。
工作台
唯讀模式
在某些開發案例中,將工作區的某些資料夾或檔案明確標記為唯讀可能會很有幫助。例如,如果資料夾或檔案內容是由不同的程序管理(例如由 Node.js 套件管理員管理的 node_modules
資料夾),則將它們標記為唯讀可以避免意外的變更。
對於此使用案例,有新的設定可以在 [檔案總管] 以及文字和筆記本編輯器中將檔案路徑標記為唯讀
files.readonlyInclude
- 如果符合,則將檔案設為唯讀的路徑或 glob 模式。files.readonlyExclude
- 當檔案符合files.readonlyInclude
時,略過使其成為唯讀的路徑或 glob 模式。files.readonlyFromPermissions
- 磁碟上沒有寫入權限的檔案是否應為唯讀。
根據設定的規則,如果路徑被視為唯讀,您就無法從 [檔案總管] 修改它(例如,刪除它),而且文字或筆記本編輯器是唯讀的。
對於更臨機操作的唯讀模式切換,有新的命令可以僅針對目前工作階段變更模式,覆寫您的設定組態
- 在工作階段中設定作用中編輯器為唯讀 - 將作用中編輯器標記為唯讀。
- 在工作階段中設定作用中編輯器為可寫入 - 將作用中編輯器標記為可寫入。
- 在工作階段中切換作用中編輯器唯讀 - 在唯讀和可寫入之間切換。
- 在工作階段中重設作用中編輯器唯讀 - 重設工作階段狀態。
Windows UNC 主機允許清單改進
作為 重要的安全性修正的一部分,VS Code 導入了 UNC 主機的允許清單。在此里程碑中,我們解決了 Windows 使用者在使用 VS Code 處理 UNC 路徑時回報的許多可用性問題。
對話方塊改進
啟動時允許 UNC 主機的確認對話方塊現在會更新 security.allowedUNCHosts
設定,並在您選取核取方塊時新增主機。
此外,按一下深入了解按鈕不再關閉對話方塊。
新的 security.restrictUNCAccess 設定
新的設定 security.restrictUNCAccess
可讓您停用主機的 UNC 允許清單,並將行為還原為此安全性修正之前的狀態。我們強烈建議不要變更此設定,因為這會使您的系統再次容易受到資訊洩漏漏洞的攻擊。
新的索引標籤大小調整選項已修正
workbench.editor.tabSizing
設定有一個新的選項 fixed
,可讓每個索引標籤寬度相等。當空間變得有限時,索引標籤會均勻縮小到最小值。新的設定 workbench.editor.tabSizingFixedMaxWidth
設定索引標籤的初始大小。
在此模式中,當您使用滑鼠快速關閉索引標籤時,索引標籤的寬度會保持穩定,以便透過按一下同一個點來關閉每個索引標籤。當您將滑鼠從編輯器索引標籤區域移開時,寬度會隨即調整。
網路品質指示
當您連線到遠端電腦時,VS Code 遠端編輯功能的最佳體驗需要良好的網路連線和低延遲。在此里程碑中,我們更新了狀態列中的遠端指示器,以便在延遲非常高或網路連線似乎離線時為您提供一些意見反應。
高延遲(Web、桌面)
我們會定期測量您連線到的遠端的延遲。當達到特定閾值時,遠端指示器會更新以反映該情況。
離線偵測(僅限 Web)
如果您使用 Web 瀏覽器連線到遠端,而且您突然失去網際網路連線,遠端指示器會更新以反映該情況。
繼續處理
繼續處理功能可讓您在相同存放庫的 VS Code 開發環境之間儲存和擷取工作中的變更,例如,當您從本機 Git 存放庫升級到 GitHub codespace 時,或當您在相同存放庫的不同電腦之間切換時。
您現在可以在 GitHub 存放庫的開發環境之間傳輸工作中的變更,即使它在一個環境中設定了 HTTP 遠端,而在另一個環境中設定了 SSH 遠端。此外,我們已開始傳輸其他工作台狀態,例如您的原始碼控制檢視狀態偏好設定,以實現更順暢的轉換。
編輯器
貼上為
將檔案貼到文字編輯器時,您可能有多種方式想要插入它。您可能想要指向檔案的絕對路徑點。您可能想要相對於目前工作區的路徑。或者,您甚至可能想要特定於目前編輯器語言的內容,例如在貼到 Markdown 時插入檔案的 Markdown 連結。VS Code 新的「貼上為」功能可讓您控制貼上內容的插入方式。
貼上之後,如果還有其他插入貼上內容的方式,VS Code 現在會顯示一個小的「貼上為」控制項
您可以按一下「貼上為」控制項或使用 ⌘.(Windows、Linux Ctrl+.) 鍵盤快速鍵來開啟它。當您開始輸入或將游標移到插入的文字之外時,「貼上選取器」就會消失。您也可以使用 "editor.pasteAs.showPasteSelector": "never"
完全停用下拉式選取器控制項。
例如,當您將內容貼到筆記本中的 Markdown 儲存格時,「貼上為」控制項可讓您在以下項目之間切換
- 將影像插入為附件
- 插入 Markdown 影像參考
- 插入相對路徑(適用於工作區中的檔案)
- 插入絕對路徑
如果您偏好在實際貼上之前選取剪貼簿中內容的貼上方式,您可以改為使用新的 貼上為... 命令。這可讓您選取內容的貼上方式
快速建議和程式碼片段
快速建議表示 VS Code 會在您輸入時顯示建議,而無需按下 ⌃Space(Windows、Linux Ctrl+Space)。此功能廣受歡迎,大約 90% 的所有建議工作階段都是透過輸入開始的。大量建議透過 Tab
接受(相對於 Enter
和輸入接受字元)。
當插入程式碼片段時,Tab
鍵用於在程式碼片段預留位置之間導覽。現在,當在插入程式碼片段時快速建議變成作用中時,Tab
鍵可以接受完成或導覽至下一個程式碼片段預留位置。為了解決此衝突,有 editor.suggest.snippetsPreventQuickSuggestions
設定可在插入程式碼片段時停用快速建議。它預設為 true
,只要此設定存在,我們就會收到回饋,表示它令人困惑。因此,我們已決定將其預設值變更為 false
,以便在程式碼片段預留位置內輸入時會觸發快速建議。
然後您可以使用下列按鍵
- 按下
Tab
以接受完成。 - 按下
Escape
以隱藏快速建議。 - 而沒有建議的
Tab
會導覽至下一個程式碼片段預留位置。
終端機
fish shell 的自動 shell 整合
Shell 整合及其增強的使用者體驗現在將自動為 fish shell 啟用。您可能需要更新 fish 才能使其運作。
Overline 支援
終端機現在支援 ECMA-48 中指定的 overline 逸出序列 (SGR 53
、SGR 55
)。此序列最常見的用途是在終端機底列的應用程式「狀態列」上方新增一行。
原始碼控制
預設分支名稱
從此里程碑開始,使用 VS Code 建立的所有新 Git 存放庫都會將 main
設定為其預設分支。如果您偏好不同的預設分支名稱,您可以使用 git.defaultBranchName
設定來變更它。當設定設定為空白時,VS Code 會延遲至 Git 中設定的預設分支名稱。將資料夾發佈到 GitHub 也會遵循 GitHub 上設定的預設分支名稱。
分支選擇器與 vscode.dev 和 GitHub 整合
您現在可以從 VS Code 桌面的分支選擇器中簽出 vscode.dev 中的分支或在 GitHub.com 上開啟它。
在下面的簡短影片中,分支選擇器下拉式清單中列出的每個分支在右側都有按鈕,可在 GitHub 上開啟或在 vscode.dev 上簽出。
相似度閾值
Git 狀態使用相似度索引(相較於檔案大小的新增/刪除次數)來判斷新增/刪除配對是否被視為重新命名。您現在可以使用 git.similarityThreshold
設定來設定相似度閾值,該設定的值介於 0
和 100
之間。預設值為 50
。
筆記本
豐富內容搜尋
您現在可以從 [搜尋] 控制項搜尋開啟的筆記本中的豐富內容。如果您的筆記本已開啟,[搜尋] 控制項會根據筆記本編輯器中的顯示方式顯示結果(而不是搜尋原始來源檔案的內容)。這也允許取代筆記本輸入中的文字。
使用新的筆記本搜尋切換,您也可以篩選您想要在其中搜尋的儲存格內容類型。
改進的儲存格輸出互動
新增了新的內容索引鍵 notebookOutputInputFocused
,以判斷儲存格輸出內的文字方塊是否具有焦點,以便在輸出具有焦點時可以安全地使用原始快速鍵 a/b/j/k。將焦點放在輸入方塊上可防止這些快速鍵觸發。
執行時格式化
筆記本現在可以在儲存格執行時格式化儲存格。這將在使用執行儲存格、全部執行、執行上方/下方和組合核心+執行命令時觸發。此功能可以透過設定 "notebook.formatOnCellExecution": true
開啟。
儲存時的程式碼動作
筆記本現在支援在儲存時執行的程式碼動作。程式碼動作可以在 notebook.codeActionsOnSave
設定下指定。擴充功能作者可以使用儲存格層級程式碼動作的標準類型定義提供者,或使用新的 notebook.
前置詞來定義管理整個筆記本的程式碼動作。您可以檢閱 clean-nb-imports-ext 範例擴充功能,以了解擴充功能如何使用此新設定。
語言
TypeScript 5.1
VS Code 現在隨附 TypeScript 5.1.3。此主要更新帶來了新的 TypeScript 語言功能、更佳的效能以及許多重要的改進和錯誤修正。您可以在 TypeScript 部落格上閱讀有關 TypeScript 5.1 的資訊。
JSX 標籤的連結編輯
透過連結編輯,當您變更開頭 JSX 標籤時,VS Code 會自動更新對應的結尾標籤。這可以節省大量時間
此功能預設為關閉,但可以透過設定啟用
"editor.linkedEditing": true
您也可以使用 開始連結編輯 命令明確啟動連結編輯。
使用 F2 重新命名相符的 JSX 標籤
當您在 JSX 標籤上觸發重新命名時,VS Code 現在只會重新命名相符的標籤,而不是嘗試更新標籤的所有參考
這需要 TypeScript 5.1+,並且與 HTML 中的重新命名運作方式相符。
您可以使用 javascript.preferences.renameMatchingJsxTags
和 typescript.preferences.renameMatchingJsxTags
停用此行為。
JSDoc @param 完成
撰寫 JSDoc 註解時,VS Code 現在會顯示所有遺失參數的建議
這可以協助您快速填寫文件。
在 JavaScript 檔案中,@param
完成會為參數類型描述建立預留位置
將外部媒體檔案複製到工作區,以便在 Markdown 中拖曳或貼上
想要將影像或影片新增至 Markdown 文件嗎?現在您可以直接將檔案拖曳或貼到 Markdown 中,而無需浪費時間先手動將檔案複製到您的工作區,然後新增連結到該檔案。如果檔案目前不是工作區的一部分,VS Code 會自動將檔案複製到您的工作區,並插入連結到該檔案的連結
這對於剪貼簿中的影像資料也非常有用。例如,如果您使用 Windows 上的剪取工具擷取螢幕擷取畫面,您可以按下 Markdown 檔案中的貼上,VS Code 會從剪貼簿資料建立新的影像檔案,並插入新檔案的 Markdown 影像連結。如果您在 macOS 上按住 Ctrl 鍵擷取螢幕擷取畫面以將其複製到剪貼簿,這也適用。
您也可以使用一些設定自訂此功能的行為
markdown.copyFiles.destination
markdown.copyFiles.destination
設定控制新媒體檔案的建立位置。此設定會將符合目前 Markdown 文件的 glob 對應至影像目的地。影像目的地也可以使用一些簡單的變數。請參閱 markdown.copyFiles.destination
設定描述,以取得有關可用變數的資訊。
例如,如果我們希望工作區中 /docs
下的每個 Markdown 檔案都將新的媒體檔案放入特定於目前檔案的 images
目錄中,我們可以撰寫
"markdown.copyFiles.destination": {
"/docs/**/*": "images/${documentBaseName}/"
}
現在,當新檔案貼到 /docs/api/readme.md
中時,影像檔案會建立在 /docs/api/images/readme/image.png
。
您甚至可以使用簡單的規則運算式來轉換 類似於程式碼片段的方式中的變數。例如,此轉換只會在建立媒體檔案時使用文件檔案名的第一個字母
"markdown.copyFiles.destination": {
"/docs/**/*": "images/${documentBaseName/(.).*/$1/}/"
}
當新檔案貼到 /docs/api/readme.md
中時,影像現在會建立在 /docs/api/images/r/image.png
下。
markdown.copyFiles.overwriteBehavior
markdown.copyFiles.overwriteBehavior
設定控制新建立的媒體檔案是否覆寫現有的檔案。
依預設,VS Code 永遠不會覆寫現有的檔案。相反地,如果您有一個名為 image.png
的檔案,並嘗試將其貼到工作區中已存在 image.png
的 Markdown 文件中,VS Code 會改為建立一個名為 image-1.png
的新檔案。如果您接著嘗試貼上另一個名為 image.png
的檔案,它將改為建立為 image-2.png
。
如果您偏好讓現有的檔案被新的檔案覆寫,請設定 "markdown.copyFiles.overwriteBehavior": "overwrite"
。現在 VS Code 將始終使用原始檔案名,覆寫該路徑的任何現有檔案。
停用將檔案複製到工作區
如果檔案尚未成為工作區的一部分,VS Code 只會嘗試將檔案複製到您的工作區。此外,我們目前只將媒體檔案(影像、影片、音訊)複製到工作區。
但是,如果您發現此新行為太過侵入性,您可以透過設定來停用拖曳和貼上
"markdown.editor.drop.copyIntoWorkspace": "never"
"markdown.editor.filePaste.copyIntoWorkspace": "never"
Markdown 檔案中 HTML 路徑的 IntelliSense
許多 Markdown 方言允許在 Markdown 文件中使用原始 HTML 標籤。在此更新中,我們已將 VS Code 的大多數 Markdown IntelliSense 功能延伸到這些 HTML 標籤中使用的檔案路徑。這包括對以下項目的支援
- 路徑完成.
- 尋找所有參考到連結檔案的參考。
- 在檔案重新命名或移動時自動更新檔案路徑。
- 安全地重新命名使用 F2 的檔案。
- 驗證工作區中是否存在連結的檔案。
將音訊插入 Markdown
當您將音訊檔案拖曳並放置或複製並貼到 Markdown 文件中時,VS Code 現在會插入 <audio>
元素。
JSON with Lines (JSONL) 檔案的語法醒目提示
JSON with Lines 描述以換行字元分隔的一系列 JSON 物件。如果使用檔案副檔名 jsonl
,VS Code 會提供語法醒目提示。
遠端開發
遠端開發擴充功能可讓您使用 Dev Container、透過 SSH 或 遠端通道的遠端電腦,或 Windows Subsystem for Linux (WSL) 作為功能完整的開發環境。
重點包括
- 在目前或新的 VS Code 視窗中開啟新的遠端連線(透過遠端通道、連線到 Dev Container)。
- 更輕鬆的工作流程,讓轉送的連接埠公開。
- 從 Web 版 VS Code (vscode.dev) 連線到 WSL 的初步支援。
您可以在遠端開發發行說明中了解新的擴充功能功能和錯誤修正。
擴充功能貢獻
GitHub Copilot
在穩定版 VS Code 中使用 Copilot Chat
先前,您必須使用 VS Code Insiders 才能使用 Copilot Chat。從 VS Code 1.79 開始,您也可以在穩定版 VS Code 中使用 Copilot Chat。您仍然必須安裝 GitHub Copilot Chat 擴充功能。
編輯器聊天
我們改進了編輯器聊天,最值得注意的是,我們已將其預設模式變更為「livePreview」。在此模式中,變更會直接套用至文件,並以內嵌差異檢視顯示。讓我們看看下面的範例
- 已將新的屬性新增至
IUserFriendlyStatusItemEntry
類型,且 - Copilot 相應地更新了
isUserFriendlyStatusItemEntry
檢查。 - 回覆會使用內嵌差異檢視顯示在編輯器中。其右手邊是可編輯的,並由 VS Code 的語言擴充功能檢查。
- 這可讓您發現回覆中的錯誤(在
isMarkdownString
函式下方不存在),並且您可以在接受建議之前修正它。
筆記本改進
我們在本月改進了筆記本編輯器中的聊天體驗。在筆記本文件中使用 Copilot 時,Copilot 可以使用筆記本內容來提供更相關的建議。例如,程式碼建議會使用先前儲存格中定義的變數或模組,而無需重新建立或重新匯入它們。
執行筆記本儲存格時,Copilot 現在也會針對儲存格執行失敗提供建議。您可以選取儲存格狀態列上的 使用 Copilot 修正 動作來顯示這些建議。
Copilot 建議也會在儲存格執行時自動接受,因此您不必手動接受它們。
GitHub Pull Request 和 Issues 整合
當安裝並啟用 GitHub Pull Requests and Issues 擴充功能,且您正在檢視檢閱執行緒時,現在可以使用 Copilot 直接套用檢閱註解。您可以透過註解功能表中的 使用 AI 套用建議 按鈕來執行此操作。
實驗性快速問題體驗
佈景主題:Panda Theme(在 vscode.dev 上預覽)
在此迭代中,我們實驗使用聊天來詢問快速程式設計問題,而無需離開內容。如果您可以存取聊天體驗,則可以使用下列設定啟用此功能
"chat.experimental.quickQuestion.enable": true
功能概觀
- 向 Copilot 詢問快速問題。
- 使用 ⇧⌥⌘L(Windows、Linux Ctrl+Shift+Alt+L) 切換體驗(狀態會記住 30 秒,因此您可以輕鬆顯示、隱藏和再次顯示)。
- 在聊天中開啟 按鈕,用於將對話繼續到聊天檢視中的長篇聊天。
刪除聊天項目
您現在可以透過按一下聊天請求中的 X 圖示來刪除聊天請求/回應配對。
您為什麼要這樣做?有時,Copilot 會提供離題或不正確的回應。您可以再次詢問您的問題,但從您工作階段的聊天歷程記錄中移除不良回應也有助於使對話保持在正軌上。每個聊天請求可以包含的內容量也有限制,因此移除冗長的不良回應可能有助於為更有用的資訊節省您的內容預算。
將聊天工作階段從側邊欄移至編輯器
已經可以透過執行 聊天:開啟編輯器 命令在編輯器中開啟聊天工作階段,但現在也可以在側邊欄和編輯器之間來回移動聊天工作階段。您可以在聊天檢視標題或編輯器標題功能表下的「...」功能表中找到 在編輯器中開啟工作階段 和 在側邊欄中開啟工作階段 命令。
聊天工作階段歷程記錄
您的聊天工作階段現在會儲存到歷程記錄中,您可以透過選取聊天檢視標題功能表中的 顯示歷程記錄 按鈕來瀏覽歷程記錄。您可以選取歷程記錄項目以將該對話載入到聊天編輯器中,然後無縫地從您上次中斷的地方繼續。您可以按一下每一列上的 X 按鈕,從歷程記錄中移除工作階段。
將聊天工作階段匯出到 JSON 檔案
我們新增了一個命令 聊天:匯出工作階段,可將目前聚焦的聊天工作階段匯出到 JSON 檔案。然後,您可以執行 聊天:匯入工作階段 命令來匯入此工作階段並繼續您的對話。您可以將此檔案簽入您的存放庫、與其他人共用,或只是儲存您的對話以供日後參考。請注意,當您在匯入的聊天工作階段中繼續您的對話時,除非您再次匯出工作階段,否則這些新訊息將不會儲存。
程式碼區塊導覽和按鍵繫結
我們新增了一些命令和快速鍵,讓您在聊天回應中更輕鬆地使用程式碼區塊。聊天:下一個程式碼區塊 (⌥⌘PageDown (Windows, Linux Ctrl+Alt+PageDown)) 和 聊天:上一個程式碼區塊 (⌥⌘PageUp (Windows, Linux Ctrl+Alt+PageUp)) 可將游標移動到目前聊天回應中的下一個或上一個程式碼區塊。當程式碼區塊處於焦點時,也可以從命令選取區調用程式碼區塊工具列中的命令,或者您可以為它們指定快速鍵。在終端機中執行 預設已指派快速鍵,⌃⌥Enter (Windows, Linux Ctrl+Alt+Enter)。而且,當您在程式碼區塊中按下正常的複製快速鍵而沒有選取任何內容時,現在將會執行 複製 命令。
我們也新增了快速鍵來聚焦聊天視窗 (⌃⌘I (Windows, Linux Ctrl+Alt+I)) 和清除聊天工作階段 ()。
Copilot YouTube 播放清單
若要深入了解 GitHub Copilot,以及秘訣、訣竅和最佳實務,請查看 YouTube 上的 VS Code Copilot 系列。您可以在其中找到 GitHub Copilot 的 簡介、特定語言 的用法,以及關於使用 Copilot 進行開發時 有效提示 的指南。
Python
在專用終端機中執行 Python 檔案
Python 擴充功能現在會為您使用編輯器頂端的 執行 按鈕或 Python:在終端機中執行 Python 檔案 命令執行的每個檔案建立新的終端機,並且每次您重新執行時都會繼續使用此檔案的「專用」終端機。
任何時候您希望在個別的終端機中執行相同的檔案,您都可以在 執行 按鈕選單下選取 Python:在專用終端機中執行 Python 檔案。
測試探索和執行重寫
本月,我們開始以實驗形式推出我們的測試重寫。此重寫重新設計了擴充功能中 unittest 和 pytest 的測試探索和執行背後的架構。雖然它沒有提供任何向使用者公開的額外功能,但它減少了錯誤行為,並為未來的新功能機會打開了大門。重寫正在實驗 pythonTestAdapter
後面推出,您可以透過在您的 settings.json
中使用 python.experiments.optInto
來選擇加入和退出。最終,我們計劃移除此設定並採用此新架構。如果您對此實驗或重寫有任何意見或建議,您可以在 vscode-python 儲存庫中分享。
使用 Pylance 設定可設定的索引限制
有一個新的 Pylance 設定,可讓您設定索引的檔案計數限制:"python.analysis.userFileIndexingLimit"
,預設值為 2000。當您處理非常大型的專案,並且願意為了增強 IntelliSense 體驗而犧牲效能時,此設定可能會很有用。
Jupyter
針對遠端 Jupyter 核心恢復執行儲存格
Jupyter 擴充功能現在支援針對 遠端 Jupyter 核心 恢復執行儲存格,即使在關閉 VS Code 後重新開啟 Notebook,如果儲存格仍在忙碌執行中也是如此。
例如,假設您針對遠端 Jupyter 核心執行一段長時間執行的程式碼區段,例如模型訓練。這可能需要幾分鐘或更長時間,因此您可能會決定在此期間關閉 VS Code。幾分鐘後,VS Code 重新啟動並開啟相同的 Notebook,如果儲存格仍在忙碌執行中,此狀態會反映在 Notebook 儲存格中,並且任何新的輸出都會顯示在儲存格輸出中。
另一方面,如果儲存格在 VS Code 關閉時完成執行,則在此期間產生的輸出將不會保留在 Notebook 中。以這種方式恢復執行並顯示新輸出僅限於簡單的輸出,例如純文字、HTML、影像、圖片等等。不支援還原小工具和其他此類複雜輸出的狀態。
GitHub Pull Requests 和 Issues
GitHub Pull Requests 和 Issues 擴充功能取得了更多進展,它可讓您處理、建立和管理提取請求和問題。重點包括
- 用於檢視已簽出 PR 差異的兩個新動作:比較基礎與提取請求 Head (唯讀) 和 比較提取請求 Head 與本機。
- 新的設定
"githubPullRequests.pullPullRequestBranchBeforeCheckout"
可用於在再次簽出相同的分支時關閉提取先前簽出的 PR 分支。
檢閱擴充功能 0.66.0 版本的變更記錄,以了解其他重點。
預覽功能
在 insiders.vscode.dev 上進行專案範圍的 JS/TS IntelliSense
vscode.dev 是 VS Code 的輕量版本,完全在您的瀏覽器中執行。在此迭代中,我們顯著豐富了 vscode.dev 的 JavaScript 和 TypeScript 支援,使其可以分析您工作區中的所有檔案,而不是僅限於目前開啟的檔案。這大大改善了程式碼導覽,讓您可以前往定義 和 尋找所有參考 符號。它還透過確保尊重來自您的 tsconfig.json
/ jsconfig.json
的設定來改善 IntelliSense。我們現在甚至在編寫程式碼時支援自動匯入。
在下圖中,參考 檢視正在顯示工作區中對 ITextDocument
的所有參考。
這些新的 IntelliSense 功能適用於您從本機電腦開啟的資料夾,以及您使用 vscode.dev 內建的 GitHub 儲存庫 擴充功能開啟的 GitHub 儲存庫。
請記住,vscode.dev 上的 JS/TS IntelliSense 仍然存在一些限制
- 目前沒有對第三方程式庫的 IntelliSense 支援。
- 目前不支援 JavaScript 專案的 自動類型取得。
- 由於上述限制,vscode.dev 上的所有類型錯誤都已停用。
- 專案範圍的 IntelliSense 目前僅在 vscode.dev 的 Insiders 版本上啟用:
insiders.vscode.dev
。此功能目前在github.dev
上已停用。
我們計劃在未來解決這些限制,並且很高興能繼續豐富我們在 Web 上的 JavaScript 和 TypeScript 支援!
終端機中的影像
現在終端機中提供實驗性影像支援。終端機中的影像通常透過將影像像素資料編碼為文字來運作,這些文字透過特殊的跳脫序列寫入終端機。目前支援的協定是 sixel 和 iTerm 首創的內嵌影像協定。
透過設定啟用此功能
"terminal.integrated.experimentalImageSupport": true
啟用後,若要測試它,您可以從 libsixel 儲存庫 下載並 cat
一個 .six
範例檔案
或將 imgcat python 套件 或 imgcat 指令碼 與 png、gif 或 jpg 檔案搭配使用
此功能的目前限制為
- 序列化無法運作,因此重新載入終端機將不會保留任何影像 (在 jerch/xterm-addon-image#47 中追蹤)。
- 將選取範圍複製為 HTML 不包含選取的影像 (在 jerch/xterm-addon-image#50 中追蹤)。
- 動畫 gif 無法運作 (在 jerch/xterm-addon-image#51 中追蹤)。
- 短於儲存格的影像將無法正常運作,這是序列的 設計缺陷,也發生在 XTerm 中。
TypeScript 5.2 支援
此更新包含對即將推出的 TypeScript 5.2 版本的支援。查看 TypeScript 5.2 迭代計劃,以了解有關 TypeScript 團隊目前正在處理的更多詳細資訊。一些令人興奮的即將推出的工具重點包括
- 新的 內嵌常數 重構。
- 新的 移動到檔案 重構,可讓您將符號移動到現有檔案中。
若要開始使用 TypeScript 5.2 每夜建置版本,請安裝 TypeScript Nightly 擴充功能。
JavaScript 和 TypeScript 的移動到檔案重構
TypeScript 5.2 每夜建置版本中的 移動到檔案 重構可讓您將類別、函數或常數移動到現有檔案中。這也會自動更新對符號的所有參考,並根據需要更新匯入。
當您選取 移動到檔案 時,VS Code 會顯示目前 TypeScript 或 JavaScript 專案中所有檔案的清單。您可以開始輸入以快速找到您想要的檔案。
或者,您可以使用 選取現有檔案... 來使用正常的檔案選擇器選取檔案,或使用 輸入新檔案路徑... 來指定應建立的新檔案。
此功能仍在積極開發中,因此請試用並分享您的意見回饋!
適用於 Web 版 VS Code 的 WebAssemblies
為了為 vscode.dev 新增更多程式設計語言支援,VS Code 團隊一直在研究如何在 Web 版 VS Code 中執行一般 WebAssembly。如果您對此方法感興趣並想了解更多資訊,請查看最近的 VS Code 和 WebAssembly 部落格文章。
擴充功能撰寫
改善 vscode.fs 本機檔案的效能
當您使用 vscode.fs
API 來處理檔案時 (您應該這樣做!),對擴充功能主機本機的檔案進行的操作現在將更快地解析。
先前,擴充功能主機會將這些操作委派給 VS Code 用戶端執行,但現在它們直接在擴充功能主機內執行,從而節省了往返行程。
更嚴格的狀態列 API
用於建立狀態列項目 createStatusBarItem
的 API 可讓擴充功能傳遞識別碼。此識別碼用於控制狀態列項目的隱藏和顯示。識別碼對於擴充功能應該是唯一的,但到目前為止,這並未強制執行。在此版本中,我們使其更加嚴格,並且由同一擴充功能使用相同識別碼建立的狀態列項目現在將合併為一個。
工作
在工作完成時 關閉 終端機的工作呈現選項已完成。
建議的 API
每個里程碑都附帶新的建議 API,擴充功能作者可以試用它們。與往常一樣,我們希望收到您的意見回饋。以下是試用建議 API 的步驟
- 尋找您想要試用的建議,並將其名稱新增至
package.json#enabledApiProposals
。 - 使用最新的 @vscode/dts 並執行
npx @vscode/dts dev
。它會將對應的d.ts
檔案下載到您的工作區。 - 您現在可以針對建議進行程式設計。
您無法發佈使用建議 API 的擴充功能。下一個版本中可能會出現重大變更,我們絕不希望破壞現有的擴充功能。
EnvironmentVariableCollection.description
此建議允許為 EnvironmentVariableCollection
指定描述,顯示在終端機索引標籤懸停中,說明變更的確切作用。
// Example of what the Git extension could use
context.environmentVariableCollection.description = 'Enables a Git authentication provider';
EnvironmentVariableMutator.options
此建議新增了可以提供給 EnvironmentVariableMutator
的選項,讓您可以精確指定環境變數變更的套用時間,無論是在進程建立時還是在 Shell 整合指令碼中 (在 Shell 啟動指令碼執行後)。
const collection = context.environmentVariableCollection;
// Apply only when the process is created
collection.replace('FOO', 'bar');
// Apply only during the shell integration script
collection.replace('FOO', 'bar', {
applyAtProcessCreation: false,
applyAtShellIntegration: true
});
// Apply twice, during process creation and the shell integration script
collection.replace('FOO', 'bar', {
applyAtProcessCreation: true,
applyAtShellIntegration: true
});
共用提供者
共用 API 建議 允許擴充功能提供在 VS Code 中共用資源的方式。
共用提供者結果目前顯示為頂層的 共用... 命令選取區動作,以及 命令中心 附近的新圖示,前提是您已選擇加入 "workbench.experimental.share.enabled": true
和 "window.commandCenter": true
。
您可以在 API 建議問題 #176316 中留下意見回饋。
靜態狀態列項目
狀態列項目現在可以透過 package.json#contributes/statusBarItems
靜態貢獻。透過此貢獻點,擴充功能可以延遲其啟用,並且僅在與狀態列項目互動時 (例如,在命令上) 啟用。啟用後,擴充功能可以透過 vscode.window.createStatusBarItem
API 存取其靜態狀態列項目。
workspace.save 和 workspace.saveAs
儲存編輯器 API 建議 允許擴充功能觸發將編輯器儲存到其資源或要求使用者提供資源的流程。
所有儲存方法都將傳回產生的 Uri
,如果操作已取消,則傳回 undefined
。除非已關聯路徑,否則未命名的檔案將始終要求使用者提供目的地。
驗證 authGetSessions 建議 API
隨著我們越來越接近擁有 多個 GitHub 帳戶支援,我們有一個新的建議驗證 API,可讓您的擴充功能取得特定範圍集的所有可存取工作階段。這些 API 新增功能的建議 有幾件事需要說明
- 引入
vscode.authentication.getSessions
以取得您的擴充功能有權存取的每個帳戶的工作階段。如果您想要請求其他帳戶,請使用{ createIfNone: true, clearSessionPreference: true }
來要求使用者選擇帳戶。 forceNewSession
屬性現在可以接受{ sessionToRecreate: session }
物件,以便取用擴充功能可以指定它們想要重新建立的確切工作階段。- Auth Provider 實作的
createSession
函數現在將傳入要重新建立的工作階段 (如果forceNewSession
的值使用true
,則使用擴充功能的工作階段偏好設定)。
為了使此功能準備好在 GitHub 驗證擴充功能中採用,仍然需要做更多工作,因此如果您有興趣,可以關注並在 追蹤此建議的問題中提供意見回饋。
視窗活動 API
新的 API 可用於通知擴充功能視窗何時變成使用中或非使用中。這可用於處置或建立可以閒置以節省資源的持續性資源或進程。
這是透過將新的 active
布林值新增到現有的 WindowState
類型來實作的。
vscode.window.onDidChangeWindowState(state => {
if (state.active && !longRunningProcess) {
longRunningProcess = startLongRunningProcess();
} else if (!state.active && longRunningProcess) {
longRunningProcess.end();
longRunningProcess = undefined;
}
});
工程
為所有使用者啟用 Electron 沙箱
我們很高興地宣布 Electron 沙箱正在向我們所有使用者推出。這是一個從 2020 年初開始的旅程,現在終於結束了。您可以參考 將 VS Code 遷移到進程沙箱 部落格文章以取得更多詳細資訊。
擴充功能主機重新啟動參與
工作台中某些動作可能會導致擴充功能主機重新啟動,而無需重新載入目前視窗。例如,當您切換設定檔時,VS Code 會重新啟動擴充功能主機,以處理為該設定檔執行不同的擴充功能集。
但是,某些自訂和 Notebook 編輯器在切換設定檔後可能不再起作用,因為該設定檔中未安裝所需的擴充功能。如果編輯器有未儲存的變更,這可能會導致資料遺失。作為修復,VS Code 中的元件現在可以參與擴充功能主機重新啟動,並確保在擴充功能主機重新啟動之前儲存任何未儲存的變更。
我們計劃在下一個里程碑中進一步開發此體驗,敬請期待更多資訊!
Windows 8 和 8.1 支援已結束
如我們的 v1.77 版本說明 中所述,v1.79
是最後一個支援 Windows 8 / Windows Server 2012 和 Windows 8.1 / Windows Server 2012 R2 的版本。請參閱我們的 常見問題集 以取得更多資訊。
里程碑自動化
我們已在我們所有的 GitHub 儲存庫中實作自動里程碑複製。這表示在 microsoft/vscode
中建立的每月里程碑是建立和維護所有其他里程碑的基礎。
Microsoft Build 大會上的 VS Code
如果您沒有機會觀看 Microsoft Build 2023 直播,您可以在 Microsoft Developer YouTube 頻道上補看主題演講和會議。
VS Code 使用者特別感興趣的一些會議包括
- Microsoft Cloud 的下一代開發人員 AI
- 使用 Visual Studio Code 從任何地方開發
- 充分利用 GitHub Copilot 的務實技術
- 將雲端和 AI 的力量注入您的開發工作流程
值得注意的修正
- 165933 [emmet] 2023 年的 http-equiv="X-UA-Compatible"
- 181889 treeView.reveal 與 expand: 3 僅展開第一個層級 3 資料夾
感謝您
最後但同樣重要的是,衷心感謝 VS Code 的貢獻者。
問題追蹤
對我們問題追蹤的貢獻
- @gjsjohnmurray (John Murray)
- @starball5 (starball)
- @IllusionMH (Andrii Dieiev)
- @tamuratak (Takashi Tamura)
提取請求
對 vscode
的貢獻
- @akbyrd (Adam Byrd):修正 msCompile 問題比對器的問題 PR #182167
- @ashgti (John Harrison):修正偵錯輸出提示不會顯示為 'object Object' 的問題 PR #181964
- @benibenj (Benjamin Simmonds):TreeView 核取方塊狀態設定為 0 已修正 PR #183342
- @bitekas (Viktor Korsun):修正 Pseudoterminal onDidClose 範例 PR #180026
- @dan-petty (Daniel Petty):修正在 Windows 上無法為內建設定檔指定自訂路徑的問題 PR #175464
- @dcourv (Dylan):修正 #181207 - 為擴充功能檢視器底部新增邊距 PR #181723
- @DoctorKrolic:新增
JSON Lines
語言定義 PR #183035 - @dyedgreen (Tilman Roeder):修正:開啟資料夾或工作區時,將路徑編碼為 URI 組件 PR #182398
- @ElectricRCAircraftGuy (Gabriel Staples):所有色彩主題:將註解文件字串也視為註解 PR #182162
- @gjsjohnmurray (John Murray)
- 修正
security.restrictUNCAccess
設定描述中的拼字錯誤 PR #182842 - 防止路徑沒有父項時,在工作區資料夾選擇器中重複文字 (修正 #183418) PR #183427
- 修正
- @hermannloose (Hermann Loose)
- 為已解決和未解決的註解新增個別的概觀尺規色彩 PR #181520
- 修正註解圖示的色彩描述 PR #181628
- @iAnujParajuli (Anuj Parajuli):新增 #181652 html 音訊標籤以用於音訊檔案 PR #183328
- @jacekkopecky (Jacek Kopecký)
- 新增固定寬度索引標籤的設定 PR #181729
- 固定索引標籤大小調整:在最後一個索引標籤關閉時還原索引標籤寬度 PR #183188
- @jackpunt (Ganesh)
- 新增設定以將檔案標記為唯讀 (不可編輯)PR #161716
- #181708 的 isReadonly() 優先順序 PR #181955
- @jairbubbles (Julien Richard):修正差異內嵌模式中已刪除行的內容選單 PR #182542
- @jeanp413 (Jean Pierre)
- 修正 ITerminalService#getActiveOrCreateInstance 傳回已處置的終端機 PR #180451
- 修正重新載入後空白終端機編輯器 PR #182121
- 修正終端機未將編輯器背景色彩納入考量 PR #182557
- 修正改善終端機尋找行為,當結果超過 1000 個時 PR #182917
- 修正按下
esc
時無法隱藏終端機尋找小工具 PR #183090 - 修正終端機不再持久保存 PR #183516
- @Juneezee (Eng Zer Jun):refactor(userDataSync):將
indexOf
取代為includes
PR #182635 - @markw65
- 修正工作啟動競爭條件 PR #180546
- 使 _activeTasks 與 _executeTask 同步 PR #180617
- @max06 (Flo):修正:在 shellIntegration 中將 bash 語法變更為 fish 語法 PR #181637
- @r3m0t (Tomer Chachamu)
- 互動式視窗 - 不要為插入工具列留下空間 PR #181949
- 防止內嵌提示與編輯器內容之間的連字 (修正 #170449) PR #182379
- @rehmsen (Ole):為偵錯工具步驟新增 F10 快速鍵,即使在 Web 上也是如此。 PR #183510
- @soulshined (David Freer):PHP Snippets 品質提升和連續性 PR #174889
- @TheSylvester (Sylvester Wong):在未提供描述時,新增使用程式碼片段主體作為描述 #181115 PR #181381
- @tisilent (xie jialong 努力鴨)
- 修改 innerWidth PR #180480
- 修正貢獻的設定檔圖示 PR #182615
- 修正 #182702 PR #182705
- @ugultopu (Utku Gultopu):為 Git 擴充功能新增相似度閾值選項 PR #178266
- @vadimcn:在工作區狀態中保留中斷點 ID PR #182704
- @Viijay-Kr (Vijaya Krishna):fix: #169151 如果沒有中斷點,則回復為編輯器懸停 PR #181274
- @Yash-Singh1 (Yash Singh):feat: .vuerc 作為 json 檔案 PR #153017
- @yshaojun:fix: 透過新增 unbalancedBracketScopes 修正 perl 括號配對 (#_168110) PR #181203
對 vscode-css-languageservice
的貢獻
- @romainmenke (Romain Menke):css 巢狀結構:增加支援 PR #345
對 vscode-js-debug
的貢獻
- @NotAndOr (notandor):啟動瀏覽器時,使用指定的 user-data-dir 引數,而無需目錄連結。 PR #1656
對 vscode-pull-request-github
的貢獻
- @kabel (Kevin Abel):簡化
AuthProvider
列舉 PR #4779 - @SKPG-Tech (Salvijus K.):在範本中新增遺失的索引 PR #4822
- @unknovvn (Andzej Korovacki):在 checkoutExistingPullRequestBranch 中使用 git 設定在簽出前提取 PR #4759
對 monaco-editor
的貢獻
- @dlitsman (Dmitry Litsman):擴充「在邊距中呈現字形」範例以包含透明色彩註解。 PR #3945
- @dneto0 (David Neto):避免在 WGSL 詞法分析器中使用 hack PR #3887
- @spahnke (Sebastian Pahnke)
- @titouanmathis (Titouan Mathis):Webpack Plugin 修正 CJS 被注入 ESM 檔案的問題 PR #3933