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 月迭代的部分工作中進行整理。
在這個整理里程碑中,我們也解決了數個功能請求和社群 提取請求。請繼續閱讀以瞭解新功能和設定。
工作台
更顯眼的釘選索引標籤
釘選的索引標籤現在將始終顯示其釘選圖示,即使在非使用中時也是如此,使其更容易識別。如果編輯器既已釘選又包含未儲存的變更,則圖示會反映這兩種狀態。
擴充功能樹狀檢視使用自訂 hover
我們現在在擴充功能樹狀檢視中使用自訂 hover,而不是使用原生工具提示,這樣可以跨平台保持一致,並且更符合整體 UX。
安裝擴充功能而不進行同步
您現在可以在啟用設定同步時安裝擴充功能而不進行同步。
佈景主題: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 向上鍵) 和 ↓ (Windows、Linux 向下鍵) 分別顯示上一個和下一個認可。若要直接移動到輸入方塊的第一個和最後一個位置,請按住 Alt 鍵並同時按下對應的箭頭鍵。
Git:標籤命令位於子選單中
標籤相關的 Git 命令已新增至 ... Git 選單。
Git:Rebase 命令
新增了新的 Git:Rebase 分支... 命令,可讓您使用 UI rebase 分支。
Git:遞迴複製命令
使用 Git:複製 (遞迴) 命令,您現在可以遞迴複製 Git 儲存機制,包括其巢狀 Git 子模組。
時間軸:Emoji 簡碼呈現
我們現在在時間軸檢視中呈現 Emoji 簡碼,例如 :smile:
。
語言
Markdown 智慧選取
在 Markdown 文件中使用以下新命令展開和縮減選取範圍
- 展開:⌃⇧⌘→ (Windows、Linux Shift+Alt+向右鍵)
- 縮減:⌃⇧⌘← (Windows、Linux Shift+Alt+向左鍵)
選取範圍適用於以下項目,並遵循傳統的階層模式
- 標題
- 清單
- 區塊引言
- 圍籬程式碼區塊
- 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 提取請求和問題 擴充功能上的工作仍在繼續,該擴充功能可讓您處理、建立和管理提取請求和問題。
若要瞭解所有新功能和更新,您可以查看擴充功能 0.21.0 版本的完整變更日誌。
遠端開發
在 遠端開發擴充功能 上的工作仍在繼續,這些擴充功能可讓您使用容器、遠端機器或 適用於 Linux 的 Windows 子系統 (WSL) 作為功能完整的開發環境。
1.51 中的功能重點包括
- 能夠持續/重新連線到終端機工作階段。
- 改良的連接埠轉送體驗。
您可以在遠端開發發行說明中瞭解新的擴充功能功能和錯誤修正。
預覽功能
預覽功能尚未準備好發行,但功能已足夠使用。我們歡迎您在這些功能仍在開發中時提供早期意見反應。
設定同步
設定同步現在會同步擴充功能的全域狀態。擴充功能必須使用新導入的 setKeysForSync API 提供要同步的狀態。
記住 Proxy 憑證
我們正在徹底修改在網路連線需要使用 Proxy 進行驗證時顯示的登入對話方塊。新的設定 window.enableExperimentalProxyLoginDialog: true
將啟用此新體驗,我們計畫在未來的版本中將其設為預設值。
佈景主題: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 預設樣式。這表示常見元素 (文字、按鈕、輸入) 將可佈景主題化,並符合產品中的預設樣式。以下是包含此功能的擴充功能
樹狀檢視中的 Codicon 色彩
隨著 ThemeIcon
色彩 API 的最終版本,擴充功能作者可以在自訂樹狀檢視中的 codicon 上使用佈景主題色彩。
同步全域狀態
擴充功能現在可以透過提供金鑰來同步其全域狀態,當啟用設定同步時,其值應使用 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 上建立了新的學生友善影片和資源。
新命令
金鑰 | 命令 | 命令 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 做出貢獻的人員
對我們的問題追蹤的貢獻
- 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 焦點動作 PR #108071
- Andrey Sinitsyn (@asn007):fix(git):在 win32 上新增、還原檔案或清除儲存機制時發生嚴重錯誤 [#108690] PR #108691
- Jordan Bayles (@baylesj):新增 Git:遞迴複製選項 PR #109133
- Takanori Oishi (@bicstone)
- 套用語言包時 UI 項目順序不正確 PR #109433
- Git:將標籤新增至 '...' 選單 PR #109282
- Borja Zarco (@bzarco):修正啟動設定輸入變數解析。 PR #97440
- Dhairya Nadapara (@dhairyanadapara):在 FindInFile 介面中新增 preserve case 和 excluse 設定 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):fix:移除未命名編輯器標籤中的額外空白字元 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)
- 將目前分支 rebase 到另一個分支 PR #108913
- 將選用參數新增至名為 newEditorGroup 的 showOptions 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 實體的 Hover PR #89
對 vscode-css-languageservice
的貢獻
對 vscode-eslint
的貢獻
- Brandon Mills (@btmills):將 markdown 新增至 eslint.probe 預設文件 PR #925
- Brad Zacher (@bradzacher):透過指出這是僅限工作區的擴充功能來支援遠端開發 PR #1084
- Clément Tessier (@ctessier):修正 README.md 中的錯字 PR #1105
對 language-server-protocol
的貢獻
- @KamasamaK
- Remy Suen (@rcjsuen):更正 slash 為 textDocument/semanticTokens PR #1111
- Andreas Matthias (@AndreasMatthias):逸出錢字符號。 PR #1124
對 vscode-emmet-helper
的貢獻
- Yasar Siddiqui (@yasarsid):對於 d: 的 Emmet 展開,應展開為 "display: block" 而不是 "display: grid" PR #35
對 lsif-node
的貢獻
- Noah Santschi-Cooney (@Strum355):lsif-util:透過將 \" 取代為 vertex 額外資訊區段中的 " 來修正 #70 PR #112
對 debug-adapter-protocol
的貢獻
- Jonah Graham (@jonahgraham):錯誤 #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