🚀 在 VS Code 中

2020 年 10 月 (版本 1.51)

更新 1.51.1:此更新解決了這些問題

下載:Windows:x64 Arm64 | Mac:Intel | Linux:deb rpm tarball Arm snap


歡迎使用 Visual Studio Code 2020 年 10 月發行版本。如10 月迭代計畫中所宣布,我們專注於整理 GitHub 問題和提取請求,如我們的問題整理指南中所述。

我們也與 GitHub 的合作夥伴在 GitHub Codespaces 上合作,結果比原先預期的更複雜。因此,我們將在 11 月迭代的部分工作中繼續進行整理。

在這個整理里程碑中,我們也解決了一些功能請求和社群提取請求。請繼續閱讀以了解新功能和設定。

工作台

更醒目的釘選索引標籤

釘選的索引標籤現在將始終顯示其釘選圖示,即使在非活動狀態下也是如此,使其更容易識別。如果編輯器既已釘選又包含未儲存的變更,則圖示會反映這兩種狀態。

Inactive pinned tabs showing pin icons

擴充功能樹狀結構使用自訂懸停

我們現在在擴充功能樹狀檢視中使用自訂懸停,而不是使用原生工具提示,自訂懸停具有跨平台一致性,並且更符合整體 UX。

Custom tree hover

安裝擴充功能而不進行同步

您現在可以安裝擴充功能而不進行同步,即使已啟用設定同步也是如此。

Install extension without syncing

佈景主題:GitHub Light

從檔案總管安裝擴充功能

VS Code 現在支援從檔案總管安裝擴充功能 VSIX 檔案,方法是右鍵點擊 VSIX 檔案,然後選擇安裝擴充功能 VSIX 內容選單項目。

輸入模糊命令

現在有一個新的內部 workbench.action.blur 命令可用,它會移除任何可聚焦輸入的焦點。您可以在鍵盤快速鍵喜好設定中為此命令指派鍵盤快速鍵。

整合式終端機

本機回音

傳統上,在終端機中進行修改需要將資訊傳送到終端機程序、處理,然後傳回 VS Code 才能生效。當連線到SSH 伺服器Codespace的連線品質不佳或距離遙遠時,這可能會很慢。

此版本為終端機新增了「本機回音」模式,該模式嘗試預測本機進行的修改和游標移動,並在 UI 中顯示它們,而無需往返伺服器。預設情況下,預測的字元會顯示為「暗淡」

Gif showing typing with 250ms latency where characters entered immediately are dimmed

您可以使用兩個設定來設定此功能

  • terminal.integrated.localEchoLatencyThreshold 設定偵測到的延遲閾值(以毫秒為單位),本機回音將在此閾值下啟動。可以將其設定為 0 以始終開啟該功能,或設定為 -1 以停用它。預設值為 30
  • terminal.integrated.localEchoStyle 設定本機字元的樣式或顏色,預設值為 dim

IntelliSense

可調整大小的建議

在這個里程碑中,我們對建議 UI 進行了多項改進。首先也是最重要的,現在可以調整其大小。拖曳側面或角落以調整控制項的大小。

Resizable Suggestions control

佈景主題:GitHub Light,字型:FiraCode

建議清單的大小將會儲存並跨工作階段還原。詳細資訊窗格的大小僅在每個工作階段中儲存,因為該大小往往更具變動性。此外,editor.suggest.maxVisibleSuggestions 設定已過時。

建議的狀態列

建議控制項現在也可以在視窗底部顯示自己的狀態列。使用 editor.suggest.showStatusBar 設定啟用它。它可以簡化詳細資訊的切換,並顯示完成項目是否支援插入、取代或兩者皆可。

Suggestions Status Bar

佈景主題:GitHub Light,字型:FiraCode

在上面的範例中,選擇「插入」會產生 Math.floorceil,而選擇「取代」會產生 Math.floor

新的 editor.suggest.insertMode 設定可讓您設定您偏好插入還是取代。當建議同時支援兩者時,您的偏好設定將成為預設值。

移動游標以選取建議

最後但並非最不重要的是,您現在可以在顯示建議時移動游標。例如,您可以在單字結尾觸發建議,向左移動以查看更多建議,然後使用取代來覆寫該單字。

Moving cursor while suggestions are showing

佈景主題:GitHub Light

Emmet

Emmet 中的自訂程式碼片段已回歸。此外,程式碼片段現在會在儲存程式碼片段檔案或更新 emmet.extensionsPath 設定時自動重新整理。

Emmet custom snippets working again

原始碼控制

原始碼控制輸入方塊儲存提交訊息歷史記錄

這解決了導覽 SCM 提交歷史記錄的功能請求。按 (Windows、Linux Up) (Windows、Linux Down) 分別顯示先前和下一個提交。若要直接移動到輸入方塊的第一個和最後一個位置,請按住 Alt 鍵並搭配對應的箭頭鍵。

After typing a message in the SCM input box, then staging and committing changes, pressing the up arrow reveals the message that was just committed

Git:標籤命令在子選單中

標籤相關的 Git 命令已新增至 ... Git 選單。

Git tags submenu

Git:Rebase 命令

新增了 Git:Rebase 分支... 命令,可讓您使用 UI 重新設定分支基底。

Git:遞迴複製命令

使用 Git:複製 (遞迴) 命令,您現在可以遞迴複製 Git 儲存庫,包括其巢狀 Git 子模組。

時間軸:Emoji 短代碼呈現

我們現在會在時間軸檢視中呈現 emoji 短代碼,例如 :smile:

Timeline view with emoji

語言

Markdown 智慧選取

在 Markdown 文件中使用以下新命令展開和縮小選取範圍

  • 展開:⌃⇧⌘→ (Windows、Linux Shift+Alt+Right)
  • 縮小:⌃⇧⌘← (Windows、Linux Shift+Alt+Left)

選取範圍適用於以下項目,並遵循傳統的階層模式

  • 標題
  • 清單
  • 區塊引言
  • 圍籬程式碼區塊
  • Html 程式碼區塊
  • 段落

Smart select within a Markdown document expands from a block element, to the block element containing it, to the rest of the content under a header, to the header itself

JavaScript 和 TypeScript 的空大括號格式化選項

新的 javascript.format.insertSpaceAfterOpeningAndBeforeClosingEmptyBracestypescript.format.insertSpaceAfterOpeningAndBeforeClosingEmptyBraces 格式化組態選項控制是否在空大括號之間插入空格。這些設定的預設值為 true。例如,對於 JavaScript

class Foo {
    doFoo() { }
}

設定 "javascript.format.insertSpaceAfterOpeningAndBeforeClosingEmptyBraces": false 並格式化程式碼會產生

class Foo {
    doFoo() {} // Notice that the space has been removed
}

瀏覽器支援

下載資料夾 (Edge、Chrome)

利用新的 檔案系統存取 API,在瀏覽器中執行的 VS Code 現在可以為檔案總管中的資料夾提供下載動作,以將所有檔案和資料夾下載到磁碟。

Download folder

注意: 這需要最新版本的 Microsoft Edge 或 Google Chrome。

開啟工作區通知

如果您開啟一個在最上層包含 .code-workspace 檔案的資料夾,您現在會看到一個通知,詢問您是否要開啟它。這在桌面版 VS Code 中始終如此,現在也將在瀏覽器中運作。

Open workspace notification

防止意外關閉

新增了一個新的設定 window.confirmBeforeClose,用於在關閉或離開工作台之前顯示確認對話方塊。

可能的值為

  • keyboardOnly:確認只會在您使用按鍵繫結關閉時顯示 (例如,⌘W (Windows、Linux Alt+F4))。(預設)
  • always:確認對話方塊將始終顯示,即使您從滑鼠手勢關閉也是如此。
  • never:永遠不會顯示確認。

Close confirmation dialog

注意:此設定可能無法涵蓋所有情況。瀏覽器仍可能決定在沒有確認的情況下關閉索引標籤或視窗。

擴充功能貢獻

GitHub 提取請求和問題

持續開發GitHub 提取請求和問題擴充功能,它可讓您處理、建立和管理提取請求和問題。

若要了解所有新功能和更新,您可以查看擴充功能 0.21.0 版本的完整變更記錄

遠端開發

持續開發遠端開發擴充功能,它可讓您使用容器、遠端電腦或 適用於 Linux 的 Windows 子系統 (WSL) 作為功能完整的開發環境。

1.51 版本中的功能重點包括

  • 能夠保存/重新連線到終端機工作階段。
  • 改良的連接埠轉送體驗。

您可以在遠端開發發行說明中了解新的擴充功能功能和錯誤修正。

預覽功能

預覽功能尚未準備好發行,但功能已足夠使用。我們歡迎您在這些功能開發期間提供早期意見反應。

設定同步

設定同步現在會同步擴充功能的全域狀態。擴充功能將必須使用新引入的 setKeysForSync API 提供要同步的狀態。

記住 Proxy 認證

我們正在徹底修改在網路連線需要 Proxy 驗證時顯示的登入對話方塊。新的設定 window.enableExperimentalProxyLoginDialog: true 將啟用這種新體驗,我們計畫在未來的版本中將其設為預設值。

Proxy Login

佈景主題:GitHub Light

對話方塊將會顯示在 VS Code 視窗內,並提供一種記住認證的方式,讓您不必每次啟動 VS Code 時都提供認證。認證將會儲存在作業系統標準認證儲存區中 (macOS 上的金鑰鏈、Windows 上的 Windows 認證管理員和 Linux 上的 gnome 金鑰環)。

我們仍然只在每個工作階段顯示此對話方塊一次,但未來可能會重新考慮此決定。如果您選取要記住的認證無效,您將會再次看到對話方塊出現。再次提供認證可讓您變更它們。

請啟用此選項,並透過我們的問題追蹤器告訴我們是否有任何不如預期的情況。

TypeScript 4.1 Beta 支援

VS Code 支援 TypeScript 4.1 Beta 和每晚組建。4.1 更新帶來了一些新的 TypeScript 語言功能,例如支援遞迴條件類型,以及工具改進。一個重點領域是為 JSDoc 註解中的 @see 標籤新增初始支援

若要開始使用 TypeScript 4.1 每晚組建,只需安裝 TypeScript Nightly 擴充功能。請分享意見反應,並告訴我們您是否遇到任何 TypeScript 4.1 的錯誤。

擴充功能撰寫

更新的擴充功能範例

我們更新了一些擴充功能範例,以包含已連結到我們的色彩佈景主題權杖的 VS Code 預設樣式。這表示常見元素 (文字、按鈕、輸入) 將可佈景主題化,並符合產品中的預設樣式。以下是包含此功能的擴充功能

Webview style samples

樹狀結構中的 Codicon 色彩

隨著 ThemeIcon 色彩 API 的最終確定,擴充功能作者可以在自訂樹狀檢視中的 codicon 上使用佈景主題色彩。

Tree view with icon colors

同步全域狀態

擴充功能現在可以透過提供金鑰來同步其全域狀態,當啟用設定同步時,其值應使用 globalState 記憶體區塊中新引入的 setKeysForSync API 進行同步。

/**
 * Set the keys whose values should be synchronized across devices when synchronizing user-data
 * like configuration, extensions, and mementos.
 *
 * Note that this function defines the whole set of keys whose values are synchronized:
 *  - calling it with an empty array stops synchronization for this memento
 *  - calling it with a non-empty array replaces all keys whose values are synchronized
 *
 * For any given set of keys this function needs to be called only once but there is no harm in
 * repeatedly calling it.
 *
 * @param keys The set of keys whose values are synced.
 */
setKeysForSync(keys: string[]): void;

註解執行緒回覆按鈕可見性

註解擴充功能現在可以使用新的屬性 CommentThread#canReply 控制註解執行緒中回覆按鈕的可見性。當其設定為 false 時,使用者將不會在註解執行緒中看到回覆按鈕或註解方塊。

建議的擴充功能 API

每個里程碑都附帶新的建議 API,擴充功能作者可以試用它們。與往常一樣,我們需要您的意見反應。以下是您試用建議 API 必須執行的操作

  • 您必須使用 Insiders 版本,因為建議 API 經常變更。
  • 您必須在擴充功能的 package.json 檔案中包含此行:"enableProposedApi": true
  • 將最新版本的 vscode.proposed.d.ts 檔案複製到專案的原始碼位置。

您無法發行使用建議 API 的擴充功能。下一個版本中可能會出現重大變更,我們絕不希望破壞現有的擴充功能。

摺疊範圍提供者變更事件

摺疊範圍提供者可以使用 onDidChangeFoldingRanges 事件向編輯器發出訊號,表示需要更新摺疊範圍。

如需更多詳細資訊並提供意見反應,請使用問題 #108929

密碼 API

作為 驗證提供者持續工作的一部分,我們引入了用於儲存和擷取敏感資訊的 API。在內部,這充當 VS Code 用於儲存密碼的 keytar 程式庫的包裝函式。

/**
 * Retrieve a password that was stored with key. Returns undefined if there
 * is no password matching that key.
 * @param key The key the password was stored under.
 */
export function getPassword(key: string): Thenable<string | undefined>;

/**
 * Store a password under a given key.
 * @param key The key to store the password under
 * @param value The password
 */
export function setPassword(key: string, value: string): Thenable<void>;

/**
 * Remove a password from storage.
 * @param key The key the password was stored under.
 */
export function deletePassword(key: string): Thenable<void>;

/**
 * Fires when a password is set or deleted.
 */
export const onDidChangePassword: Event<void>;

工程

使 VS Code 符合 Trusted Types

我們繼續努力使 VS Code 符合「Trusted Types」。目標是防止基於 DOM 的跨網站指令碼漏洞。您可以在 web.dev Trusted Types 網站上了解有關 Trusted Types 的更多資訊,並在問題 #103699 中追蹤我們的進度。

文件

開始使用

我們正專注於讓編輯器更容易上手的方法。我們在我們的網站上建立了一個新的「學習程式碼」登陸頁面,其中包含程式碼套件和針對程式碼新手的新內容。我們還在網站 code.visualstudio.com/learn 上建立了新的學生友善影片和資源。

Learn to code

新命令

按鍵 命令 命令 ID
聚焦左側編輯器群組 (不環繞) workbench.action.focusLeftGroupWithoutWrap
聚焦右側編輯器群組 (不環繞) workbench.action.focusRightGroupWithoutWrap
聚焦上方編輯器群組 (不環繞) workbench.action.focusAboveGroupWithoutWrap
聚焦下方編輯器群組 (不環繞) workbench.action.focusBelowGroupWithoutWrap
聚焦活動列 workbench.action.focusActivityBar

值得注意的修正

  • 43819:Windows:當刪除包含正在使用中檔案的資料夾時,不會顯示錯誤訊息
  • 71315:刪除檔案後應保持列焦點
  • 96522:使用者輸入變數不適用於多根工作區中的啟動組態
  • 100255:移動檔案應直接載入具有先前內容的模型
  • 108578:具有 onDebugDynamicConfigurations 的擴充功能會在 v1.50 中啟動時急切地啟動
  • 109088:為資料夾傳送 vscode.workspace.onWillCreateFiles/onDidCreateFiles 事件
  • 109226:偵錯懸停會在展開/摺疊時移動

感謝您

最後但絕非最不重要的是,衷心感謝以下在本月為 VS Code 做出貢獻的人士

對我們問題追蹤的貢獻

vscode 的貢獻

vscode-json-languageservice 的貢獻

vscode-html-languageservice 的貢獻

vscode-css-languageservice 的貢獻

vscode-eslint 的貢獻

language-server-protocol 的貢獻

vscode-emmet-helper 的貢獻

lsif-node 的貢獻

debug-adapter-protocol 的貢獻

vscode-vsce 的貢獻

vscode-js-debug 的貢獻