參加你附近的 ,瞭解 VS Code 中的 AI 輔助開發。

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

擴充套件樹使用自定義懸停

我們現在使用自定義懸停而不是擴充套件樹檢視中的原生工具提示,它跨平臺一致且更符合整體使用者體驗。

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 branch... 命令,允許您使用 UI 重新設定分支。

Git:遞迴克隆命令

透過 Git: Clone (Recursive) 命令,您現在可以遞迴克隆 Git 倉庫,包括其巢狀的 Git 子模組。

時間線:表情符號短程式碼渲染

我們現在在時間線檢視中渲染表情符號短程式碼,例如 :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 Pull Requests and Issues擴充套件仍在繼續開發中,該擴充套件允許您處理、建立和管理拉取請求和問題。

要了解所有新功能和更新,您可以檢視擴充套件 0.21.0 版本的完整 更新日誌

遠端開發

遠端開發擴充套件的工作仍在繼續,它允許您使用容器、遠端機器或 適用於 Linux 的 Windows 子系統 (WSL) 作為功能齊全的開發環境。

1.51 中的主要功能包括

  • 能夠持久化/重新連線到終端會話。
  • 改進的埠轉發體驗。

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

預覽功能

預覽功能尚未準備好釋出,但已足夠實用。我們歡迎您在這些功能開發期間提供早期反饋。

設定同步

設定同步現在同步擴充套件的全域性狀態。擴充套件必須使用新引入的 setKeysForSync API 提供要同步的狀態。

記住代理憑據

我們正在徹底改造當網路連線需要代理身份驗證時顯示的登入對話方塊。新設定 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 的最終確定,擴充套件作者可以在自定義樹檢視中使用 codicons 上的主題顏色。

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 符合受信任型別

我們繼續努力使 VS Code 符合“受信任型別”。目標是防止基於 DOM 的跨站指令碼漏洞。您可以在 web.dev 的 受信任型別站點 瞭解更多關於受信任型別的資訊,並在 問題 #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:在 v1.50 中,帶有 onDebugDynamicConfigurations 的擴充套件在啟動時急切啟用
  • 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 的貢獻