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 月迭代中繼續進行部分整理工作。
在這個整理里程碑中,我們還解決了一些功能請求和社群拉取請求。請繼續閱讀以瞭解新功能和設定。
工作臺
更顯眼的固定選項卡
固定選項卡現在將始終顯示其圖釘圖示,即使在非活動狀態下也是如此,以便更容易識別它們。如果一個編輯器既被固定又包含未儲存的更改,則該圖示會反映這兩種狀態。

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

在不進行同步的情況下安裝擴充套件
現在,當設定同步啟用時,您可以在不同步擴充套件的情況下安裝擴充套件。

主題:GitHub Light
從資源管理器安裝擴充套件
VS Code 現在支援從資源管理器安裝擴充套件 VSIX 檔案,方法是右鍵單擊 VSIX 檔案並選擇安裝擴充套件 VSIX上下文選單項。
輸入模糊命令
現在可以使用新的內部 workbench.action.blur 命令,它會從任何可聚焦的輸入中移除焦點。您可以在鍵盤快捷鍵首選項中為此命令分配鍵盤快捷鍵。
整合終端
本地回顯
傳統上,在終端中進行修改需要將資訊傳送到終端程序,進行處理,然後返回到 VS Code 才能生效。當連線到 SSH 伺服器或 Codespace 的連線質量較差或距離較遠時,這可能會很慢。
此版本為終端添加了“本地回顯”模式,該模式會嘗試預測本地進行的修改和游標移動,並在 UI 中顯示它們,而無需往返伺服器。預設情況下,預測字元顯示為“暗淡”

您可以使用以下兩個設定來配置此功能
terminal.integrated.localEchoLatencyThreshold配置本地回顯啟用的檢測延遲閾值(以毫秒為單位)。可以將其設定為0以始終開啟該功能,或者設定為-1以停用它。預設為30。terminal.integrated.localEchoStyle配置本地字元的樣式或顏色,預設為dim。
IntelliSense
可調整大小的建議
在這個里程碑中,我們對建議 UI 進行了一些改進。首先,它現在可以調整大小。拖動側面或角落以調整控制元件的大小。

主題:GitHub Light,字型:FiraCode
建議列表的大小將在會話之間儲存和恢復。詳細資訊窗格的大小僅按會話儲存,因為該大小往往變化更大。此外,editor.suggest.maxVisibleSuggestions 設定已過時。
建議的狀態列
建議控制元件現在還可以在視窗底部顯示自己的狀態列。使用 editor.suggest.showStatusBar 設定啟用它。它使切換詳細資訊更簡單,並顯示補全是否支援插入、替換或兩者都支援。

主題:GitHub Light,字型:FiraCode
在上面的示例中,選擇“插入”會導致 Math.floorceil,選擇“替換”會導致 Math.floor。
新的 editor.suggest.insertMode 設定允許您配置您是喜歡插入還是替換。當一個建議同時支援兩者時,您的偏好將是預設值。
移動游標以選擇建議
最後但同樣重要的是,您現在可以在顯示建議時移動游標。例如,您可以在單詞末尾觸發建議,向左移動以檢視更多建議,然後使用替換來覆蓋該單詞。

主題:GitHub Light
Emmet
Emmet 中的自定義片段回來了。此外,現在儲存片段檔案或更新 emmet.extensionsPath 設定時,片段會自動重新整理。

原始碼管理
原始碼管理輸入框儲存提交訊息歷史記錄
這解決了功能請求以導航 SCM 提交歷史記錄。按 ↑ (Windows, Linux Up) 和 ↓ (Windows, Linux Down) 分別顯示上一個和下一個提交。要直接移動到輸入框的第一個和最後一個位置,請按 Alt 和相應的箭頭鍵。

Git:子選單中的標籤命令
標籤相關的 Git 命令已新增到 ... Git 選單中。

Git:變基命令
已新增新的 Git: Rebase branch... 命令,允許您使用 UI 變基分支。
Git:遞迴克隆命令
使用 Git: Clone (Recursive) 命令,您現在可以遞迴克隆 Git 儲存庫,包括其巢狀的 Git 子模組。
時間線:表情符號短程式碼渲染
我們現在在時間線檢視中渲染表情符號短程式碼,例如 :smile:。

語言
Markdown 智慧選擇
使用以下新命令在 Markdown 文件中展開和縮小選擇範圍
- 擴充套件:⌃⇧⌘→ (Windows、Linux Shift+Alt+Right)
- 收縮:⌃⇧⌘← (Windows、Linux Shift+Alt+Left)
選擇應用於以下內容,並遵循傳統的層次結構模式
- 標題
- 列表
- 塊引用
- 圍欄程式碼塊
- Html 程式碼塊
- 段落

JavaScript 和 TypeScript 的空大括號格式選項
新的 javascript.format.insertSpaceAfterOpeningAndBeforeClosingEmptyBraces 和 typescript.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 現在可以為檔案資源管理器中的資料夾提供下載操作,將所有檔案和資料夾下載到磁碟。

注意: 這需要最新版本的 Microsoft Edge 或 Google Chrome。
開啟工作區通知
如果您開啟一個在頂層包含 .code-workspace 檔案的資料夾,您現在會看到一個通知要求您開啟它。這在桌面版 VS Code 中始終如此,現在也適用於瀏覽器。

防止意外關閉
添加了一個新設定 window.confirmBeforeClose,用於在關閉或離開工作臺之前顯示確認對話方塊。
可能的值為:
keyboardOnly僅在使用鍵盤快捷鍵關閉時顯示確認(例如,⌘W (Windows, Linux Alt+F4))。(預設)always:始終顯示確認對話方塊,即使您透過滑鼠手勢關閉。never:從不顯示確認。

注意:此設定可能無法涵蓋所有情況。瀏覽器可能仍會決定在不確認的情況下關閉選項卡或視窗。
對擴充套件的貢獻
GitHub 拉取請求和議題
GitHub Pull Requests and Issues擴充套件仍在繼續開發中,該擴充套件允許您處理、建立和管理拉取請求和問題。
要了解所有新功能和更新,您可以檢視擴充套件的 0.21.0 版本的完整更新日誌。
遠端開發
遠端開發擴充套件的工作仍在繼續,它允許您使用容器、遠端機器或 適用於 Linux 的 Windows 子系統 (WSL) 作為功能齊全的開發環境。
1.51 中的主要功能包括
- 能夠持久化/重新連線到終端會話。
- 改進的埠轉發體驗。
您可以在遠端開發發行說明中瞭解新的擴充套件功能和錯誤修復。
預覽功能
預覽功能尚未準備好釋出,但已足夠實用。我們歡迎您在這些功能開發期間提供早期反饋。
設定同步
設定同步現在同步擴充套件的全域性狀態。擴充套件必須使用新引入的 setKeysForSync API 提供要同步的狀態。
記住代理憑據
我們正在徹底修改當網路連線需要透過代理進行身份驗證時顯示的登入對話方塊。一個新的設定 window.enableExperimentalProxyLoginDialog: true 將啟用這種新體驗,我們計劃在未來的版本中將其設為預設設定。

主題: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 預設樣式。這意味著常見元素(文字、按鈕、輸入)將可設定主題,並與產品中的預設樣式匹配。以下是包含此內容的擴充套件

樹中的 Codicon 顏色
隨著 ThemeIcon 顏色 API 的最終確定,擴充套件作者可以在自定義樹檢視中使用 codicons 上的主題顏色。
![]()
同步全域性狀態
擴充套件現在可以透過在 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 上建立了新的適合學生的影片和資源。

新命令
| 鍵 | 命令 | 命令 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 做出貢獻的人們:
對我們問題跟蹤的貢獻
- John Murray (@gjsjohnmurray)
- Alexander (@usernamehw)
- Andrii Dieiev (@IllusionMH)
- ArturoDent (@ArturoDent)
對 vscode 的貢獻
- Justin Steven (@justinsteven):(在 1.49.3 中修復) CVE-2020-16881 修復可以繞過 PR #107952
- Ashkan (@a5hk):關閉 #97890 PR #108779
- Daniel Huth (@Agreon):新增非環繞 EditorGroup-focus 操作 PR #108071
- Andrey Sinitsyn (@asn007):fix(git): fatal when adding, reverting files or cleaning repo on win32 [#108690] PR #108691
- Jordan Bayles (@baylesj):新增 Git: Clone Recursively 選項 PR #109133
- Takanori Oishi (@bicstone)
- 應用語言包時 UI 專案順序不正確 PR #109433
- Git:將標籤新增到 '...' 選單 PR #109282
- Borja Zarco (@bzarco):修復啟動配置輸入變數解析。 PR #97440
- Dhairya Nadapara (@dhairyanadapara):在 FindInFile 介面中新增 preserve case 和 exclude 設定 PR #107910
- Evan Krause (@evangrayk):隱藏未展開的註釋時不要聚焦編輯器 PR #97101
- Fons van der Plas (@fonsp):訊息“Would you like to stage all chages?” PR #109272
- John Murray (@gjsjohnmurray):修復 #108673 將 FileSystemProvider 錯誤訊息放入 settings.json 建立失敗通知 PR #108694
- matvii (@hodovani):將
map替換為forEachPR #109217 - Jean Pierre (@jeanp413)
- 修復有時單擊通知中間會貼上剪貼簿內容的問題 PR #109349
- 修復當配置目標不是使用者時無法停用檔案自動儲存的問題 PR #109278
- 在 ChangeEncodingAction 中將檔案內容讀取為流 PR #108052
- 修復大綱檢視元素溢位問題 PR #108038
- Kenny Smith (@kjs3):MacOS 上向前刪除的垃圾桶/刪除鍵繫結 PR #108863
- Li Xueli (@mixj93):fix: 刪除無標題編輯器標籤中多餘的空格 PR #108039
- @Nafana:以 ^ 開頭的 Markdown 引用連結不應可點選 PR #108015
- Pierre Papin (@pi-r-p):修復 webviews 中的下載問題 PR #108603
- Rakib Fiha (@RakibFiha):更改 shebang 與 code.sh 相同 PR #109372
- Ryan Clarke (@ryanclarke):向 IConfigurationPropertySchema 新增新屬性 PR #108120
- Sebastian Andil (@selrond):修復 git 包中的
No Nerify拼寫錯誤 PR #108329 - Simon Siefke (@SimonSiefke):修復拼寫錯誤:eventLister -> eventListener PR #108066
- Tomer Stav (@tomerstav)
- 將當前分支變基到另一個分支 PR #108913
- 向 showOptions 新增名為 newEditorGroup 的可選引數 PR #107555
- 注意:這最終沒有合併,但我們仍然感謝這項工作。
- Tony Xia (@tony-xia):Persisten -> Persistent PR #108389
- @turara:新增“Preserve case”替換選項的鍵盤快捷鍵 PR #107597
- @vivekmthr:CodeLens 在滑鼠抬起時啟用 #107736 PR #108323
對 vscode-json-languageservice 的貢獻
- Albert Nigmatzianov (@bogem):改進 README PR #78
對 vscode-html-languageservice 的貢獻
- Jaime Oliveira (@IxquitilisSaid):更新 beautify-html wrap_attributes 文件 PR #92
- Nicholas Steven Darmawan (@steve1998):為 HTML 實體實現懸停 PR #89
對 vscode-css-languageservice 的貢獻
對 vscode-eslint 的貢獻
- Brandon Mills (@btmills):向 eslint.probe 預設文件新增 markdown PR #925
- Brad Zacher (@bradzacher):透過指示這是僅限工作區的擴充套件來支援遠端開發 PR #1084
- Clément Tessier (@ctessier):修復 README.md 中的拼寫錯誤 PR #1105
對 language-server-protocol 的貢獻
- @KamasamaK
- Remy Suen (@rcjsuen):將斜槓更正為 textDocument/semanticTokens PR #1111
- Andreas Matthias (@AndreasMatthias):轉義美元符號。 PR #1124
對 vscode-emmet-helper 的貢獻
- Yasar Siddiqui (@yasarsid):Emmet 展開 d: 應該展開為 "display: block" 而不是 "display: grid" PR #35
對 lsif-node 的貢獻
- Noah Santschi-Cooney (@Strum355):lsif-util:透過將 \" 替換為 " 來修復 #70,在 vertex extra info 部分 PR #112
對 debug-adapter-protocol 的貢獻
- Jonah Graham (@jonahgraham):Bug #122:ProgressStartEvent 的 requestId 是一個整數 PR #123
- Mathias Fußenegger (@mfussenegger):將 nvim-dap 新增到工具頁面 PR #140
- Suzy Mueller (@suzmue):更新 adapters.md 中的 Go 除錯擴充套件資訊 PR #142
- Ethan Reesor (@firelizzard18):新增 byebug-dap 和 ruby-dap PR #144
對 vscode-vsce 的貢獻
- James George (@jamesgeorge007):fix: 處理未知引數 PR #503
對 vscode-js-debug 的貢獻
- hp8wvvvgnj6asjm7:在不受支援的作業系統上執行 Node.js 時偵錯程式不起作用 PR #791