🚀 在 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

擴充功能樹狀檢視使用自訂 hover

我們現在在擴充功能樹狀檢視中使用自訂 hover,而不是使用原生工具提示,這樣可以跨平台保持一致,並且更符合整體 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 向上鍵) (Windows、Linux 向下鍵) 分別顯示上一個和下一個認可。若要直接移動到輸入方塊的第一個和最後一個位置,請按住 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 rebase 分支。

Git:遞迴複製命令

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

時間軸:Emoji 簡碼呈現

我們現在在時間軸檢視中呈現 Emoji 簡碼,例如 :smile:

Timeline view with emoji

語言

Markdown 智慧選取

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

  • 展開:⌃⇧⌘→ (Windows、Linux Shift+Alt+向右鍵)
  • 縮減:⌃⇧⌘← (Windows、Linux Shift+Alt+向左鍵)

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

  • 標題
  • 清單
  • 區塊引言
  • 圍籬程式碼區塊
  • 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 keyring)。

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

請啟用此選項,並透過我們的問題追蹤器讓我們知道是否有任何問題未如預期般運作。

TypeScript 4.1 beta 支援

VS Code 支援 TypeScript 4.1 beta 和每夜建置版本。4.1 更新帶來了一些新的 TypeScript 語言功能,例如支援 遞迴條件型別,以及工具改良。其中一個重點領域是 新增對 JSDoc 註解中 @see 標籤的初始支援。

若要開始使用 TypeScript 4.1 每夜建置版本,只需安裝 TypeScript Nightly 擴充功能。請分享意見反應,並讓我們知道您是否遇到任何 TypeScript 4.1 的錯誤。

擴充功能開發

已更新的擴充功能範例

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

Webview style samples

樹狀檢視中的 Codicon 色彩

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

Tree view with icon colors

同步全域狀態

擴充功能現在可以透過提供金鑰來同步其全域狀態,當啟用設定同步時,其值應使用 globalState memento 中新導入的 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:偵錯 hover 在展開/摺疊時移動

感謝您

最後但絕對不是最不重要的,非常感謝以下在本月為 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 的貢獻