現已釋出!閱讀關於 11 月新增功能和修復的內容。

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:變基命令

已新增新的 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 的貢獻

© . This site is unofficial and not affiliated with Microsoft.