2016 年 10 月 (版本 1.7)
1.7.2 恢復版本
我們今天釋出 1.7.2 版本,其中包含新版本的 TypeScript 伺服器(更新至 2.0.10)。伺服器更新將預設重新為 JavaScript 使用者啟用自動型別獲取 (ATA) 功能。此功能極大地改進了 JavaScript 專案中的 IntelliSense,並消除了手動安裝 TypeScript 宣告檔案 (.d.ts 檔案) 的需要。此功能透過查詢 npmjs 服務來檢索所用模組的相關宣告檔案。有關此功能的更多詳細資訊,包括如何停用它的詳細資訊,請參閱這些發行說明的相關部分。
1.7.2 版本還添加了最終的 1.7 翻譯並修復了幾個重要的問題。
下載:Windows | Mac | Linux 64 位:.tar.gz .deb .rpm | Linux 32 位:.tar.gz .deb .rpm
1.7.1 恢復版本
我們正在釋出 1.7.1 恢復版本,以停用自動 JavaScript 型別檔案獲取功能。我們需要調整獲取方式,以避免 NPM 登錄檔的不必要負載,我們正在與 TypeScript 和 npmjs.org 團隊密切合作。我們希望在未來的版本中啟用此功能。
如果您對詳細資訊感到好奇,可以閱讀我們描述此事件以及 NPM 和 VS Code 緩解措施的部落格文章。
下載:Windows | Mac | Linux 64 位:.tar.gz .deb .rpm | Linux 32 位:.tar.gz .deb .rpm
10 月發行摘要
歡迎使用 Visual Studio Code 的 10 月版本。此版本中有許多重大更新,我們希望您會喜歡,其中一些主要亮點包括
- 水平佈局 - 將編輯器組織為垂直或水平組。
- 鍵盤快捷鍵參考 - 新的可列印鍵盤快捷鍵 PDF 備忘單。
- HTML 中的 CSS 自動完成 - 在 HTML 中嵌入的 CSS 中獲取豐富的自動完成。
- 除錯命中計數控制 - 設定斷點命中計數條件。
- 簡化的 Node.js 除錯 - 輕鬆配置您的 Node.js 除錯會話。
- Sublime 和 Atom 的鍵繫結 - 您現在可以在 VS Code 中使用這些眾所周知的鍵盤快捷鍵。
- 停用擴充套件 - 快速全域性停用擴充套件或針對特定工作區停用擴充套件。
- 改進的 TypeScript 和 JavaScript 語法 - Dark+ 主題現在為變數和函式引用著色。
- 擴充套件包 - 直接在擴充套件詳細資訊中檢視擴充套件包的依賴項。
釋出說明按以下與 VS Code 重點領域相關的部分進行排列。以下是一些進一步的更新
- 工作臺 - 一些檢視狀態現在持久儲存在使用者設定中。從快速開啟中開啟多個檔案。
- 編輯器 - 鍵盤快捷鍵參考、更精細的格式控制。
- 語言 - JavaScript 和 CSS 改進。
- 擴充套件 - 新的鍵繫結和格式化程式類別,便於搜尋。
- Node.js 除錯 - 多目標除錯支援、新的除錯設定。
- 擴充套件創作 - 支援擴充套件 CHANGELOG.md 檔案。新增到編輯器選項卡上下文選單。
工作臺
水平佈局
您現在可以將編輯器組的佈局更改為垂直或水平。兩種佈局的行為與以前相同,允許您移動和調整編輯器和編輯器組的大小。

要為當前工作區啟用水平佈局,請使用
- 檢視選單 切換編輯器組佈局。
- 命令面板 切換垂直/水平編輯器組佈局。
- 開啟的編輯器檢視標題中的操作。

還有一個鍵盤快捷鍵 (⌥⌘0 (Windows, Linux Shift+Alt+0)) 可在兩種佈局之間快速切換。
一旦您選擇了佈局,我們將為當前工作區保留它並在重新啟動後恢復它。
切換最大化面板
我們引入了一個全域性工作臺命令,用於最大化面板大小(總高度的 80%)。如果面板已經最大化,此命令將面板縮小到其先前的大小。當您有大量輸出需要快速檢視時,這非常方便。此命令目前未繫結到任何鍵盤快捷鍵,但您可以輕鬆新增自己的鍵繫結。
切換側邊欄和隱藏狀態列現在持久儲存在使用者設定中
我們更改了“檢視”選單中的一些切換,以更新您的使用者設定檔案,而不是在瀏覽器中保留其狀態。這將使在另一臺機器上透過複製設定檔案來恢復相同狀態變得更容易。
當您從“檢視”選單更改以下設定時,它們現在將在您的使用者設定檔案中更改
workbench.sideBar.location控制側邊欄的位置(左或右)workbench.statusBar.visible控制狀態列的可見性
此外,從“檢視”選單更改縮放級別現在會寫入 window.zoomLevel。
從快速開啟中開啟多個檔案
感謝 Will Prater (@wprater),您現在只需按向右箭頭鍵即可從快速開啟中開啟多個檔案。這將在後臺開啟當前選定的檔案,您可以繼續從快速開啟中選擇檔案。
編輯器
鍵盤快捷鍵參考
幫助 > 鍵盤快捷鍵參考 會調出 VS Code 命令鍵盤快捷鍵的可列印 PDF 參考表。將此參考隨身攜帶,您將很快成為 VS Code 高階使用者。
這是 macOS 的參考

以下是三個特定於平臺的版本的連結
注意:我們還添加了一個選單命令,用於轉到介紹性影片(幫助 > 介紹性影片)。
格式化文件 / 格式化選擇
編輯器現在有兩個明確的格式化操作:格式化文件 (⇧⌥F (Windows Shift+Alt+F, Linux Ctrl+Shift+I)) 和 格式化選擇 (⌘K ⌘F (Windows, Linux Ctrl+K Ctrl+F))。

我們還添加了新的配置選項來啟用/停用 JavaScript、TypeScript、JSON 和 HTML 的預設格式化程式。當您安裝了提供相同語言格式化的另一個擴充套件時,請使用這些選項。
我們向 Marketplace 添加了一個新的 Formatters 類別,以便您可以輕鬆搜尋和查詢原始碼格式化擴充套件。

語言
更好的 JavaScript IntelliSense
注意:此功能在 1.7.1 版本中被停用。請繼續閱讀以瞭解未來版本中將推出什麼。
VS Code 使用 TypeScript 語言伺服器在 JavaScript 檔案中提供 IntelliSense。過去,您必須建立一個 jsconfig.json 檔案。您還必須手動安裝所有正在使用的模組和庫的 typings(型別宣告)檔案。這不是一件容易的事,特別是當您是純 JavaScript 開發人員時。
我們與 TypeScript 團隊的朋友們進行了交流,他們提出了“自動型別獲取”(Automatic Type Acquisition)。ATA 使 typings 檔案幾乎不可見。啟用了 ATA 的 TypeScript 語言伺服器會監視您的 package.json 檔案,並自動將所有依賴項的 typings 檔案安裝到檔案系統上的快取中。當它發現對已知客戶端庫的引用時,它也會執行相同的操作。當您隨後呼叫 IntelliSense 時,TypeScript 伺服器會使用快取中的 typings 檔案。快取由您的所有工作區共享。如果沒有 jsconfig.json 檔案,TypeScript 伺服器會假定工作區中的所有內容都屬於同一專案。
我們認為這太酷了,希望您能儘快體驗它。我們對 ATA 的整合仍然有些粗糙,但我們決定預設啟用它。如果您遇到問題,可以透過在使用者設定中將 typescript.disableAutomaticTypeAcquisition 設定為 true 來將其關閉。
以下是使用 ATA 時需要注意的幾點
- ATA 向後相容。如果您有一個
typings資料夾或使用npm安裝了 typings,那麼這些優先於自動獲取的 typings 檔案。 - ATA 獲取最新可用版本的 typings 檔案。如果您依賴於較舊版本的庫或模組,那麼庫或模組公開的實際 API 與 typings 檔案中描述的 API 之間可能存在差異。如果您需要特定版本的 typings 檔案,可以手動安裝:
npm install @types/<module name>@x.y.z。 - 越來越多的 npm 模組捆綁了它們的 typings 檔案,這意味著獲取 typings 的唯一方法是安裝模組。ATA 不會為您安裝 npm 模組,因此您必須自己完成。
- 從對
package.json檔案中的依賴項進行更改到獲取相應的 typings 檔案並可用於 IntelliSense 之間存在短暫延遲。 - 在實現中,ATA 功能首先查詢 npmjs 以查詢包含已知宣告檔案列表的模組。如果您的專案包含任何這些模組,它們的宣告檔案將被下載並新增到全域性快取中。
HTML 中的 CSS 完成
您現在可以看到 HTML 中嵌入的 CSS 樣式(例如程式碼完成、驗證和顏色註釋)的 CSS 語言功能。

改進的 TypeScript 和 JavaScript 語法
TypeScript 和 JavaScript 語法突出顯示基於 TypeScript 團隊編寫的 TypeScript textmate 語法。最近幾個月,該語法已完全重寫。
主要目標是解決儘可能多的報告問題。此外,我們希望透過生成更接近其他流行 JavaScript 語法(例如 Atom 語法)的範圍來提供更好的現有顏色主題體驗,同時仍支援 JavaScript React 語法等功能。
由於這項努力,超過 100 個問題已得到修復,包括報告變數和函式引用的請求。我們決定利用新範圍,現在還在我們的預設深色和淺色 Plus 主題中為變數和函式引用著色。我們希望您喜歡它!
注意:如果您已經一直在幫助我們使用 最新 TypeScript 和 JavaScript 語法擴充套件 測試最新語法:您現在可以解除安裝該擴充套件。
Linter 擴充套件
vscode-eslint 和 vscode-tslint 擴充套件現在提供設定以在儲存時自動更正可修復的警告。
{
"eslint.autoFixOnSave": true,
"tslint.autoFixOnSave": true
}
注意:當 files.autoSave 設定為 afterDelay 時,此設定將被忽略。
擴充套件
鍵繫結類別
鍵盤快捷鍵對於提高工作效率至關重要,改變鍵盤習慣可能很困難。為了幫助解決這個問題,我們添加了兩個新擴充套件,並在 Marketplace 中引入了一個新類別 Keymaps。目的是透過消除學習新鍵盤快捷鍵的需要,使在編輯器之間切換變得更容易。
我們為 Atom 和 Sublime Text 構建了一個擴充套件。我們發現了一些最流行的鍵盤快捷鍵,希望您能提供反饋,告訴我們缺少什麼。如果我們遺漏了某個鍵盤快捷鍵,請在 repo 中開啟一個 issue 或提出 PR。

此外,您可以使用 keybindings 貢獻點建立自己的鍵繫結擴充套件,並將其新增到 Keymaps 類別中。
格式化程式類別
存在許多提供原始碼格式化功能的擴充套件。一些最流行的格式化程式安裝量超過 10 萬次!我們希望讓您更容易找到格式化程式,因此我們在 Marketplace 中添加了一個名為 Formatters 的新類別。今天就在 Marketplace 上搜尋並安裝 Formatter。
以下是我們最喜歡的一些
停用擴充套件
您通常有多個工作區和安裝的各種擴充套件來支援這些工作區。大多數情況下,這些擴充套件是單個工作區獨有的,其他工作區不需要。例如,如果您有 JavaScript 和 Go 語言工作區,您不需要在 Go 工作區中使用 JavaScript linting 擴充套件,反之亦然。在此版本中,您現在可以只執行您認為工作區必要的擴充套件,並停用其餘的擴充套件。如果您不想解除安裝它們,並且不希望它們執行,您還可以為整個 VS Code 應用程式停用擴充套件。

您還可以透過 VS Code 中的幾次點選來停用或啟用所有擴充套件。

擴充套件包
上一個版本我們介紹了“擴充套件包”,它們是依賴於其他擴充套件的擴充套件。在此版本中,我們向擴充套件編輯器添加了一個新選項卡,以顯示安裝包時安裝的這些依賴項。

當您解除安裝擴充套件包時,其所有引用的依賴擴充套件也會被解除安裝。
Node 除錯
簡化的啟動配置
為了使設定 Node.js 除錯儘可能簡單,我們嘗試簡化初始“launch.json”體驗
- 必需但很少更改的屬性現在呈現為灰色,以便更清楚地表明在最常見的情況下無需更改它們。
- 不常用(具有良好預設值)的屬性已從初始配置中刪除,以減少“噪音”。這些屬性仍然可以透過 IntelliSense 輕鬆發現。
- 添加了註釋和線上文件連結。
- 線上除錯文件已重寫和改進。

注意:由於我們只能更改 VS Code 的內建 Node.js 偵錯程式,因此我們依靠其他除錯擴充套件的作者來做類似的事情(如果需要)。
命中計數條件斷點
VS Code 現在支援為斷點設定“命中計數條件”(除了前段時間引入的“表示式條件”)。“命中計數條件”控制斷點需要被命中的次數才能“中斷”執行。

是否遵守“命中計數條件”以及表示式的確切語法取決於所使用的偵錯程式擴充套件。在此里程碑中,只有內建的 Node.js 偵錯程式支援命中計數(但我們希望其他偵錯程式擴充套件會很快跟進)。
Node.js 偵錯程式支援的命中計數語法要麼是整數,要麼是運算子 <、<=、=、>、>=、% 後跟整數。
一些示例
>10在命中 10 次後始終中斷<3僅在前兩次命中時中斷10與>=10相同%2每隔一次命中中斷
多目標除錯
10 月版本包含“多目標除錯”的早期實現,即單個 VS Code 例項(和單個專案資料夾)中可以同時啟用多個除錯會話。
此功能有助於以下場景
- 同時除錯擴充套件及其除錯介面卡和/或語言伺服器。
- 從單個專案資料夾除錯客戶端和伺服器。
- 除錯叢集程式。
注意:在此里程碑中,重點是使多目標除錯的內部抽象正確,而不是如何在 UI 中體現它。因此,多目標除錯的 UI 及其設定方式具有高度實驗性,並且肯定會在接下來的里程碑中發生變化。
要啟用“多目標除錯”,請建立一個型別為 composite 的新啟動配置,並新增一個數組型別屬性 configurationNames。在該屬性下列出應並行啟動的其他啟動配置的名稱。
啟動 composite 配置後,單個會話將顯示為 CALL STACK 檢視中的頂級元素。操作(例如浮動除錯小部件中的所有操作)始終在 CALL STACK 檢視中當前選定的會話上執行。

除錯設定
我們引入了以下新設定
debug.allowBreakpointsEverywhere- 允許在任何檔案中設定斷點(而不僅僅是在明確註冊的檔案中)。如果您想使用現有偵錯程式(例如 Node.js 偵錯程式)除錯新(轉譯)語言,這很有用。debug.openExplorerOnEnd- 控制除錯會話結束時是否應自動開啟資源管理器。
擴充套件開發
重大更改:MarkedString[] 語義
返回 MarkedString | MarkedString[] 的 API 相關實現已更改語義。每個 MarkedString 將透過一條水平線在視覺上彼此分開。HoverProvider 和 Decoration API 都受此影響。
更新日誌
您現在可以直接在擴充套件詳細資訊檢視中顯示擴充套件的 CHANGELOG.md。
我們建議擴充套件作者將現有更新日誌從擴充套件的 README.md 移動到單獨的 CHANGELOG.md 檔案中。與 README.md 類似,如果 CHANGELOG.md 放置在擴充套件的工作區根目錄中,它將由 vsce 釋出工具自動包含。
為編輯器選項卡上下文選單提供選單項
我們添加了一個附加位置,擴充套件可以在其中貢獻選單項,即編輯器選項卡(當選項卡被停用時也有效)的上下文選單。在此處貢獻的相關選單路徑是 editor/title/context。
例如
"commands": [{
"command": "doSomething",
"title": "Do Something"
}],
"menus": {
"editor/title/context": [
{
"command": "doSomething"
}
]
}
onDidChangeVisibleTextEditors 事件
我們添加了一個 onDidChangeVisibleTextEditors 事件,每當可見編輯器列表發生變化時,該事件就會觸發。
立即更新:使用最新的 vscode.d.ts
一如既往,我們擴充套件 API 的最新版本在 vscode.d.ts 檔案中定義。
注意:當您更新擴充套件以使用 API 版本 1.7.0 或更高版本時,請確保使用最新版本的 vscode-node-module (^1.0.3) 並確保使用 TypeScript 2.0。
請閱讀此處瞭解如何將現有擴充套件遷移到最新的 vscode 模組。
新命令
| 鍵 | 命令 | 命令 ID |
|---|---|---|
| ⌥⌘0 (Windows, Linux Shift+Alt+0) | 切換編輯器組佈局 | workbench.action.toggleEditorGroupLayout |
未分配 |
切換最大化面板 | workbench.action.toggleMaximizedPanel |
| 格式化 | ||
| ⇧⌥F (Windows Shift+Alt+F, Linux Ctrl+Shift+I) | 格式化文件 | editor.action.formatDocument |
| ⌘K ⌘F (Windows, Linux Ctrl+K Ctrl+F) | 格式化選擇 | editor.action.formatSelection |
| 整合終端 | ||
| ⌘Home (Windows Ctrl+Home, Linux Shift+Home) | 滾動到頂部 | workbench.action.terminal.scrollToTop |
| ⌘End (Windows Ctrl+End, Linux Shift+End) | 滾動到底部 | workbench.action.terminal.scrollToBottom |
顯著變化
- 929: Windows 10: 焦點未置於視窗,但工作列閃爍
- 2814: Windows: Reveal in Explorer 功能不再將資源管理器視窗置於 vscode 前面
- 6466: 使用 cmder 時,Open in Command Prompt 不會開啟 cwd
- 10210: 無法複製除錯元素的值,例如異常訊息
- 11334 & 13229: 改進的終端 IME 支援
- 11431: RPM 包缺少 PATH 中的快捷方式
- 12036: 在帶有觸控式螢幕的系統上使用時,VS Code 非常卡頓
- 12260: 終端中沒有足夠的儲存空間來處理此命令
- 12969: HTML: script 標籤內的註釋不再對 script 語言敏感
- 13554: 整合終端偶爾會包裹一些行
- 14102: 預設摺疊預設設定並記住編輯器狀態
由於 13919,Windows 中的副檔名關聯已損壞。您需要重置副檔名關聯才能使用 VS Code 開啟。
這些是 已關閉的錯誤,這些是 1.7 更新的 已關閉的功能請求。
對擴充套件的貢獻
我們的團隊維護或貢獻了許多 VS Code 擴充套件。最值得注意的是
感謝
最後但同樣重要的是,衷心感謝!以下幫助使 VS Code 變得更好的各位:
- @barakd: Git quick open should correct invalid branch names PR #12194
- Christian Alexander (@ChristianAlexander)
- Cliff Koh (@cliffkoh): Fix typos and consistency issues PR #14078
- Sergey Shakhnazarov (@daserge): Avoiding "write EPIPE process.send" error on exit PR #13774
- xzper (@f111fei): Fixed #13670 PR #13739
- @greams: Add option for --list-extensions arg PR #13131
- Kei Son (@heycalmdown): Add an indicator for the current window PR #13113
- Huachao Mao (@Huachao): Update handlebars block comments symbols PR #12271
- Michael Hudson (@Huddo121): Increase coverage of tests for IAction.isAction() PR #13992
- Yuki Ueda (@Ikuyadeu): fix ini #13648 PR #13923
- Jeong Woo Chang (@inspiredjw): Cannot read property 'uri' of null fix PR #13263
- Jess Chadwick (@jchadwick)
- Kai Wood (@kaiwood): Add setting to prevent copying empty selections PR #13678
- Krzysztof Cieślak (@Krzysztof-Cieslak)
- Michael (@michaelchiche): fix typo in type definition PR #13159
- Michael Chou (@MikeChou): Follow symlinks recursively in Linux launch script PR #14046
- Denis Malinochkin (@mrmlnc)
- Renfred Harper (@renfredxh): Enable line highlighting for read only editors PR #14022
- Robin Munn (@rmunn): Remove incorrect ANSI escape code for LF PR #13345
- Sirisak Lueangsaksri (@spywhere): Sort the installed extension list PR #13399
- Tereza Tomcova (@the-ress)
- Call AllowSetForegroundWindow before sending IPC PR #13255
- Convert strings passed from node using UTF-8, not the system code page Issue #7727
- Follow Windows conventions when composing cmdline Issue #8429
- Ivan Samoylenko (@The-Smallest): Typo in project.json PR #13461
- Will Prater (@wprater)
- Toru Nagashima (@mysticatea): Fixes zero location support PR-ESLint #153
- Dario Fuzinato (@fussinatto): Fixing typos in readme PR-ESLint #157
- Morton Fox (@mortonfox): Fix license link PR-LSP #74
- Asad Saeeduddin (@masaeedu): Fix typo in protocol documentation PR-LSP #85
- Anton Kosyakov (@akosyakov)
- Fixes Microsoft/language-server-protocol #87 PR-LSP #90
- Fixes issues #72 and #78 PR-LSP #91
- Richard Lasjunies (@rlasjunies): support of fixes provided by TSLint engine PR #96
- Robert Stoll (@robstoll): fixed regexp pattern, violated rule was missing PR #107