2019 年 1 月 (版本 1.31)
更新 1.31.1:此更新解決了這些 問題。
下載:Windows: x64 | Mac: Intel | Linux 64 位元: deb rpm tarball | 32 位元: deb rpm tarball
歡迎使用 Visual Studio Code 2019 年 1 月發行版本。此版本中有許多重大更新,我們希望您會喜歡,其中一些主要重點包括
- 安裝擴充功能時無需重新載入 - 安裝新的擴充功能時不會中斷。
- 樹狀 UI 改善 - 改善 Explorer 導覽和篩選、水平捲動。
- 主要選單更新 - 重新設計的「前往」動作選單、「編輯」選單「剪下」命令。
- 多行問題輸出 - 在「問題」面板中查看完整的多行問題詳細資訊。
- 尋找所有參考歷程記錄 - 快速重新執行先前的參考搜尋。
- HTML、CSS 和 JSON 的語意選取 - 根據語言語意展開/縮小選取範圍。
- 整合式終端機重排支援 - 終端機文字會隨著面板寬度變更自動重排。
- 基於命令的使用者輸入變數 - 工作和偵錯組態的自訂使用者輸入。
- 更新的擴充功能 API 文件 - 完全重寫,包含擴充功能指南。
如果您想在線上閱讀這些版本資訊,請前往 更新,網址為 code.visualstudio.com。
您也可以觀看 Cloud Developer Advocate Brian Clark 提供的 1.31 版本重點影片。
版本資訊分為與 VS Code 焦點領域相關的下列章節。以下是一些進一步的更新
- 工作台 - 禪模式隱藏行號,新的螢幕廣播模式顯示按鍵。
- 編輯器 - 智慧選取改善、調整參考 CodeLens 位置。
- 整合式終端機 - Windows 上的 ConPTY 支援、「尋找」功能改善。
- 擴充功能撰寫 - 擴充功能變更事件、在瀏覽器動作中開啟資源。
Insiders:想要盡快看到新功能嗎?您可以下載每日建置的 Insiders 版本,並在最新更新可用時立即試用。如需最新的 Visual Studio Code 新聞、更新和內容,請在 Twitter 上追蹤我們 @code!
擴充功能
安裝時無需重新載入
能夠在不安裝或啟用擴充功能時強制重新載入 (重新啟動) VS Code 的情況下安裝擴充功能,是最受歡迎的功能要求之一,我們在此版本中為您帶來此功能。當您安裝或啟用擴充功能時,不再需要重新載入 VS Code。
在以下範例中,使用者遵循建議,在開啟 .vue
檔案後安裝 Vetur 擴充功能。請注意,Vetur 擴充功能提供的語言功能 (例如語法著色、診斷錯誤) 在安裝建議的擴充功能後立即可用。
如果您卸載或停用未啟用的擴充功能,也不需要重新載入。
注意:某些擴充功能由於外部貢獻 (貢獻給其他擴充功能的擴充點) 而需要重新載入。這需要外部貢獻點擁有者透過監聽 extensions.onDidChange
事件來採用。
工作台
新的樹狀小工具
我們已將小工具遊戲提升到新的層次:建立了一個新的樹狀小工具,以解決效能問題,並讓我們能夠在多個工作台區域中提供更多功能。新的樹狀小工具是透過組合我們的高效能清單小工具而建立的。我們打算撰寫一篇獨立的部落格文章,介紹這項工程工作和效能改進。目前,我們將重點放在功能上。
注意:新的樹狀小工具已在檔案總管、所有偵錯樹狀結構、「搜尋」和「查看參考」中採用。除非我們明確停用,否則以下描述的功能適用於大多數這些 UI 區域。
改善的鍵盤導覽
樹狀結構中現在有三種不同的鍵盤導覽類型:simple
、highlight
和 filter
。在 highlight
和 filter
中,在樹狀結構中輸入將在樹狀結構頂端顯示一個小工具 (控制項),表示您現在正在導覽樹狀結構
此小工具也可以用來在 highlight
和 filter
模式之間切換。如果您想要用於在模式之間切換的鍵盤快速鍵,您可以設定一個鍵盤繫結來執行 list.toggleFilterOnType
命令。工作台 > 清單:鍵盤導覽 (workbench.list.keyboardNavigation
) 設定會設定預設模式,包括 simple
模式,在該模式中,輸入樹狀結構元素的前幾個字元只會聚焦該元素。
對於清單/樹狀結構動作具有單字母鍵盤繫結的使用者,仍然可以透過使用 listAutomaticKeyboardNavigation
內容金鑰來使用此功能。例如,VIM 擴充功能會將此內容金鑰設定為 false
以停用自動鍵盤導覽,並新增鍵盤繫結 /
到 list.toggleKeyboardNavigation
命令,因此使用者只需輸入 /
即可導覽樹狀結構。在 VSCodeVIM pull request 中深入了解此功能。
主題作者可以使用以下新的主題金鑰來自訂小工具的色彩
listFilterWidget.background
listFilterWidget.outline
listFilterWidget.noMatchesOutline
注意:這些鍵盤導覽模式目前僅適用於已解析的樹狀結構節點。例如,在檔案總管中,如果從未展開資料夾,則樹狀結構不會尋找其子系。我們正在考慮多種選項來改善此體驗。
階層式全選
現在在樹狀結構中按下 Ctrl+A
(macOS 上為 Cmd+A
) 將以階層方式展開樹狀結構的選取範圍。
可自訂的縮排
您現在可以使用工作台 > 樹狀結構:縮排 (workbench.tree.indent
) 設定來自訂整個工作台中所有樹狀結構的節點縮排。
全部展開/摺疊
現在在展開/摺疊樹狀結構節點時按住 Alt
鍵將以遞迴方式運作。請注意,遞迴展開僅適用於先前在樹狀結構中顯示的節點。例如,檔案總管不會自動展開使用者從未展開過的資料夾。
水平捲動
工作台 > 樹狀結構:水平捲動 (workbench.tree.horizontalScrolling
) 設定現在可在更多樹狀結構和清單 (即檔案總管、「搜尋」、SCM、「偵錯」等) 上啟用水平捲動。
問題面板
多行訊息
「問題」面板現在以不同的行顯示多行診斷訊息。以下範例顯示了 TypeScript 的多行錯誤訊息現在的呈現方式。
您也可以使用摺疊/展開按鈕或問題:以單行顯示訊息和問題:以多行顯示訊息命令,切換以顯示或隱藏完整訊息。
使用鍵盤快速鍵觸發程式碼動作
您現在可以使用與「快速修正」命令相同的預設鍵盤快速鍵 ⌘. (Windows、Linux Ctrl+.) 從「問題」面板觸發程式碼動作。
改善了「前往」選單
我們在前往選單中新增了更多導覽動作,使其更容易探索
檔案總管內容選單中的「剪下」命令
根據熱門要求,我們已將「剪下」命令新增至檔案總管內容選單。
快速捲動
按下 Alt
鍵可在編輯器和檔案總管中啟用快速捲動。根據預設,快速捲動使用 5 倍速度乘數,但您可以使用編輯器:快速捲動靈敏度 (editor.fastScrollSensitivity
) 設定來控制乘數。
禪模式隱藏行號
現在開啟禪模式也會隱藏編輯器行號。此行為可以透過 zenMode.hideLineNumbers
設定來控制。
在 Linux 中使用自訂選單新增了鍵盤導覽
我們的自訂選單現在支援使用 Page Up/Down
和 Home/End
鍵快速跳到選單的開頭或結尾。
在 Windows/Linux 中按兩下應用程式圖示以關閉
由於技術上的權衡,根據預設,Windows 和 Linux 上的自訂標題列會移除按兩下應用程式圖示以關閉視窗的功能。可以透過啟用設定 window.doubleClickIconToClose
來重新獲得此功能,但需要注意的是,您將無法再從此位置拖曳視窗,也無法在 Windows 上取得系統內容選單。
編輯器索引標籤的關閉順序
新的設定 workbench.editor.focusRecentEditorAfterClose
可讓您變更編輯器索引標籤的關閉順序。根據預設,索引標籤將以最近使用 (MRU) 順序關閉。變更此設定可讓您改為從右至左關閉索引標籤。
新的標題變數
在 window.title
設定中可以使用三個新的變數
${activeFolderShort}
:檔案所在的資料夾名稱。${activeFolderMedium}
:檔案所在的資料夾路徑,相對於工作區資料夾。${activeFolderLong}
:檔案所在的資料夾完整路徑。
輸出面板
輸出面板中的智慧捲動行為現在更有效率。當您在輸出面板中的任何位置按一下時,捲動會鎖定,當您在最後一行按一下時,捲動會解除鎖定。
螢幕廣播模式
VS Code 中有一個新的螢幕廣播模式,可醒目提示游標位置和按鍵。螢幕廣播模式 (開發人員:切換螢幕廣播模式) 對於示範目的可能很有用。
編輯器
智慧選取
我們致力於改善選取範圍選單中展開選取範圍和縮小選取範圍的實作。我們正在新增 API,以便語言伺服器可以根據其語意知識指定選取步驟。此外,我們也改善了預設實作。
請繼續關注,隨著智慧選取的改善,未來還會有更多功能。使用 smart-select
標籤來查看我們正在進行的工作。
參考歷程記錄
現在「參考」檢視有一個參考:顯示歷程記錄命令。它會彈出「快速選取」,其中包含先前的搜尋,可讓您快速重新執行先前的搜尋。
參考 CodeLens
選取參考 CodeLens 時,會開啟查看編輯器。現在可以使用 references.preferredLocation
設定來控制此行為。其選項為 peek
和 view
,後者會在新的檢視中顯示參考。
程式碼片段描述
在撰寫具有長描述的程式碼片段時,過去您被迫撰寫長單一字串。不支援使用陣列,就像您可以針對 body
使用陣列一樣。現在已變更,可以使用字串陣列來撰寫長描述。
{
"prefix": "happy",
"body": "#Happy Coding!",
"description": ["First Line", "Second Line", "Third Line"]
}
已移除舊版搜尋模式
在 20 個版本之前,我們開始在 VS Code 中使用 ripgrep 進行搜尋。我們舊的基於 Node.js 的搜尋實作仍然可以使用設定 search.useLegacySearch
。但正如近藤麻理惠所說,我們必須整理不再令人愉悅的事物。如果您一直在使用回溯參考或向前查看等 Regex 功能,請務必開啟 search.usePCRE2
設定。
使用簡單文字編輯器將設定編輯為 JSON
基於類似的主題,既然我們已經有了數個版本的設定 UI,我們正在研究簡化 JSON 設定編輯體驗。如果您透過開啟 settings.json
檔案或按一下設定 UI 中的 {}
按鈕,或叫用喜好設定:開啟使用者設定 (JSON) 命令,將設定編輯為 JSON,那麼您將獲得一個簡單的 JSON 編輯器,而不是我們先前使用的分割 JSON 編輯器。您仍然可以使用喜好設定:開啟預設設定 (JSON) 命令來查看預設設定清單。
如果您真的懷念左側具有預設設定的分割 JSON 編輯器,您可以透過啟用 workbench.settings.useSplitJSON
設定來還原它。請注意,如果您願意,您將始終能夠將設定編輯為 JSON。
擴充功能的網路 Proxy 支援
設定Http: Proxy 支援 (http.proxySupport
) 現在預設為所有擴充功能啟用網路 Proxy 支援。
語言
TypeScript 3.3
我們現在隨附 TypeScript 3.3.1。此 TypeScript 更新帶來了一些重要的錯誤修正和潤飾。
移除 markdown.previewFrontMatter 設定
已移除 markdown.previewFrontMatter
設定。Markdown 預覽現在始終隱藏 YAML frontmatter (這是 markdown.previewFrontMatter
的預設設定)。
Markdown 擴充功能 (例如 Markdown yaml Preamble 和 GitHub Markdown Preview) 會在預覽中將 frontmatter 呈現為表格。
語意選取
語意選取現在適用於 HTML、CSS/LESS/SCSS 和 JSON
整合式終端機
重排支援
現在,當終端機水平調整大小時,終端機會換行和取消換行。
Windows 上的 ConPTY 支援
透過 Windows ConPTY API 管理終端機處理程序現在在 Windows Insiders 快環 (組建編號 18309+) 中以選擇加入選項提供。
{
"terminal.integrated.windowsEnableConpty": true
}
這將使用 Windows 主控台團隊提供的 ConPTY 系統作為終端機的後端。啟用此功能應可修正 Windows 終端機的許多問題,特別是關於色彩支援、互動式應用程式和原生支援 VT 序列的 Shell。
以下是在 WSL 終端機中支援 256 ANSI 色彩的前後比較
用於連結的目前工作目錄
在 Linux 和 macOS 上,終端機現在將相對於目前工作目錄 (而非終端機的初始目錄) 解析連結。
終端機中的「尋找」功能改善
終端機中的「尋找」功能現在支援累加式「隨打即找」搜尋,以及在單行中尋找多個詞彙的功能。
commandsToSkipShell
設定的改善
先前,設定 terminal.integrated.commandsToSkipShell
是將跳過終端機評估並改由 VS Code 處理的所有命令的清單。這很麻煩,因為您需要在設定檔中包含 100 多個命令才能變更它。現在已變更為新增和刪除的清單,因此您只需包含對預設清單的變更
{
"terminal.integrated.commandsToSkipShell": [
// Make ctrl+n open a new file when the terminal is focused
"workbench.action.files.newUntitledFile",
// Send ctrl+e to the terminal
"-workbench.action.quickOpen"
]
}
已啟用新的緩衝區實作
在 v1.29 中引入的基於 TypedArray/ArrayBuffer 的終端機緩衝區現在已開啟,舊的實作已移除。這應該可以大幅提升終端機的輸送量,並顯著減少其記憶體佔用量。
偵錯與工作
自訂命令使用者輸入變數
在上一個里程碑中引入的 輸入變數 是一種強大的機制,可用於要求工作或偵錯組態中的使用者輸入。最初,我們提供了 promptString
和 pickString
輸入變數。
在此里程碑中,我們引入了一種新的輸入變數類型 command
,它會在內插輸入變數時執行任意命令。由於命令可以由擴充功能貢獻,因此現在可以透過新的實作來擴充使用者輸入變數。
以下範例顯示如何在偵錯組態中使用 command
類型的使用者輸入變數,讓使用者從特定資料夾中找到的所有測試案例清單中選取測試案例。假設某些擴充功能提供 extension.mochaSupport.testPicker
命令,該命令會尋找可設定位置中的所有測試案例,並顯示選取器 UI 以選取其中一個。
{
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Launch Test",
"program": "${workspaceFolder}/${input:pickTest}"
}
],
"inputs": [
{
"id": "pickTest",
"type": "command",
"command": "extension.mochaSupport.testPicker",
"args": {
"testFolder": "${workspaceFolder}/tests"
}
}
]
}
工作輸出支援分割終端機
您現在可以設定工作,使其在分割終端機面板中顯示輸出,而不是建立新的終端機面板。工作組態可以在 presentation
區段中使用 group
屬性來定義應顯示工作輸出的位置。
如果您執行以下兩個工作,它們將在分割終端機中顯示,以便您可以同時看到它們
{
"version": "2.0.0",
"tasks": [
{
"label": "Task One",
"type": "shell",
"command": "echo One && sleep 5000",
"problemMatcher": [],
"presentation": {
"group": "groupA"
}
},
{
"label": "Task Two",
"type": "shell",
"command": "echo Two && sleep 5000",
"problemMatcher": [],
"presentation": {
"group": "groupA"
}
}
]
}
預覽功能
預覽功能尚未準備好發行,但功能已足夠使用。我們歡迎您在開發期間提供早期意見反應。
工作台的網格版面配置
工作台版面配置正在重新設計,以使用編輯器本身使用的相同網格版面配置。此處完成的工作不僅將簡化長期維護工作台版面配置的工程工作,還有助於我們啟動新的體驗。
在此里程碑中,我們隨附了一種這樣的體驗,以示範使用新的網格版面配置可以更輕鬆地實現的功能,即切換編輯器區域。在啟用實驗性網格版面配置 ("workbench.useExperimentalGridLayout": true
) 的情況下,有一個新的命令切換編輯器區域,它會隱藏程式碼編輯器。這可讓您建立 VS Code 終端機面板,該面板佔用完整的編輯器區域,如下所示
如果您使用 code file.txt
從終端機開啟檔案,它仍然會彈出編輯器,就像您預期的一樣。此功能仍在進行中,並且存在已知問題,但我們鼓勵您查看並提交問題。您可以透過 此查詢 隨時掌握有關此工作問題的最新資訊。
HTML 和 CSS 自訂資料支援
由於此功能處於預覽狀態,因此設定、貢獻點和資料格式可能會變更。
今天,前端開發人員通常以 HTML/CSS 的超集進行程式碼編寫
- Web Components 允許自訂 HTML 元素,例如
<my-button type="alert"></my-button>
。 - PostCSS 允許自訂 CSS 屬性,例如
size
和尚未標準化的 CSS 功能,例如:any-link
。 - 各種架構允許在來源 HTML/CSS 中具有更大的彈性。
在此迭代中,我們改善了 1.30 中引入的 HTML 自訂資料支援,並新增了 CSS 自訂資料支援。
- 使用
html.experimental.customData
或css.experimental.customData
載入自訂資料。(已移除html.experimental.custom.tags
和html.experimental.custom.attributes
。) - 或者,使用
contributes.html.experimental.customData
或contributes.css.experimental.customData
將 JSON 捆綁到擴充功能中。 - 最後,如果您要撰寫使用 vscode-html-languageservice 或 vscode-css-languageservice 的語言伺服器,則可以使用自訂資料建立語言服務。
自訂資料增強了 VS Code 對 HTML/CSS 的理解。例如,透過這些 HTML/CSS JSON 貢獻,VS Code 可以為自訂 HTML 標籤/屬性和 CSS 屬性/pseudoClass 提供完成和懸停
{
"version": 1,
"tags": [
{
"name": "my-button",
"description": "My button",
"attributes": [
{
"name": "type",
"description": "My button type",
"values": [{ "name": "alert" }]
}
]
}
]
}
{
"version": 1,
"properties": [
{
"name": "my-size",
"description": "Compiles down to `width` and `height`. See details at https://github.com/postcss/postcss-size."
}
],
"pseudoClasses": [
{
"name": ":my-link",
"description": ":any-link pseudo class. See details at https://preset-env.cssdb.org/features#any-link-pseudo-class."
}
]
}
上述範例可在 octref/simple-customdata 中取得,而功能更完整的範例可在 octref/svg-data 中取得。
這些指南說明了資料格式以及如何透過設定和擴充功能貢獻點來使用它們。
擴充功能撰寫
擴充功能變更事件
新增了一個新的事件 extensions.onDidChange
,當 extensions.all
陣列變更時,會觸發此事件。當安裝、卸載、啟用或停用擴充功能時,可能會發生這種情況。請參閱安裝擴充功能時無需重新載入章節。
/**
* An event which fires when `extensions.all` changes. This can happen when extensions are
* installed, uninstalled, enabled or disabled.
*/
export const onDidChange: Event<void>;
注意:引入新的貢獻點的擴充功能作者應監聽此事件,並相應地更新工作台的狀態。
在瀏覽器中開啟資源
我們觀察到多個擴充功能使用 node 模組 (例如 opn
或 open
) 在瀏覽器中開啟 URL。鑑於對此功能的需求,我們新增了一個新的 API vscode.env.openExternal
。它預期一個 URL,可用於開啟網站連結、郵件連結或應用程式 URL 處理常式。也接受檔案 URL,以便在其預設應用程式 (例如 PDF 檔案) 中開啟它們。
// open default browser
await vscode.env.openExternal(
vscode.Uri.parse('https://github.com/microsoft/vscode/issues/66741')
);
注意:目前使用 opn
或 open
模組的擴充功能作者應切換到此新的 API。
全域儲存路徑
現在為擴充功能提供了一個全域儲存路徑 ExtensionContext.globalStoragePath
,該路徑指向具有寫入/讀取權限的本機目錄。如果您需要儲存可從所有工作區存取的大型檔案,這是一個不錯的選擇。
/**
* An absolute file path in which the extension can store global state.
* The directory might not exist on disk and creation is
* up to the extension. However, the parent directory is guaranteed to be existent.
*
* Use [`globalState`](#_ExtensionContext.globalState) to store key value data.
*/
globalStoragePath: string;
當移除擴充功能時,VS Code 會負責清除此路徑。
注意:目前使用自訂檔案系統位置來跨工作區儲存狀態的擴充功能作者應切換到此新的 API。
CodeActionKind.intersects
CodeActionKind.intersects
方法可用於檢查 CodeActionProvider
是否應費心計算其程式碼動作
import * as vscode from 'vscode';
export class OrganizeImportsProvider implements vscode.CodeActionProvider {
public provideCodeActions(
document: vscode.TextDocument,
range: vscode.Range,
context: vscode.CodeActionContext,
token: vscode.CancellationToken
): vscode.CodeAction[] {
// Only return organize imports actions if they were explicitly requested
// We can check this using `intersects`.
if (!context.only || !vscode.CodeActionKind.SourceOrganizeImports.intersects(context.only)) {
// Organize imports actions were not requested
return [];
}
// Organize imports was requested
...
}
}
contributes.resourceLabelFormatters
擴充功能現在可以貢獻資源標籤格式器,這些格式器指定如何在工作台中的任何位置顯示 URI。例如,以下是如何讓擴充功能為具有配置 remotehub
的 URI 貢獻格式器
"contributes": {
"resourceLabelFormatters": [
{
"scheme": "remotehub",
"formatting": {
"label": "${path}",
"separator": "/",
"workspaceSuffix": "GitHub"
}
}
]
}
這表示所有具有配置 remotehub
的 URI 都將僅透過顯示 URI 的 path
區段來呈現,而分隔符號將為 /
。具有 remotehub
URI 的工作區,其標籤中將具有 GitHub 後綴。
將引數新增至鍵盤繫結
在 package.json
中定義鍵盤繫結時,您現在可以定義引數。執行時,這些引數會傳遞至命令。
在以下範例中,它是:{foo: 1, bar: 2}
。
"keybindings": {
"key": "cmd+i",
"command": "myCommand",
"args": {
"foo": 1,
"bar": 2
}
}
完全控制 createTerminal 環境
新的設定 TerminalOptions.strictEnv
設定為 true 時,將完全不會對終端機環境進行任何修改,而是會完全按照擴充功能傳入的方式使用。
// This will create a terminal whose environment only contains the single value
// FOO=BAR.
const terminal = createTerminal({
name: 'Test terminal',
env: {
FOO: 'BAR'
},
strictEnv: true
});
Node.js 更新
VS Code 在其上執行的 Electron 版本已更新,隨之而來的是 Node.js 從 8.9
更新到 10.2.0
。所有擴充功能現在都將在此較新版本的 Node.js 上執行。請參閱 Node v10.0.0 棄用 以取得 Node.js 10 中棄用的清單。
更新的 Octicons
我們已將 Octicons 版本更新為 8.3.0,現在支援以下圖示
$(arrow-both)
$(bold)
$(color-mode)
$(eye-closed)
$(fold-down)
$(fold-up)
$(grabber)
$(italic)
$(kebab-horizontal)
$(kebab-vertical)
$(note)
$(organization-filled)
$(person-filled)
$(project)
$(request-changes)
$(screen-full)
$(screen-normal)
$(smiley)
$(tasklist)
$(text-size)
$(unverified)
$(verified)
您可以閱讀我們的文件以查看我們支援的圖示完整清單。如需變更的完整詳細清單,請參閱 Octicon 變更記錄。
建議的擴充功能 API
每個里程碑都帶有新的建議 API,擴充功能作者可以試用它們。與往常一樣,我們渴望您的意見反應。這是您試用建議 API 必須做的事情
- 您必須使用 Insiders 版本,因為建議 API 經常變更。
- 您必須在擴充功能的
package.json
檔案中包含此行:"enableProposedApi": true
。 - 將最新版本的 vscode.proposed.d.ts 檔案複製到您的專案中。
請注意,您無法發佈使用建議 API 的擴充功能。我們可能會在下一個版本中進行重大變更,而且我們絕不想破壞現有的擴充功能。
SignatureHelpContext.activeSignatureHelp
建議的 SignatureHelpContext.activeSignatureHelp
欄位會追蹤先前作用中的簽章
import * as vscode from 'vscode';
class MySignatureHelpProvider implements vscode.SignatureHelpProvider {
provideSignatureHelp(
document: vscode.TextDocument,
position: vscode.Position,
token: vscode.CancellationToken,
context: vscode.SignatureHelpContext
): vscode.ProviderResult<vscode.SignatureHelp> {
// The active signature help when this provider was triggered or undefined if
// no signature help was active.
console.log(context.activeSignatureHelp);
...
}
}
提供者可以使用此欄位來追蹤在重新觸發簽章說明提供者之前選取了哪個多載。
自動修正和 CodeAction.isPreferred
Code Action API 為 VS Code 的快速修正 (您在編輯器中看到的燈泡) 提供支援。雖然給定錯誤可能有很多快速修正,但通常其中一個快速修正是解決問題最合理的方法。例如,修正拼字錯誤通常比產生新欄位更可能是修正方法
透過使用建議 API,擴充功能可以在 CodeAction
上設定 isPreferred
,以指示這是解決基礎問題最合理的方法。可以使用自動修正命令自動套用慣用的修正 (⌥⌘. (Windows、Linux Shift+Alt+.))
慣用的快速修正通常應
- 正確修正基礎錯誤 (而不是抑制它)。
- 成為錯誤的合理修正方法。
- 不要意外地執行大量的操作。
重構程式碼動作也可以標記為「偏好」,以表示它們是最合理的重構方式。例如,當有多個 Extract constant (提取常數) 重構可用時,使用者通常只想提取到最近的區域變數。如果該重構程式碼動作被標記為 isPreferred
,使用者可以為其設定單一的快捷鍵
{
"key": "ctrl+shift+r ctrl+e",
"command": "editor.action.codeAction",
"args": {
"kind": "refactor.extract.constant",
"preferred": true
}
}
修正所有來源動作
提議的 source.fixAll
CodeActionKind
為擴充功能建立了一個慣例,使其能夠自動修正檔案中的錯誤。這種新的來源動作種類與 Organize imports (整理匯入) 類似,並且可以輕鬆地為「修正所有」動作設定快捷鍵,或是在儲存時啟用自動修正。
// On save, run both fixAll and organizeImports source actions
"editor.codeActionsOnSave": {
"source.fixAll": true,
"source.organizeImports": true,
}
TSLint 擴充功能 已經使用這個提議的來源程式碼動作種類來實作「修正所有」和「儲存時自動修正」功能。
偵錯配接器協定
提議的資料斷點偵錯配接器協定
作為 資料斷點 (又稱「監看點」) 正在進行工作的後續步驟,我們在資料斷點的偵錯配接器協定設計上取得了一些進展。提議的 DAP 變更位於這個 分支 上,而對應的 TypeScript API 可以在 資料斷點提案 中找到。
如果您有興趣在您的偵錯工具擴充功能中支援資料斷點,請查看提案並提供意見回饋。
即時主題編輯
當您開發色彩主題擴充功能時,您可以在 擴充功能開發主機 視窗中即時看到色彩變更的應用。
檔案圖示主題也適用。
工程
Electron 3.0 更新與 Electron 4.0 探索
在這個里程碑中,我們完成了將 Electron 3 捆綁到 VS Code 的探索,使其成為我們首次發布這個穩定版本的 Electron。這是一個主要的 Electron 版本發布,並帶有 Chrome 66 和 Node.js 10.x (與我們目前的版本 Chrome 61 和 Node.js 8.x 相比,是一大躍進)。
同時,我們開始探索更新到 Electron 4,我們希望很快能將其推送到 Insiders 版本。
效能資訊改善
在這個版本中,開發人員:啟動效能 命令輸出會顯示在編輯器中,而不再顯示在 DevTools 中。這使得它更易於閱讀且更快存取。此外,資訊的許多問題也已修正。
移除 WinJS.Promise ✅
當 VS Code 剛開始時,JavaScript 並不像今天這樣。例如,那時還沒有原生 Promise,因此團隊決定使用 WinJS.Promise
進行非同步工作。今天情況已不同:原生 Promise 已經存在,而 WinJS.Promise
已經過時。在去年年中,我們開始努力從程式碼庫中移除 WinJS.Promise
,並在 12 月完成了這項工作。
嚴格的空值檢查
我們持續進行 對 VS Code 主要程式碼庫進行嚴格空值檢查 的工作。感謝 您的協助,在這個里程碑中,我們能夠為大量的測試檔案啟用嚴格空值檢查,從而消除了大量錯誤。
我們將在下一個里程碑中繼續進行嚴格空值檢查的工作。
擴充功能貢獻
我們的團隊維護或貢獻了許多 VS Code 擴充功能。本月最值得注意的是
TSLint 支援
新的 TSLint 擴充功能現在支援使用 source.fixAll
程式碼動作來實作「儲存時自動修正」功能。
"editor.codeActionsOnSave": {
"source.fixAll": true
}
我們建議所有已棄用的 TSLint (eg2.tslint) 擴充功能使用者遷移到新的 TSLint 擴充功能。
Stylus 語言支援
Stylus 語言擴充功能 現在使用來自 vscode-css-languageservice 的精選資料,以提供具有狀態警告和語法文件的最新完成項目。
GitHub 提取請求
在這個里程碑中,我們繼續致力於改進 GitHub 提取請求 擴充功能。
以下是一些新功能
- GitHub 審閱支援。您現在可以將評論分組到 審閱 中,而不是個別新增。
- 當工作區是 GitHub 儲存庫時,當您加入 Live Share 會議時,此擴充功能可以無縫運作。
- 我們逐步將 GraphQL 引入專案中,因此描述檢視現在可以呈現更詳細的提取請求資訊,並且擴充功能的整體效能也得到了提升。
- 現在,當合併提取請求時,您可以選擇 建立合併提交、Squash and Merge 或 Rebase and Merge。
- 效能改進。當您瀏覽提取請求、檔案變更和簽出提取請求時,我們減少了對 GitHub 的 API 呼叫和 git 操作,這使得擴充功能的回應速度更快,尤其是在 Windows 上。
您可以在 vscode-pull-request-github 版本資訊 閱讀此擴充功能的完整版本資訊。
新文件
Python Jupyter Notebooks
一個新的 使用 Jupyter Notebooks 主題描述了如何從 VS Code 內部開啟、偵錯和匯出 Jupyter Notebooks。
JavaScript 和 TypeScript 文件改進
我們已更新 JavaScript 和 TypeScript 文章,以確保它們是最新的,並提供更多有用的資訊。
JavaScript 和 TypeScript 頁面現在提供了 VS Code 為這些語言提供的功能概述。這些功能的更詳細說明和教學課程已移至目錄中 Node.js / JavaScript 和 TypeScript 下的新頁面。
更新的擴充功能 API 文件
對於擴充功能作者而言,VS Code API 文件已重新編寫並移至其自己的目錄。
在這裡您可以找到文章來
值得注意的修正
- 7570: VS Code 無法離線開啟
- 14372: 擴充功能:停用狀態需要在視窗之間傳達
- 34396: 單 CPU VM 上的高 CPU 使用率
- 58167: 恢復作業系統後,終端機和迷你地圖還原紋理已損壞
- 59794: 當 editor.accessibilitySupport 設定為 'auto' 時,終端機螢幕閱讀器支援無法運作
- 61649: 偵錯無法讀取未定義的屬性 'onError'
- 63832: 偵錯擴充功能時無法附加到 lsp 伺服器
- 64948: GDB C/C++ 偵錯工具無法啟動,並出現錯誤
- 65697: 在節點叢集 fork 程序上,不遵守具有 autoAttachChildProcesses 的偵錯 stopOnEntry
- 66302: Ctrl + L 預設應綁定到清除 repl
- 66681: 虛擬文件未顯示「選取以進行比較」和「與選取項目比較」命令
此版本還包含 Microsoft 安全回應中心 CVE-2019-0728 的安全性更新。
感謝您
最後但同樣重要的是,非常感謝以下人士協助讓 VS Code 變得更好
貢獻於我們的問題追蹤。如果您想幫助我們管理湧入的問題,請參閱我們的 社群問題追蹤 頁面。
- Alexander (@usernamehw)
- Simon Chan (@yume-chan)
- Prabhanjan S Koushik (@skprabhanjan)
- Eric Amodio (@eamodio)
- Christopher Leidigh (@cleidigh)
貢獻於 vscode
- Alec Chan (@aechan): 搜尋:改進清除按鈕行為 PR #63082
- Alexander Eyers-Taylor (@aeyerstaylor)
- Agustín Rodríguez (@agurodriguez): 防止「回報問題」和「處理程序瀏覽器」視窗以全螢幕模式開啟 PR #64839
- Anirudh Rayabharam (@anirudhrb): 已修正問題 65204:開啟按鍵綁定圖示消失 PR #65968
- @asaf050: 允許從終端機內容選單終止終端機 PR #66535
- Chris Patterson (@chrisrpatterson): 更新組建徽章 URL PR #67008
- Christian Alexander (@ChristianAlexander): 新增顯示處理由 git add -N 新增的檔案 PR #59163
- Christian Flach (@cmfcmf): 將 terminalGroup 新增至工作,以允許在分割窗格中執行工作 PR #65973
- Christian Oliff (@coliff): EditorConfig.org 的 HTTPS 連結 PR #65358
- Danny Tuppeny (@DanTup): 修正錯字: "accepeted" => "accepted" PR #64976
- @davidwu226: 修正無效的 JSON。 PR #65447
- Donald Pipowitch (@donaldpipowitch): 新增 .vscodeignore 語法醒目提示 PR #64960
- Thai Pangsakulyanont (@dtinth): 在剖析 tsconfig.json 時,使用 jsonc.parse 而不是 JSON.parse,修正了當 tsconfig.json 包含註解時,
-b
旗標未啟用的錯誤。 PR #67535 - Thien Do (@dvkndn): 將 nvmrc 更新至節點 8 PR #67183
- Ashwin Ramaswami (@epicfaace)
- Phil (@flurmbo): 偵測 md 影像連結 PR #66958
- li zixiang (@fuafa): 將嚴格空值檢查新增至 findModel.test.ts PR #66436
- Gabriel Arjones (@g-arjones): 修正 #59635 PR #60111
- @g1tman: 當終端機在調整大小且不可見時,請勿在終端機中提取字型 PR #66781
- Gabriel DeBacker (@GabeDeBacker): 允許終端機建立忽略 VSCode 的處理程序環境 PR #64733
- Chris Ganga (@gangachris)
- 為 src/vs/base/test/common/async.test.ts 啟用嚴格空值檢查 PR #65442
- 為 ./vs/base/test/common/keyCodes.test.ts 啟用嚴格空值檢查 PR #65454
- 為 ./vs/base/test/common/octicon.test.ts 啟用嚴格空值檢查 PR #65458
- 啟用 ./vs/base/test/node/config.test.ts 的嚴格空值檢查 PR #65471
- 啟用 ./vs/base/test/common/event.test.ts 的嚴格空值檢查 PR #65444
- 啟用 ./vs/base/test/common/history.test.ts 的嚴格空值檢查 PR #65453
- 為 windowsFinder 啟用嚴格空值檢查 PR #65551
- 為尋找控制器啟用嚴格空值檢查 PR #65553
- Gaurav Gupta (@gaurav5430): 為 ./vs/platform/contextkey/test/common/contextkey.test.ts 啟用嚴格空值檢查 PR #65474
- Guy Waldman (@guywald1): [git] 新增從特定 ref 建立分支的命令 PR #59078
- Henk Mollema (@henkmollema): 將版權年份更新至 2019 年 PR #65875
- Ilya Biryukov (@IlyaBiryukov): 新增 Git 記錄、globalConfig 和樹狀結構差異 API PR #64826
- James Dinh (@jamesdinht): 為檔案測試啟用嚴格空值檢查 PR #65249
- James George (@jamesgeorge007): 在使用者程式碼片段中新增多行描述支援 PR #66159
- Jimi (Dimitris) Charalampidis (@JimiC): [主題] 新增重新載入主題而無需重新啟動編輯器的功能 PR #66115
- Julia McGeoghan (@jkmdev)
- Joseph Duchesne (@josephduchesne): 修正 #58159,方法是觸發版面配置重新整理以解決 xtermjs 錯誤… PR #60221
- Josh Goldberg (@JoshuaKGoldberg)
- Krish De Souza (@Kedstar99)
- Kermit Xuan (@Kermit-Xuan)
- Claire (@krider2010): 允許完全停用或手動更新,以及自動更新 PR #60973
- Kumar Harsh (@kumarharsh): fix(loc): 修正透明色彩描述的不正確措辭 PR #66334
- Anton Marchenko (@marchenko-am): 修正 #64379 - SimpleFindWidget 位置已變更 (在隱藏狀態中) PR #64558
- Mathias Rasmussen (@mathiasvr): HTML 程式碼片段:一致的 void 標籤 PR #66072
- Maksymilian Barnaś (@maxbarnas): #61410 新增「在資料夾中尋找」動作的按鍵綁定 PR #61526
- Mrigank Krishan (@Mrigank11): 要求將已知的大型資料夾新增至 .gitignore,修正 #44304 PR #44562
- J.M. Rütter (@mynetx): 隱藏在術語分割上短暫顯示的未定義標題 PR #61981
- Néstor Hernández Ojeda (@nesukun): 為強制推送新增至 scm/git 內容選單的項目 PR #60387
- Noj Vek (Manoj P) (@nojvek): 修正 #27107 - 使用者終端機的 cwd 作為連結 PR #64750
- Nuno Lopes (@nunottlopes): 修正 Windows 下路徑包含空格時,在終端機中執行作用中檔案的問題 PR #65331
- Oleg Voloshin (@oniondomes): 為 workspaceStats 測試啟用嚴格空值檢查 PR #65429
- Raul Piraces Alastuey (@piraces): 將嚴格空值檢查新增至 suggestMemory.test.ts PR #66754
- Prateek Singh (@punteek): 為 simpleServices 測試啟用嚴格空值檢查 PR #65571
- Rich Evans (@rcbevans): 新增 xterm mouseleave 以關閉小工具 PR #66576
- Matthias Reitinger (@reima): 修正按鍵綁定清單標頭行為問題 (#_41558) PR #60217
- Romain Marcadier-Muller (@RomainMuller): 修正使用參考時的 "tsc watch" 工作 PR #67148
- Rudi Chen (@rudi-c): 為 breadcrumbs.ts、outlineModel.ts、breadcrumbsModel.ts 啟用 strictNullChecks PR #65062
- Segev Finer (@segevfiner)
- @SimonEggert: 新增索引標籤關閉順序的設定 PR #66635
- Prabhanjan S Koushik (@skprabhanjan)
- Tereza Tomcova (@the-ress): 正確處理 bootstrap.js 中的 UNC 路徑 PR #66128
- Tiago Ribeiro (@TiagoR98): 功能 #24344 已實作 PR #65072
- Tyler James Leonhardt (@TylerLeonhardt): 處理只有單引號但沒有空格的邊緣案例 PR #66359
- Alexander (@usernamehw)
- 為 Comparers 測試啟用嚴格空值檢查 PR #65301
- 將對比度新增至檢查 TM 小工具 PR #64495
- 為 quickOpenScorer 測試啟用嚴格空值檢查 PR #65299
- 將游標移至大括號內 PR #67164
- 排除/包含 commandsToSkipShell 而不是破壞使用者設定檔 PR #66179
- 為 Notifications 測試啟用嚴格空值檢查 PR #65291
- 為 snippetVariables 測試啟用嚴格空值檢查 PR #65236
- 為 SplitView 測試啟用嚴格空值檢查 PR #65307
- 在主題/圖示主題篩選器後新增空格 PR #64745
- 為 GridView 測試啟用嚴格空值檢查 PR #65305
- 當頂部邊框中醒目提示髒狀態時,完全隱藏索引標籤關閉按鈕 PR #64718
- Dipen Ved (@vedipen)
- @vemoo: 修正具名多行問題模式剖析 PR #65840
- Vladimir Kotikov (@vladimir-kotikov): 新增在執行
git pull
之前自動存放變更的選項 PR #59849 - Jeremy Shore (@w9jds): 修正 #57910 - 新增自動提取逾時的設定 PR #59988
- Matthew Walinga (@walinga): 使用階段行 cmd 時,暫存空的最後一行移除 PR #59974
- Yisrael Veller (@YisraelV)
貢獻於 vscode-eslint
- Jonathan T L Lee (@Lee182): 問題 529,新增 pnpm 支援 PR #572
- Loune Lam (@loune): disable-eslint 修正和改進 PR #588
貢獻於 language-server-protocol
- Laurent Tréguier (@LaurentTreguier): 移除重複的標籤屬性 PR #638
- Jason Axelson (@axelson): 修正變更記錄連結 PR #654
貢獻於 vscode-languageserver-node
- Daniel McNab (@DJMcNab):
- Felix Becker (@felixfbecker): 將 repository.directory 欄位新增至 package.json PR #439
- Laurent Tréguier (@LaurentTreguier): 修正組態並非總是使用資源範圍的問題 PR #446
- Aleksey Kladov (@matklad): 在 readme 中提及
npm run symlink
PR #452
貢獻於 debug-adapter-protocol
- Ben Jackson (@puremourning): 將 vimspector 新增至實作清單 PR #21
- Sean Allred (@vermiculus): 更正總覽中的各種錯字 PR #22
貢獻於 vscode-vsce
- Alexander (@usernamehw): 將色彩新增至主控台訊息 PR #324
貢獻於 vscode-json-languageservice
貢獻於 vscode-css-languageservice
- Krister Kari (@kristerkari): 請勿針對 :export 區塊內的不明屬性發出警告 PR #137
- Simon Chan (@yume-chan)
- Matthew Dean: 支援 Less 根函數、查閱、匿名混合 PR #135
貢獻於 vscode-html-languageservice
- Liam Newman (@bitwiseman): 更新至 1.9.0-beta1 PR #43
貢獻於 vscode-generator-code
- Aurélien Pupier (@apupier): 遵循 markdownLint 指南以進行換行 #154 PR #155
貢獻於 vscode-recipes
- Alan Agius (@alan-agius4): 文件:更新 ng test 命令 PR #179
- Bryan Chapel (@bryanchapel): 更新 README.md PR #176
- @CannibalKush: 修改 angular flow PR #177
- zhan ishzhanov (@janat08): 分割 JEST 配方的引數 PR #174
貢獻於 localization
有超過 600 位 Cloud + AI Localization 社群成員正在使用 Microsoft Localization Community Platform (MLCP),其中約有 100 位活躍貢獻者參與 Visual Studio Code。
我們感謝您的貢獻,無論是提供新的翻譯、對翻譯進行投票,還是建議流程改進。
這是 貢獻者 的快照。如需專案的詳細資訊,包括貢獻者姓名列表,請造訪專案網站:https://aka.ms/vscodeloc。
- 保加利亞語: Любомир Василев。
- 捷克語: Samuel Tulach。
- 丹麥語: Johan Fagerberg。
- 荷蘭語: Jos Verlinde,Eric Algera。
- 芬蘭語: Petri Niinimäki, Valtteri Vatanen。
- 法語: Mohamed Sahbi, Thomas Gouthière。
- 德語: Frank Lindecke,Hans Meiser,Jakob von der Haar,Sebastian Seidl。
- 希伯來語: Kyle Orin。
- Hindi: 印地語:Satish Yadav,nirav adatiya,shaswat rungta,Dhanvi Kapila。
- Hungarian: 匈牙利語:Péter Nagy。
- Chinese Simplified: 簡體中文:福永 叶, Xiangrui Kong, Licheng Ren, Young Bige, 文 陈, Y F, 彦佐 刘, 九鼎 谭。
- Indonesian: 印尼語:Azhe Kun。
- Italian: 義大利語:Michael Longo。
- Japanese: 日語:nh,Masakazu TENMYO, 裕子 知念。
- Korean: 韓語:SeungJin Jeong。
- Norwegian: 挪威語:Stephan Eriksen。
- Polish: 波蘭語:grzegorz m, Jakub Jedryszek。
- Portuguese (Brazil): 葡萄牙語 (巴西):Bruno Talanski, Alan Willian, Letticia Nicoli, Alessandro Fragnani, Cynthia Zanoni。
- Portuguese(Portugal): 葡萄牙語 (葡萄牙):Vitor Barbosa。
- Spanish: 西班牙語:Engel Aguilar, José María Aguilar, julian3xl, Alvaro Enrique Ruano, Ing. Sergio Uziel Tovar Lemus, Mario Mendieta。
- Tamil: 坦米爾語:Mani M。
- Turkish: 土耳其語:Muhammed Emin TİFTİKÇİ。
- Ukrainian: 烏克蘭語:Did Kokos。
- Vietnamese: 越南語:Việt Anh Nguyễn。