2023 年 1 月 (版本 1.75)
更新 1.75.1:此更新解決了這些 問題。
下載:Windows: x64 Arm64 | Mac: 通用 Intel Silicon | Linux: deb rpm tarball Arm snap
歡迎使用 Visual Studio Code 2023 年 1 月版本。此版本有許多更新,我們希望您會喜歡,其中一些主要重點包括
- 設定檔 - 建立和共用設定檔以設定擴充功能、設定、快速鍵等等。
- VS Marketplace 簽署 - 已發布的擴充功能現在預設為程式碼簽署。
- 協助工具改進 - 終端機螢幕閱讀器模式、新的鍵盤快速鍵。
- 更輕鬆的多視圖調整大小 - 拖曳佈局角落以一次調整多個視圖的大小。
- 樹狀檢視搜尋歷史記錄 - 在樹狀檢視中快速重新執行先前的搜尋。
- 更好的終端機連結偵測 - 偵測包含空格、括號、行和列格式的連結。
- 新的 Git 命令 - 從 VS Code 內暫存已預備的變更並刪除遠端標籤。
- Dark+ 和 Light+ V2 主題 - 試用實驗性色彩主題,並讓我們知道您的想法。
- Jupyter 筆記本主題 - 在網頁上使用筆記本、如何管理 Jupyter 核心。
- VS Code 中的 AI 工具 - 了解使用 GitHub Copilot 的 AI 驅動完成功能。
如果您想在線上閱讀這些版本發行說明,請前往 更新,網址為 code.visualstudio.com。
Insiders: 想要盡快試用新功能嗎?您可以下載每晚 Insiders 組建,並在最新更新可用時立即試用。
內務處理
在先前的版本發行說明中,團隊報告了我們的內務處理工作,我們也想在此處進行相同的報告。
正如我們在 2022 年 11 月宣布的那樣,我們在 12 月使用了內務處理我們的 GitHub 問題和提取請求(請參閱我們的 問題清理指南)。在我們所有的儲存庫中,我們淨減少了 3637 個開放問題和提取請求。不出所料,絕大部分的減少發生在我們的前 5 大儲存庫中:microsoft/vscode (2520)、microsoft/vscode-jupyter (374)、microsoft/vscode-remote-release (278)、microsoft/vscode-python (220) 和 microsoft/vscode-pull-request-github (160)。
協助工具
Diff 導航改進
跳到下一個/上一個變更 現在具有音訊提示,以指示是否插入、刪除或修改了行。此外,變更的行會被選取,以便螢幕閱讀器可以讀取。
終端機協助工具模式
終端機:焦點放在協助工具緩衝區 (⌥F2 (Windows Alt+F2, Linux Shift+Alt+F2)) 命令允許螢幕閱讀器通過鍵盤在終端機緩衝區中導航。
終端機協助工具說明
與編輯器中的 顯示協助工具說明 命令類似,終端機:顯示終端機協助工具說明 () 命令為螢幕閱讀器使用者提供重要資訊。
工作區信任編輯器快速鍵
為了改善 工作區信任 編輯器的鍵盤協助工具,可以通過 工作區:管理工作區信任 開啟,您現在可以使用 Ctrl/Cmd+Enter
通過鍵盤切換目前工作區的信任狀態,或使用 Ctrl/Cmd+Shift+Enter
切換父資料夾的信任狀態。
改善設定編輯器指示器的鍵盤導航
對於具有多個指示器的設定,例如「在其他地方修改」指示器和「預設值已變更」指示器,現在使用左右箭頭鍵在指示器之間導航。此變更允許使用者通過單擊 Tab
鍵跳出指示器。
設定檔
我們很高興宣布 設定檔 功能現在已在 VS Code 中正式推出。設定檔可以包括擴充功能、設定、鍵盤快速鍵、UI 狀態、任務和使用者程式碼片段。您可以為不同的開發情境自訂 VS Code,例如資料科學、文件撰寫,或針對多種程式語言,例如 Python 或 Java。如果您有基於工作流程(例如「工作」或「示範」)的不同 VS Code 設定,您也可以將這些設定儲存為不同的設定檔。您可以同時開啟套用不同設定檔的多個工作區(資料夾)。
下圖示範使用為工作設定自訂的 工作 設定檔開啟的資料夾。
您也可以匯出和匯入設定檔,以便與您的同事、朋友或學生分享,以幫助他們開始使用 VS Code。
以下影片示範如何使用 GitHub gist 匯出設定檔,以便與他人分享。收到設定檔連結的使用者可以在 VS Code for the Web 中預覽共用的設定檔,並將其匯入到他們的本地 VS Code 實例。
注意:設定檔目前在遠端情境中無法運作,例如 GitHub Codespaces,但我們正在努力啟用此功能。您可以在 問題 #165247 中追蹤進度。
工作台
改善的多視圖調整大小支援
您現在可以通過拖曳視圖的角落,同時調整多個視圖的大小。
改善的網格佈局
如果編輯器最小化,則在調整整個工作台或側邊欄的大小時,網格現在將保留該狀態。在下面的短片中,右側最小化編輯器的寬度在整體編輯器區域展開時保持不變。
從「自訂佈局」命令還原預設值
當使用自訂 自訂佈局 命令時,無論是通過觸發命令還是使用自訂標題欄中的佈局控制項,您都可以使用佈局控制項右上角的還原箭頭按鈕 還原預設值。
從面板管理面板對齊方式
您現在可以直接從面板上下文選單調整面板對齊方式,就像面板位置一樣。
簡化的「喜好設定」選單
我們為您的全域設定簡化了 喜好設定 選單,並將選項組織成更符合邏輯的順序和分組。
樹狀檢視尋找歷史記錄
樹狀檢視內的「尋找」控制項現在支援歷史記錄導航。您可以使用向上/向下箭頭鍵瀏覽您先前的搜尋歷史記錄。
樹狀檢視尋找連續匹配
樹狀檢視「尋找」控制項現在支援連續匹配以及現有的「模糊」匹配。在下面的影片中,最初搜尋 "src"
時,會找到例如 "resource"
之類的匹配項。當通過 模糊匹配 切換按鈕停用「模糊」匹配時,僅突出顯示具有連續文字 "src"
的文字。
列表按頁滾動
新的設定 workbench.list.scrollByPage
允許您設定在直接點擊滾動條時,列表是否應按頁滾動。
列表類型導航模式
新的 workbench.list.typeNavigationMode
設定允許您設定列表的類型導航模式。預設情況下(設定值 automatic
),導航會在您輸入時在列表和樹狀結構中發生。如果您偏好僅在特定時間啟用導航,您可以將 typeNavigationMode
設定為 trigger
,列表將僅在 list.triggerTypeNavigation
命令運行後進入類型導航模式。
命令 list.triggerTypeNavigation
預設沒有快速鍵,但您可以添加自己的快速鍵。例如,如果您想在按下 /
鍵後進入類型導航模式,您可以添加類似以下的快速鍵
{
"key": "/",
"command": "list.toggleKeyboardNavigation",
"when": "listFocus"
}
開啟大型檔案的新確認
為了防止意外開啟非常大型的檔案,特別是在遠端環境中,由於網路傳輸可能產生實際成本,因此在開啟檔案之前會顯示確認訊息。限制可以通過新的 workbench.editorLargeFileConfirmation
設定修改,並且基於開啟本地檔案與遠端檔案具有不同的預設值。
檔案監視器支援 files.watcherExclude glob 模式
files.watcherExclude
設定支援 glob 模式,用於檔案監視器的強大排除規則。但是,glob 模式尚未被用於檔案監視的函式庫原生支援。在這個里程碑中,我們 貢獻了 對 glob 模式的支援,用於排除,以更有效地使用資源,特別是在 Linux 上。
對於 Linux,如果您看到檔案監視問題,請參考此 FAQ 條目 以獲取更多資訊。
鍵盤快速鍵編輯器改進
顯示貢獻快速鍵的擴充功能
鍵盤快速鍵編輯器現在在 來源 欄中顯示貢獻快速鍵的擴充功能。您可以選取擴充功能名稱以開啟擴充功能的詳細資訊頁面。
您也可以使用擴充功能上下文選單中可用的 擴充功能鍵盤快速鍵 動作,搜尋由擴充功能貢獻的任何快速鍵。
顯示 when 子句屬性的上下文鍵建議
鍵盤快速鍵編輯器現在顯示 when
屬性的上下文鍵建議。您可以使用 Ctrl+Space
快速鍵觸發建議。
搜尋帶有和弦的快速鍵
鍵盤快速鍵編輯器現在支援搜尋帶有和弦的快速鍵。例如,"Ctrl+K"
也會顯示所有以 Ctrl+K
作為第一個和弦的快速鍵。
設定組態 shell 環境解析逾時
新的設定 application.shellEnvironmentResolutionTimeout
(僅限 macOS 和 Linux)允許您在需要時增加解析 shell 環境的逾時時間。預設情況下,VS Code 將等待最多 10 秒來解析環境,但在某些情況下,對於更複雜的 shell 設定,這可能不夠時間。
參考此 FAQ 條目 以獲取有關 VS Code 如何解析 shell 環境的更多資訊。
新的 VSCODE_RESOLVING_ENVIRONMENT 環境變數
當 VS Code 解析使用者 shell 環境時,它現在將設定一個新的環境變數 VSCODE_RESOLVING_ENVIRONMENT
為 1
。對於需要知道它們是否在解析 shell 環境的上下文中運行的使用者腳本(例如,在 .bashrc
中)很有用。
更新後更輕鬆地選擇退出版本發行說明
您現在可以直接從版本發行說明編輯器選擇退出在每次更新後閱讀版本發行說明。這將反映並更新 update.showReleaseNotes
設定。
編輯器
建議選取模式
有一個新的設定 (editor.suggest.selectionMode
) 允許您設定建議是在您輸入時自動選取,還是通過觸發字元選取。
預設是始終選取最佳建議,以便按下 Enter
或 Tab
鍵插入它。如果您偏好不選取建議,請將值設定為 never
、whenQuickSuggestion
或 whenTriggerCharacter
。使用這些設定值時,建議仍將顯示,但不會自動選取,您可以使用箭頭鍵選取一個。
請注意,此設定僅適用於自動建議,不適用於當您通過 Ctrl+Space
明確觸發它們時顯示的建議。
程式碼動作列表現在可滾動
某些擴充功能會產生長程式碼動作列表。如果沒有空間呈現所有程式碼動作,您現在可以滾動瀏覽列表
色彩裝飾器限制
編輯器中顯示的色彩裝飾器數量限制為 500。這是為了防止開啟包含大量色彩的檔案時出現效能問題。此限制現在可以通過 editor.colorDecoratorsLimit
設定組態。
編輯器尋找跳到匹配項
新的 跳到匹配項... 命令允許您在「尋找」控制項開啟時,根據計數跳到檔案中的特定匹配項。當您有大量匹配項並想要跳到特定一個時很有用。
重新設計的內嵌建議工具列
在這個里程碑中,我們重新設計了內嵌建議工具列,使其更緊湊且更易於使用。它具有按鈕,可快速循環瀏覽替代建議,並接受完整建議或逐字建議。
在下面的影片中,使用者查看由 GitHub Copilot 提供的兩個建議,在註解提示上觸發,然後逐步接受第一個 console
和下一個單字 console.log
。
設定 "editor.inlineSuggest.showToolbar": "always"
可用於在內嵌建議可用時始終顯示工具列。
我們還添加了用於逐字接受/取消建議的預設快速鍵 (Ctrl+向左/向右箭頭
)。
終端機
新的預設快速鍵
已添加以下預設快速鍵,以提高進階終端機功能的發現性
開啟偵測到的連結 - Ctrl/Cmd+Shift+O
開啟偵測到的連結 命令 (⇧⌘G (Windows, Linux Ctrl+Shift+G)) 是以鍵盤存取方式開啟終端機連結的方法。該命令會開啟一個快速選取,其中包含終端機視窗中所有可用的連結。
之所以選擇 ⇧⌘G (Windows, Linux Ctrl+Shift+G) 快速鍵,是因為它與 跳到編輯器中的符號 的動作類似,但適用於終端機。
跳到最近的目錄 - Ctrl/Cmd+G
跳到最近的目錄 (⌘G (Windows, Linux Ctrl+G)) 會開啟一個快速選取,其中包含最近的目錄,由 shell 整合 拾取。它支援釘選和模糊匹配。
之所以選擇此快速鍵,是因為 Ctrl+G 是一個相對低使用率的 shell 快速鍵。
將 Ctrl+G 發送到 shell - Ctrl/Cmd+Alt+G
由於 Ctrl+G 現在用於 跳到最近的目錄,因此使用 Ctrl+Alt+G 是將 Ctrl+G 直接發送到 shell 的新方法。
執行最近的命令 - Ctrl/Cmd+Alt+R
執行最近的命令 (⌃⌥R (Windows, Linux Ctrl+Alt+R)) 會開啟一個快速選取,其中包含已運行的最近命令,模仿大多數 shell 的反向索引搜尋 (Ctrl+R),但在更易於存取且功能更強大的套件中。它支援釘選和模糊匹配。
之所以選擇 ⌃⌥R (Windows, Linux Ctrl+Alt+R) 快速鍵,是因為它是 Ctrl+R 的替代行為,但該快速鍵太重要,無法覆蓋其預設行為。
協助工具模式覆寫
由於反向索引搜尋對於螢幕閱讀器來說不是很易於存取,因此當協助工具模式開啟時,Ctrl+R 將觸發 執行最近的命令,而 Ctrl+Alt+R 將發送 Ctrl+R 到 shell。
連結改進
這個版本中終端機的連結偵測有很多改進
-
在某些情況下,會偵測到包含空格的連結
- 當整行都是連結時。
- Python 風格的堆疊追蹤連結:
File "<path>", line <line>
- 一些編譯器錯誤:
<path>(<line>,<col>) : ...
- 獨立樣式的文字區段都會獨立偵測,因此如果路徑已底線標示,即使它有空格也應偵測到。
-
包含
[
和]
字元的連結現在可以運作,它們甚至支援在像這樣的困難邊緣情況下進行偵測 -
vscode://
協定連結現在已偵測到。 -
在 Windows 上,
/mnt/
、\\wsl$\
和\\wsl.localhost\
連結現在已偵測到。 -
OSC 超連結支援已在 v1.72 中添加,這些連結中常用的
file://
協定現在已支援(例如ls --hyperlink
)。 -
terminal.integrated.enableFileLinks
設定現在具有"notRemote"
選項,允許僅在檔案存在性檢查可能導致效能問題的遠端條件下有條件地停用它。
大多數連結格式也一致地支援以下行和列格式
<file>:<line>
<file>:<line>:<column>
<file> <line>
<file> <line>:<column>
<file>(<line>)
<file>(<line>,<column>)
<file>(<line>, <column>)
<file> (<line>)
<file> (<line>,<column>)
<file> (<line>, <column>)
- 單引號或無引號也適用於這些
"<file>",<line>
"<file>",<line>:<column>
"<file>", line <line>
"<file>", line <line>, col <column>
"<file>", line <line>, column <column>
"<file>":line <line>
"<file>":line <line>, col <column>
"<file>":line <line>, column <column>
"<file>": line <line>
"<file>": line <line>, col <column>
"<file>": line <line>, column <column>
"<file>" on line <line>
"<file>" on line <line>, col <column>
"<file>" on line <line>, column <column>
終端機編輯器檔案拖放支援
終端機編輯器現在支援在按住 Shift 鍵的同時拖放,以將檔案寫入終端機,而不是開啟編輯器。
「不安全」設定檔偵測
由於 安全漏洞,Windows 上 Cygwin shell 的偵測最近已移除。在此版本中,我們以更安全的形式將其帶回,並偵測更多 shell 設定檔,包括 Cygwin、Cmder 和 MSYS2。為了減輕安全問題,在使用這些設定檔之一之前,必須通過 選取預設設定檔 命令進行組態
選取後,在將其添加到您的 settings.json
檔案並像常規設定檔一樣運作之前,將顯示警告
如果電腦不是由多個使用者使用,則可以安全地忽略此警告,例如在公司環境中。
在終端機視圖中切換命令
長期以來的要求是將 清除終端機 命令添加到終端機視圖動作中,但我們一直擔心 UI 中的膨脹。借助新的內部功能,我們有了新的預設隱藏動作,這些動作會出現在溢位選單中,但可以通過右鍵點擊切換以顯示
Ctrl+C 在 Windows 上放棄選取
Windows 在複製選取和將 SIGINT 發送到 shell 之間共享 Ctrl+C,具體取決於是否有選取。常見的煩惱是,如果您意外地進行了選取,Ctrl+C 可能不會發送 SIGINT。為了幫助減輕此問題,用於複製選取的 Ctrl+C 現在也將清除選取,因此按兩次 Ctrl+C 將可靠地發送 SIGINT 1 或 2 次。
添加終端機制表位大小設定
有一個新的設定 terminal.integrated.tabStopWidth
,用於組態終端機的制表位寬度。當程式輸出 \t
字元而不是在其組態中組態制表位大小時很有用。
Powerline 三角形和對角線自訂字形
GPU 加速終端機現在為三角形和對角線 Powerline 額外符號字形 (U+E0B8-U+E0BF
) 獲得像素完美的自訂字形。這些字元在它們是單寬度還是雙寬度字元方面是模稜兩可的,並且根據使用的字體而異,因此我們選擇將它們渲染為單寬度。
之前
之後
在「在活動終端機中執行選取的文字」中使用的括號貼上模式
在活動終端機中執行選取的文字 命令現在將在支援的 shell 中使用「括號貼上模式」運行文字,因此多行選取將被視為單個輸入,而不是多個命令。這使得運行實際腳本更加直觀,且錯誤更少發生。
之前
之後
Pwsh 預覽回饋提供者的快速修復
PowerShell 預覽最近實作了一個新的 可插拔回饋提供者系統,該系統允許在命令失敗時列印建議
終端機現在從 [General]
和 [cmd-not-found]
回饋提供者中提取快速修復。可以通過點擊燈泡或通過 Ctrl/Cmd+.
開啟「快速修復」對話方塊。
原始碼控制
新命令
Git 2.35 為 git stash
命令引入了新的 --staged
模式。這種新模式允許您輕鬆地僅暫存已預備的變更。如果您有支援此新模式的 Git 版本,則可以使用新的 Git:暫存已預備 命令來利用它。
VS Code 已經支援使用 Git:刪除標籤 命令刪除本地標籤。在這個里程碑中,我們啟用了使用新的 Git:刪除遠端標籤 命令刪除遠端標籤。
父資料夾中的 Git 儲存庫
VS Code 使用 git rev-parse --show-toplevel
來確定 Git 儲存庫的根目錄。在大多數情況下,Git 儲存庫的根目錄在工作區內,但在某些情況下,Git 儲存庫的根目錄在工作區或已開啟檔案的父資料夾中。在工作區或已開啟檔案的父資料夾中開啟 Git 儲存庫對於進階使用者來說是一個很棒的功能,但對於新使用者來說可能會造成混淆。我們已經看到過這種混淆導致丟棄來自這些 Git 儲存庫的變更,從而導致資料丟失的情況。
為了避免混淆並降低資料丟失的風險,從這個里程碑開始,VS Code 將在「原始碼控制」視圖中顯示通知和新的歡迎視圖,並且不會自動從工作區和已開啟檔案的父資料夾中開啟 Git 儲存庫。
主題:Dark+ V2,搭配 MacOS Modern 產品圖示
開啟儲存庫 按鈕將開啟一個快速選取,其中包含在工作區或已開啟檔案的父資料夾中發現的所有 Git 儲存庫的列表。從父資料夾開啟 Git 儲存庫的選擇會被記住。
使用者可以使用 git.openRepositoryInParentFolders
設定控制如何處理來自父資料夾的 Git 儲存庫。想要還原舊行為的使用者可以將 git.openRepositoryInParentFolders
設定設定為 always
。
命令停用
基於 Git 儲存庫的大小或各種 Git hooks 的存在,某些 Git 操作可能需要很長時間才能完成。我們過去已經看到,在前一個命令仍在進行中時啟動命令可能會導致意外結果(例如,在提交操作正在進行時丟棄檔案上的變更)。
為了防止這種情況,我們在以下操作正在進行時停用大多數 Git 命令:簽出
、提交
、推送
和 拉取
。這意味著在這些操作運行時,大多數 Git 命令將不會出現在命令面板中,並且將在「原始碼控制」視圖和狀態列中停用。
使用者介面改進
在這個里程碑中,我們潤飾了一些「原始碼控制」使用者介面元素
- 「原始碼控制」視圖中 提交 和 發布分支 動作按鈕的工具提示現在包含分支名稱。
- 簽出 狀態列項目現在根據簽出的 ref 類型(分支、標籤或提交)使用不同的圖示。
- 簽出 狀態列項目現在在簽出操作正在進行時顯示旋轉的進度圖示。
筆記本
核心選取器改進
我們繼續改進 MRU(最近使用)核心選取器。可以通過將 notebook.kernelPicker.type
設定為 mru
來啟用。未使用的核心將移動到輔助選取器 選取另一個核心...。當您安裝了最新的 Jupyter 和 Python 擴充功能時,選取器將按其來源(例如:Jupyter 核心、Python 環境等)對所有核心進行分組。
加入選取的儲存格
有一個新的命令 加入選取的儲存格 (kb(notebook.cell.joinSelected
)`),用於將多個選取的儲存格合併為一個儲存格。
將輸出回退渲染為支援的 mimetype
Jupyter 筆記本中的豐富輸出(例如 IPyWidgets)僅在核心的生命週期內可見。這意味著當筆記本關閉並再次重新開啟時,輸出不再可見。但是,在許多情況下,可以使用回退機制渲染輸出。例如,IPyWidget 在某些情況下(取決於使用的 widget)可以渲染為靜態圖像或 HTML 內容。
結果,開啟具有 matplotlib widget(或類似 widget)的現有筆記本的使用者現在可以看到輸出,而無需重新執行程式碼。
新文件
有兩個新主題可幫助您在 VS Code 中使用 Jupyter 筆記本。
- 網頁版 Jupyter Notebooks - 在 vscode.dev 或 GitHub Codespaces 上執行 notebook。
- 管理 Jupyter Kernel - 了解如何將您的 notebook 連接到各種 Jupyter kernel。
除錯
JavaScript 除錯
改善 Node.js 啟動效能
用於 Node.js 除錯的「中斷點預測器」已重新編寫和改進,可大幅提高大型專案的速度。例如,在 TypeScript repo 中除錯單元測試時,啟動時間的額外負擔減少了 62%,而在 VS Code repo 中除錯和啟動建置的額外負擔減少了 80%。
如果您遇到諸如中斷點未命中的問題,請提交 issue。您可以透過在 launch.json
中設定 "enableTurboSourcemaps": false
來停用此新行為,但是隨著我們獲得信心,此選項最終將被移除。
語言
JavaScript React 語言標籤現在是 JavaScript JSX
JavaScript React
語言模式已重新命名為 JavaScript JSX
,以反映 JSX 語法不僅僅用於 React。TypeScript React
也已重新命名為 TypeScript JSX
。
請注意,只有 UI 中顯示的語言名稱已變更。為了相容性,內部語言 ID (javascriptreact
和 typescriptreact
) 保持不變。
新的 shellscript 文法
VS Code 現在使用來自 better-shell-syntax 的新文法,用於 shellscript 語法突顯。
擴充功能
VS Marketplace 擴充功能簽署
從 2022 年 11 月開始,上傳到 Visual Studio Marketplace 的每個擴充功能都由 VS Marketplace 進行程式碼簽署。當使用者透過 VS Code 的擴充功能檢視安裝已簽署的擴充功能時,VS Code 將驗證簽章,從而證明該擴充功能確實來自 VS Marketplace,並且擴充功能套件未被修改。如果簽章驗證失敗,VS Code 將不會安裝該擴充功能。
VS Marketplace 正在簽署所有現有的擴充功能 (包括自 11 月以來未更新的擴充功能)。一旦此過程完成,在幾個月後,VS Code 將要求所有來自 VS Marketplace 的擴充功能都必須由 VS Marketplace 簽署。此要求將保證每個來自 VS Marketplace 的套件的完整性,從而提高我們擴充功能生態系統的整體安全性。
注意:擴充功能作者無需執行任何操作即可選擇加入 Marketplace 簽署。除了 Marketplace 簽署之外,我們目前正在進行發行者簽署。有關發行者簽署的更多資訊,請參閱討論 #137。
從 CLI 固定擴充功能版本
當您從 CLI 安裝特定版本的擴充功能 (code --install-extension {publisher}.{name}@{version}
) 時,它現在將固定到該版本。這表示當您啟用自動更新時,該擴充功能將不會自動更新。
同步固定的擴充功能版本
設定同步現在將同步固定的擴充功能版本。這表示當您在一台機器上安裝特定版本的擴充功能時,它將在您同步到的所有其他機器上固定到該版本。
擴充功能貢獻
Python
當 VS Code 從已啟用的終端機啟動時自動選取環境
如果使用者透過已啟用 conda 或虛擬環境的終端機啟動 VS Code,Python 擴充功能現在會偵測到這一點,然後自動選取環境本身,或詢問使用者是否要將該環境設為選取的環境;取決於環境而定。
建立環境時選取 requirements 檔案
當使用Python:建立環境命令建立虛擬環境時,Python 擴充功能現在會在工作區資料夾中尋找 requirement 檔案,並允許使用者多重選取任意數量的 requirement 檔案以進行安裝。
從 pyproject.toml 選取選用相依性
Python 擴充功能會偵測並載入 pyproject.toml
檔案的 [project.optional-dependencies]
部分中提供的選用相依性。如果我們偵測到工作區包含 pyproject.toml
以及任何選取的選用相依性,我們將使用 pip 可編輯安裝命令。
Pylance 的自動縮排
當為 Python 檔案啟用 editor.formatOnType
設定時,Pylance 將在輸入程式碼時自動縮排程式碼,讓您可以更專注於程式碼的邏輯,而減少關注格式。
若要試用,請透過將以下內容新增至您的使用者 settings.json
檔案,為 Python 檔案啟用 formatOnType
"[python]": {
"editor.formatOnType": true,
},
即時預覽
外部瀏覽器預覽設定
即時預覽擴充功能現在可讓您在預設瀏覽器以外的瀏覽器中開啟外部瀏覽器預覽。使用 livePreview.customExternalBrowser
設定,您可以將外部預覽設定為在以下瀏覽器中開啟
- Microsoft Edge
- Google Chrome
- Mozilla Firefox
- 您的預設瀏覽器
伺服器根目錄設定
您現在可以將伺服器的根路徑設定為工作區中的子資料夾。例如,您可以透過將 livePreview.serverRoot
設定為 "src"
,要求即時預覽從工作區中的 src
資料夾提供檔案。
ESLint
ESLint 擴充功能已更新至 2.4.0 版。主要新功能如下
-
支援新的實驗性 flat config 檔案。您需要在 VS Code 中使用設定
eslint.experimental.useFlatConfig
單獨啟用支援。需要 ESLint 8.21 或更高版本。 -
ESLint 狀態指示器已移至 VS Code 的語言狀態區域。因此,已移除設定
eslint.alwaysShowStatus
。請改用 VS Code 的釘選功能。語言狀態項目現在將在儲存期間計算程式碼修正時,通知您驗證時間過長和 ESLint 執行時間過長。可用時間預算 (以毫秒為單位) 可以透過兩個設定
eslint.timeBudget.onValidation
和eslint.timeBudget.onFixes
控制。 -
可以使用新的設定
eslint.problems.shortenToSingleLine
將長問題波浪線縮短為單行。
GitHub Pull Requests 和 Issues
在 GitHub Pull Requests 和 Issues 擴充功能上取得了更多進展,該擴充功能可讓您處理、建立和管理 pull request 和 issue。重點包括
- 支援建議和接受變更。
- 註解中的 GitHub 處理現在已連結。
- 標籤可以在建立時新增至 PR。
- 實驗性設定
githubPullRequests.experimental.quickDiff
將在編輯器裝訂區中顯示已簽出 PR 中已變更行的快速差異檢視。
查看擴充功能 0.58.0 版本的變更記錄,以查看其他重點。
GitHub Copilot
GitHub Copilot 擴充功能是一種由 AI 驅動的程式碼完成工具,可協助您更快、更聰明地編寫程式碼。您可以使用 VS Code 中的 Copilot 擴充功能來產生程式碼,或從其產生的程式碼中學習。
GitHub Copilot 透過 內嵌建議 UI 整合到 VS Code 編輯器中,可讓您檢閱各種建議並輕鬆接受全部或部分產生的程式碼。
GitHub Copilot 現在已普遍適用於企業,具有授權管理、組織範圍的原則控制和隱私保護等功能。您可以在 GitHub Copilot for Business 公告中了解更多資訊。
若要開始使用,您可以在 GitHub Copilot 網站上註冊免費試用。
我們還在 VS Code 文件中新增了新的 VS Code 中的 GitHub Copilot 主題,這將協助您開始使用 Copilot。
遠端開發
遠端開發擴充功能,可讓您使用容器、遠端機器或 Windows Subsystem for Linux (WSL) 作為功能完整的開發環境。此版本的重點包括
- Dev Container 支援多個
devcontainers.json
檔案。 - Docker 認證轉發。
- X11 和 Wayland 轉發
您可以在 遠端開發版本注意事項中了解新的擴充功能功能和錯誤修正。
遠端通道
睡眠抑制
遠端通道現在可以防止電腦在 Windows、macOS 和基於 systemd 的 Linux 系統上進入睡眠狀態。如果您離開桌面進行遠端工作,並希望確保通道保持可存取狀態,這會很有用。若要使用此功能
- 從 VS Code UI 開啟遠端通道存取時,請將設定
remote.tunnels.access.preventSleep
更新為true
。 - 在 CLI 上使用
code tunnel
時,請傳遞--no-sleep
旗標。
可靠性改進
已修正遠端通道中的幾個與連線相關的問題,這應可提高可靠性。
繼續在…上工作
「繼續在…上工作」功能支援在本地視窗中的 Git 儲存庫中啟動,並在遠端視窗 (例如 GitHub Codespace) 中繼續。如果您在尚未發佈到遠端的 branch 上,當您選擇在不同的開發環境中繼續工作時,現在將自動提示您發佈目前的 branch,以便您可以在其他地方存取完整的 branch 內容。
此外,當您在遠端視窗中的 Git 儲存庫中時,您現在可以使用繼續在新本地複本中工作命令,在 VS Code Desktop 上的新本地 Git 複本中繼續工作。
最後,所有在本地、遠端或網頁視窗中繼續工作的選項現在都方便地顯示在遠端指示器中。這些選項也可用於命令面板中。
預覽功能
Dark+ V2 和 Light+ V2 實驗性佈景主題
現在可以使用兩個新的色彩佈景主題:Dark+ V2 和 Light+ V2。這些佈景主題是現有 Dark+ 和 Light+ 佈景主題的演進,旨在更易於存取,並讓 VS Code 看起來比以往更好!這些佈景主題仍標記為實驗性,我們正在尋求早期回饋。
您可以在佈景主題選取器中找到新的佈景主題,它們列為Light+ V2 (Experimental) 和 Dark+ V2 (Experimental) (偏好設定:色彩佈景主題 ⌘K ⌘T (Windows、Linux Ctrl+K Ctrl+T))。
TypeScript 5.0 支援
此更新包含對即將推出的 TypeScript 5.0 版本的支援。請參閱 TypeScript 5.0 迭代計畫,以取得有關 TypeScript 團隊目前正在進行的工作的更多詳細資訊。一些編輯器工具重點
- 新的
switch
和case
完成功能可協助您更快速地填寫switch
陳述式的兩個區段。 - 在 github.dev 和 vscode.dev 上啟用專案範圍的 IntelliSense 的工作。
若要開始使用 TypeScript 5.0 每夜建置版本,請安裝 TypeScript Nightly 擴充功能。
命令面板中的「常用」區段
在此里程碑中,我們在命令面板中新增了一個新的「常用」區段。此區段的目標是協助新使用者更好地了解命令面板的用途及其功能。
佈景主題:Panda Theme (在 vscode.dev 上預覽)
此區段將顯示在「最近使用」區段下方,因此不會破壞肌肉記憶,並且隨著您執行越來越多的命令並熟悉 VS Code,該區段會消失 (因為「常用」命令會移至「最近使用」) 或該區段位於下方且超出視線範圍。
佈景主題:Panda Theme (在 vscode.dev 上預覽)
目前,我們已將此新體驗放在設定 workbench.commandPalette.experimental.suggestCommands
後面,但我們計劃在不久的將來使其成為預設行為。請告訴我們您的想法!
擴充功能撰寫
註解執行緒狀態
CommentThread
state
API 已定案。此 API 控制註解是否呈現為已解決或未解決,並可能影響註解檢視中的篩選。您可以在 issue #127473 中了解有關如何使用 API 的更多資訊。
忽略要同步的設定
您現在可以使用 ignoreSync
屬性在註冊設定時,預設隱藏設定同步中的設定。這對於不應跨機器同步的設定很有用。
遙測
新的 TelemetryLogger
API 已定案。此 API 旨在讓擴充功能作者更輕鬆地使用遙測,並對終端使用者更安全。API 啟用諸如內建密碼清理、遙測輸出通道、錯誤處理常式和自動遙測層級管理等功能。這應可產生更具凝聚力的遙測體驗,並保證符合我們的要求。
建議的 API
每個里程碑都附帶新的建議 API,擴充功能作者可以試用它們。與往常一樣,我們希望收到您的回饋。以下是試用建議 API 的步驟
- 尋找您要試用的提案,並將其名稱新增至
package.json#enabledApiProposals
。 - 使用最新的 vscode-dts 並執行
vscode-dts dev
。它會將對應的d.ts
檔案下載到您的工作區中。 - 您現在可以針對提案進行程式設計。
您無法發佈使用建議 API 的擴充功能。下一個版本中可能會出現重大變更,而我們絕不希望破壞現有的擴充功能。
讓 notebook 轉譯器回退到不同的 mimetype
有時在轉譯內容時,notebook 轉譯器可能會意識到它無法正確轉譯項目。例如,轉譯器可能要求 kernel 處於特定狀態。
先前對於這種情況,轉譯器的唯一選項是轉譯錯誤訊息。我們新增了一個新的建議 API,讓轉譯器可以擲回一個特殊命名的錯誤,導致 VS Code 靜默回退到轉譯 notebook 輸出項目上儲存的其他資料。例如,互動式圖表轉譯器可以擲回此錯誤,使 VS Code 回退並轉譯也儲存在目前輸出項目上的影像資料。
若要觸發此回退,請在 renderOutputItem
中擲回名稱為 vscode.fallbackToNextRenderer
的錯誤
throw new class extends Error {
override name = 'vscode.fallbackToNextRenderer';
}();
此特殊錯誤僅適用於預期在某些情況下轉譯會失敗的情況。如果您的轉譯器遇到非預期的錯誤,它應繼續顯示錯誤訊息。
快速差異
快速差異是裝訂區裝飾,顯示在編輯器中新增、變更和刪除的行上,目前僅供 SCM 提供者使用。建議的快速差異 API 允許在 SCM 提供者外部使用快速差異。以下範例來自 GitHub Pull Request 擴充功能,該擴充功能使用快速差異 API 來顯示 PR 中變更行的快速差異
vscode.window.registerQuickDiffProvider(
{ scheme: 'file' },
{
provideOriginalResource: (uri: vscode.Uri) => {
const changeNode = this.reviewModel.localFileChanges.find(
changeNode => changeNode.changeModel.filePath.toString() === uri.toString()
);
if (changeNode) {
return changeNode.changeModel.parentFilePath;
}
}
},
'GitHub Pull Request',
this.repository.rootUri
);
完整提案位於 quickDiffProvider.d.ts。
持續測試執行
持續測試執行允許測試擴充功能指示它們能夠在變更發生時監看和重新執行測試。支援此 API 只是在您的測試執行設定檔上指示支援的問題…
const profile = controller.createRunProfile('Run', TestRunProfileKind.Run, runHandler);
+profile.supportsContinuousRun = true;
然後在 runHandler 中檢查該支援
const runHandler = (request: TestRunRequest, token: CancellationToken) => {
+ if (request.continuous) {
+ return watchForFileChangesThenRunTests(request, token);
+ }
}
完整提案位於 testContinuousRun.d.ts。
工程
擴充功能主機的公用程式處理程序
進程沙箱所需的擴充功能主機的公用程式處理程序使用現在預設為啟用。仍然有一個設定 (extensions.experimental.useUtilityProcess
),我們將很快移除它。
透過命令列進行效能測試
我們引入了以下 node 模組,以從命令列執行一組效能測試。
vscode-bisect - 此模組可協助我們快速測量效能回歸。執行 npx vscode-bisect --help
以了解如何操作此工具。
vscode-perf - 此模組可協助我們測量 VS Code 的效能。npx vscode-perf --help
描述如何操作此工具。
GB18030 認證
VS Code 現在已通過 GB18030 認證 - 這表示中國政府內的認證委員會已確認 VS Code 可以正確表示所有範圍的漢字。測試涵蓋所有內建使用情境。透過 VS Code 認證,核心 Visual Studio 系列 (包括 Visual Studio 和 Visual Studio for Mac) 已通過 GB18030 認證。
遷移到 ESM
我們已開始將我們的程式碼庫遷移到 ESM 的旅程。VS Code 專案早於原生模組 (ESM),並且我們一直使用非同步模組系統 (AMD) 暫時。AMD 一直為我們提供良好的服務,但現在是時候繼續前進了。我們已開始將我們的程式碼庫遷移到 ESM,我們正在取得良好的進展,並希望在未來幾個月內完成此項工作。
macOS 10.11 和 10.12 的 EOL 警告
VS Code desktop 將在接下來的幾個里程碑中更新到 Electron 22。透過 Electron 22 更新,VS Code desktop 將不再在 OS X El Capitan 和 macOS Sierra 上執行。在此里程碑中,我們已為這些受影響平台上的使用者新增了棄用通知,以讓他們為遷移做好準備。如果您是上述 OS 版本的用戶,請查看我們的 FAQ 以取得更多資訊。
改進系統和應用程式語言變數的使用
在先前的版本中,我們開始將應用程式語言傳遞到 Electron,以便它可以正確佈局某些元件,例如視窗控制項覆蓋 (WCO)。同時,語言推薦器依賴於系統語言,但 app.getLocale()
開始提取應用程式語言而不是系統語言,因此我們使用較新的 app.getPreferredSystemLanguages()
Electron API 來檢索系統語言以用於語言推薦器。結果,發生了擴充功能檢視中的擴充功能無法轉譯的回歸,因為新的 API 傳回了一些 toLocaleString()
無法剖析的值。
我們針對修復版本推送的立即解決方案是還原回 app.getLocale()
並暫時中斷語言推薦,但事實證明程式碼庫的許多區域也應該一直使用應用程式語言變數而不是系統語言變數。
此版本將許多系統語言的使用替換為應用程式語言。反過來說,日期現在應以更符合應用程式語言而不是系統語言的格式進行本地化。
重要修正
- 99878 使用 environmentVariableCollection 在 macOS 上預先設定 PATH env var 無效
- 153786 具有開啟差異編輯器的任一側的命令
- 165123 允許使用兩個未命名的側邊開啟差異編輯器
- 167004 輸出:顯示輸出通道 顯示輸出通道的命令
- 167528 擴充功能輸出通道的記錄層級在重新載入視窗後仍然存在
感謝您
最後但同樣重要的是,衷心感謝 VS Code 的貢獻者。
Issue 追蹤
對我們的 issue 追蹤的貢獻
- @gjsjohnmurray (John Murray)
- @IllusionMH (Andrii Dieiev)
- @ArturoDent (ArturoDent)
- @yume-chan (Simon Chan)
Pull request
對 vscode
的貢獻
- @a-stewart (Anthony Stewart):在 browser.ts 中使用 matchMedia 呼叫一致地指定視窗 PR #164020
- @Aaaaash (大表哥):修正
standaloneTheme.defines
始終傳回 false。 PR #169221 - @andschwa (Andy Jordan):修正 PowerShell 5.1 的 shell 整合 PR #170516
- @antonioprudenzano (Antonio Prudenzano):Feat/155294 PR #168513
- @babakks (Babak K. Shandiz)
- 在 markdown 語法 token 中包含波浪符號 (~) PR #146417
- 🖊 在 commit 按鈕彈出視窗中包含 branch 名稱 PR #167827
- 新增不選取監看式 PR #171449
- @Balastrong (Leonardo Montini):145458 清單:支援按頁捲動 PR #145788
- @chiefmikey (Mikl Wolfe)
- 移除 repository.ts 預設參數類型 PR #155908
- 更新 git config.followTagsWhenSync 定義 PR #155914
- @chouzz (Chouzz):修正 call hierarchy 和 type hierarchy api 的描述不正確 PR #167718
- @d1y (源来氏佐田):feat: screencast mode move scale PR #156084
- @davidwengier (David Wengier):更新 Razor repo PR #171560
- @dtivel (Damon Tivel)
- 擴充功能:在簽章驗證期間,針對 UnknownError 發出警告,而不是失敗 PR #169777
- 如果無法驗證擴充功能簽章,請勿封鎖 PR #172576
- @fadeevab (Alexander Fadeev):用於
else ifeq|ifneq|...
語法的 Makefile 測試 PR #170888 - @giannisp (Ioannis Poulakas):改善搜尋輸入的版面配置 PR #165989
- @gjsjohnmurray (John Murray)
- 將歷程記錄新增至新的清單/樹狀結構搜尋/篩選小工具 (#_155578) PR #159188
- 將「模糊比對」切換新增至樹狀結構尋找小工具 (#_116286) PR #164376
- 防止隱藏未解決的樹狀結構分支 PR #167047
- @gpoussel (Guillaume Poussel):新增刪除遠端標籤的命令 (修正 #104845) PR #134327
- @HKalbasi:修正 inlay hint 位置連結問題 PR #167886
- @hughlilly (Hugh Lilly):Copyedit:「按兩下」->「按兩下」 PR #166758
- @jakebailey (Jake Bailey):在 TS 使用者偏好設定中設定 disableLineTextInReferences=true PR #171376
- @jasonwilliams (Jason Williams):允許開啟差異編輯器的任一側作為編輯器 (修正 #153786) PR #165765
- @jeanp413 (Jean Pierre)
- 修正貼到快速大綱中不會顯示結果 PR #166835
- 修正編輯器區域終端機在結束後未還原 PR #168887
- 修正重新載入後還原的終端機/工作會忽略 confirmOnKill 和 confirmOnExit 設定 PR #168922
- 修正 createTerminal 不會在第一個編輯器群組中建立終端機 PR #169050
- @joshuaobrien:新增 git stash staged only 命令 PR #165649
- @laurentlb (Laurent Le Brun):命令持續時間:針對遙測使用更高的精確度 PR #167624
- @maIIady (Ilya Golovin):修正:使 git 命令可與鍵盤搭配使用 PR #159113
- @markw65:修正未自動啟動不同資料夾中同名工作的問題 PR #168742
- @MarkZuber (Mark Zuber):將高延遲測量儀器新增至網路協定 PR #168668
- @meskill:修正:nushell 整合 PR #169861
- @mkhl (Martin Kühl):透過
XDG_DATA_DIRS
公開 fish 整合設定 PR #168211 - @MonadChains (MonadChains)
- Issue 163528/建立編輯中斷點命令 PR #163734
- 在至少啟動過一次除錯時啟用中斷點檢視 PR #169077
- @mroch (Marshall Roch):修正 anyScore firstMatchCanBeWeak PR #168266
- @mueheg (Google Henrik):在選取範圍之前,請勿選取輸入方塊的完整內容,修正 #167266。 PR #167274
- @N1kO23:新增
${rootNameShort}
格式設定 PR #165744 - @ohah (ohah):screencast ime bug fix (#_165248) PR #165249
- @ookami-kb (Kirill Bubochkin):更新 shellIntegration.fish 以修正與 cwd 通訊時的錯誤 PR #168452
- @PEZ (Peter Strömberg):為狀態列項目啟用等寬數字 PR #167310
- @pokey (Pokey Rule):修正程式碼片段選項逸出的錯誤 PR #169287
- @probablykasper (Kasper):新增
terminal.integrated.tabStopWidth
選項 PR #170733 - @pzhlkj6612 (Mozi):終端機索引標籤:在重新命名期間停用拖曳和點擊 PR #166821
- @r3m0t (Tomer Chachamu):修正當擴充功能啟動緩慢時 webview 消失的問題 (#_168516) PR #168569
- @rezasoumi (RezCoder):問題 163803/ 在 create-branch-from... 中先選取 ref,然後選取名稱... PR #170908
- @rwe (Robert Estelle):shellIntegration-bash.sh:精確地保留 DEBUG trap 運算式 PR #165581
- @samdenty (Sam Denty):修正 IExtensionRecommendationReson 的錯字 PR #163889
- @Sean1708 (Sean Marshallsay):引入 VSCODE_RESOLVING_ENVIRONMENT 環境變數。 PR #168436
- @ssigwart (Stephen Sigwart)
- 在新增及移除群組或切換側邊欄時,保留最大化的群組大小 PR #137962
- 修正貼上時移除縮排的問題 PR #167687
- 新增 CamelCase 轉換 PR #169512
- @ste42 (Steven Tam):新增未命名 diff 命令 PR #168533
- @sumneko (最萌小汐):更新 Lua-grammar PR #167692
- @weartist (Han)
- 修正停用 diff 檢視中「下一個變更」迴圈的設定 #163331 PR #164225
- 適用於 #165169 的 Adapter css PR #167030
- 支援程序總管記住其位置和尺寸 PR #169090
- 在出現相同名稱的程式碼片段時,新增程式碼片段來源 PR #169119
- 將 applicationStorageMainService 取代為 stateMainService PR #169365
- @yiliang114 (易良):修正:錯字 PR #158431
- @zardoy (Vitaly):[typescript] 修正成員完成項目中潛在的
[object Object]
問題 PR #171127
對 vscode-css-languageservice
的貢獻
- @romainmenke (Romain Menke):新的 CSS 單位 PR #324
對 vscode-hexeditor
的貢獻
- @brabli (Bradley):在資料檢查器中新增目前位元組的八進位表示法 PR #410
對 vscode-json-languageservice
的貢獻
- @rahulbanerjee26 (Rahul Banerjee):檢查「not」規則的
errorMessage
屬性的結構描述 PR #164
對 vscode-languageserver-node
的貢獻
- @wkillerud (William Killerud):將 defaultBehavior 回應新增至 onPrepareRename PR #1161
對 vscode-pull-request-github
的貢獻
- @eamodio (Eric Amodio):更新 TypeScript (已發行 4.2) 和 Octokit (以取得修正的類型),以及其他一些小修正 PR #2525
- @sravan1946 (sravan):從 readme 移除無法使用的徽章 PR #4393
- @Thomas1664
對 debug-adapter-protocol
的貢獻
- @mfussenegger (Mathias Fußenegger):釐清 frame 上若缺少 canRestart 則表示為 true PR #365
對 monaco-editor
的貢獻
- @jonatanklosko (Jonatan Kłosko):更新 Elixir tokenizer PR #3453
- @rcjsuen (Remy Suen):修正色彩提供者的欄 PR #3348