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:Rebase 命令
添加了新的 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):修復(git):在 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 介面中添加了保留大小寫和排除設定 PR #107910
- Evan Krause (@evangrayk):隱藏未展開的註釋時不要聚焦編輯器 PR #97101
- Fons van der Plas (@fonsp):訊息“您想暫存所有更改嗎?” PR #109272
- John Murray (@gjsjohnmurray):修復 #108673 將 FileSystemProvider 錯誤訊息放入 settings.json 建立失敗通知 PR #108694
- matvii (@hodovani):將
map
替換為forEach
PR #109217 - Jean Pierre (@jeanp413)
- 修復了有時點選通知中間會貼上剪貼簿內容的問題 PR #109349
- 修復了當配置目標不是使用者時無法停用檔案自動儲存的問題 PR #109278
- 在 ChangeEncodingAction 中以流形式讀取檔案內容 PR #108052
- 修復了大綱檢視元素溢位問題 PR #108038
- Kenny Smith (@kjs3):MacOS 上用於向前刪除的垃圾/刪除鍵繫結 PR #108863
- Li Xueli (@mixj93):修復:刪除無標題編輯器標籤中的額外空格 PR #108039
- @Nafana:以 ^ 開頭的 Markdown 引用連結不應可點選 PR #108015
- Pierre Papin (@pi-r-p):修復 webview 中的下載問題 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:為“保留大小寫”替換選項新增鍵繫結快捷方式 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 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):修復:處理未知引數 PR #503
對 vscode-js-debug
的貢獻
- hp8wvvvgnj6asjm7:在不支援的作業系統上執行 Node.js 時偵錯程式不起作用 PR #791