2019 年 7 月 (版本 1.37)
更新 1.37.1:此更新解決了這些 問題。
下載:Windows: x64 | Mac: Intel | Linux: deb rpm tarball snap
歡迎使用 Visual Studio Code 2019 年 7 月發行版本。此版本包含許多更新,我們希望您會喜歡,其中一些重點包括
- 完整產品圖示重新整理 - VS Code 中所有的新現代化圖示。
- 設定編輯器支援字串陣列 - 直接從設定編輯器新增至字串陣列。
- 在檔案總管中顯示搜尋結果 - 快速跳至檔案總管中的檔案位置。
- 在選取範圍中顯示空格 - 僅針對選取的文字查看空格字元。
- 尋找和取代保留大小寫 - 取代文字而不會遺失字母大小寫。
- 終端機搜尋 UX 改善 - 終端機更直覺的由下往上搜尋順序。
- 改良 SCSS @import 導覽 - VS Code 現在會檢查更多 SCSS 檔案的位置。
- 遠端開發教學課程 - 透過 SSH 和 WSL 工作的全新教學課程。
如果您想在線上閱讀這些發行說明,請前往 更新,網址為 code.visualstudio.com。
您也可以觀看由開發人員推廣者 Brian Clark 製作的 1.37 版本 重點影片。
Insiders: 想要盡快看到新功能嗎?您可以下載每晚組建的 Insiders 版本,並在最新更新可用時立即試用。如需最新的 Visual Studio Code 新聞、更新和內容,請在 Twitter 上追蹤我們 @code!
工作台
新產品圖示
我們已更新所有產品圖示,使其樣式、色彩和大小一致。我們經歷了 各種迭代,社群在每個過程中都提供了有用的意見反應。
注意:這不包含我們對 Octicons 的使用,這些圖示會出現在狀態列和快速選取中。
設定編輯器支援字串陣列
設定編輯器現在允許編輯字串陣列設定。新增項目按鈕會彈出一個輸入方塊,以新增字串。
擴充功能作者可以透過 貢獻具有 type
和 items
索引鍵的組態來啟用此支援
{
"type": "array",
"items": {
"type": "string"
}
}
移除設定檔中的警告
您將不再在 settings.json
檔案中看到不明或不支援設定的警告。相反地,非使用中的設定會淡化,類似於未使用的原始碼,並帶有說明原因的懸停效果。此外,您不會看到來自目前已停用擴充功能的設定警告。
在檔案總管中顯示搜尋結果
搜尋檢視中的檔案右鍵選單現在具有在檔案總管中顯示命令,可在檔案總管中導覽至該檔案。
搜尋 regex 功能
在 1.29 版本中,我們新增了設定 search.usePCRE2
,使搜尋使用 PCRE2 regex 引擎。這啟用了一些進階 regex 功能的搜尋,例如 反向參考 和 lookahead 判斷提示。由於 ripgrep 中的一些上游工作,您現在可以使用這些功能,而無需啟用特殊設定。如果 regex 使用 Rust regex 引擎不支援的功能,ripgrep 將自動回復到 PCRE2 引擎,而 search.usePCRE2
現在已過時。提醒您,VS Code 僅支援在 JavaScript 中有效的 regex,因為仍然使用編輯器的 JavaScript 型搜尋來搜尋開啟的編輯器。
NPM 指令碼總管預設為可見
先前,您必須啟用設定 npm.enableScriptExplorer
才能使 NPM 指令碼總管可見,而且這很難被發現。現在,當工作區根目錄中有 package.json
檔案時,NPM 指令碼總管會在檔案總管中顯示為摺疊狀態。
當您的工作區根目錄中沒有 package.json
時,您仍然可以使用設定來啟用 NPM 指令碼總管。如果您想隱藏總管,可以右鍵按一下其標題,然後從右鍵選單中選取隱藏。
focusedView 內容索引鍵
有一個新的按鍵繫結 when
子句內容索引鍵 focusedView
,可在給定檢視聚焦時顯示或啟用命令。
"when": "focusedView == nodeDependencies"
協助工具改善
我們修正了工作台中各處的協助工具問題。可以在 GitHub 上找到已修正問題的完整清單,標籤為 'accessibility' 標籤。
在樹狀檢視中採用新的樹狀小工具
貢獻樹狀檢視的擴充功能現在將獲得 新的樹狀小工具 體驗。樹狀小工具提供更好的效能以及改良的鍵盤導覽、篩選、自訂縮排、水平捲動等等。如果您最愛的擴充功能具有自訂樹狀檢視,您應該會看到與先前新增至內建 VS Code 總管相同的 UX 改善。
編輯器
在選取範圍中顯示空格
editor.renderWhitespace
設定現在支援 selection
選項。設定此選項後,空格字元將僅在選取的文字上顯示
這對於快速檢查空格而無需填滿整個編輯器非常方便。
改良迷你地圖搜尋結果可見性
在上一個版本中,我們在迷你地圖(程式碼大綱)中引入了搜尋裝飾。這些裝飾很難看到,因此在此迭代中,我們致力於提高其可見性。現在,整行將在迷你地圖中以低不透明度醒目提示,而實際的相符項目則以高不透明度顯示。
您也可以使用新的 minimap.findMatchHighlight
主題色彩來變更裝飾的色彩。
在尋找和取代中保留大小寫
您現在可以在編輯器的「尋找」小工具中執行取代時保留大小寫。當編輯器的「取代」輸入方塊中的「保留大小寫」選項(AB 按鈕)開啟時,此功能會開啟。
目前 VS Code 僅支援保留完整大寫、完整小寫和標題大小寫。
「尋找」小工具中的按鈕切換主動狀態
我們已使用填滿的背景更新了「尋找」小工具的按鈕切換主動狀態,以便您現在可以輕鬆判斷您何時聚焦在主動切換上。這會出現在「搜尋」檢視、「尋找和取代」以及「終端機尋找」中。
透過此更新,我們引入了新的主題色彩 inputOption.activeBackground
,以控制切換主動狀態的背景色彩。此色彩會重複使用 focusBorder
,使其預設情況下能更好地與主題搭配使用。我們也將 inputOption.activeBorder
的預設值設定為透明,以便邊框僅用於聚焦。
已更新資訊色彩
繼 統一警告色彩 之後,我們也更新了 editorInfoForeground
和 editorInfoBorder
,以符合其餘的資訊診斷色彩。您會在「預覽錯誤」檢視和編輯器底線中看到此更新的色彩
整合式終端機
搜尋 UX 改善
先前在終端機內搜尋時,會從終端機的可視區域頂端開始並向下搜尋。當到達底部時,它會換行到頂端。新的行為與其他幾個終端機模擬器一致,從緩衝區底部開始並向上搜尋,從而帶來更不令人困惑的體驗。
終端機協助工具改善
終端機現在在使用螢幕閱讀器時具有行導覽模式,透過 和 啟用行的便捷導覽。可以使用 退出模式。
如果您想 自訂按鍵繫結,這些是新的命令
workbench.action.terminal.navigationModeExit
workbench.action.terminal.navigationModeFocusNext
workbench.action.terminal.navigationModeFocusPrevious
也進行了其他協助工具改善
- 現在針對空白行使用不斷行空格字元,而不是明確的字串,允許螢幕閱讀器正確宣告。
- 螢幕閱讀器現在會在輸入和移除字元時宣告字元。在某些情況下,這將無法運作,但大多數情況都已涵蓋。
在設定中解析變數
變數 現在可用於以下設定中
terminal.integrated.cwd
terminal.integrated.shell.<platform>
terminal.integrated.shellArgs.<platform>
例如,您不再需要擴充功能即可在目前檔案的資料夾中開啟終端機,只需新增此設定即可
"terminal.integrated.cwd": "${fileDirname}"
改良的錯誤報告和診斷
先前,當終端機以錯誤的組態啟動時,只會指出處理程序以錯誤碼結束。現在提供更好的錯誤訊息,引導使用者找到幾個常見案例的解決方案。
語言
改良 SCSS @import 導覽
VS Code 過去會靜態解析 SCSS 匯入。例如,@import './foo'
會解析為 _foo.scss
。但是,SCSS 在解析匯入的方式上更具彈性,允許 ./foo
解析為五個位置之一
foo.scss
_foo.scss
foo/index.scss
foo/_index.scss
foo.css
如果解析的檔案存在於磁碟上,VS Code 現在會將 @import './foo'
解析為這些位置之一。請注意,如果連結以 /
結尾,則只會解析為 /index.scss
或 /_index.scss
。如果連結以 .css
或 .scss
等後綴結尾,VS Code 將不會嘗試替代檔案位置。
改良 CSS 屬性值完成
CSS 完成現在為額外 754 個 CSS 屬性值提供詳細文件,包括較不常用的值。
更快地使用 JavaScript 和 TypeScript 的僅語法功能
在上一個版本中,我們新增了一個實驗性設定,將支援 VS Code JavaScript 和 TypeScript 語言功能的 TypeScript 伺服器分割成個別的語法和語意伺服器。
在 VS Code 1.37 中,分割伺服器現在預設為啟用。這表示對於大型 JavaScript 和 TypeScript 專案,語法式作業(例如程式碼摺疊或文件大綱)應該可以更快地使用。
工作
TypeScript 偵測到的工作警告
在上一個版本中,TypeScript 工作自動偵測從在 tsconfig
路徑中使用作業系統特定的路徑分隔符號變更為更跨平台友善的 /
。如果 tsconfig 路徑中有 \\
,VS Code 現在會顯示警告。
{
"type": "typescript",
"tsconfig": "src\\tsconfig.json", // This will cause a warning to show. It should be "tsconfig": "src/tsconfig.json"
"option": "watch",
"problemMatcher": [
"$tsc-watch"
]
}
${relativeFileDirname} 工作和偵錯組態的變數
新的變數 ${relativeFileDirname}
會解析為目前開啟檔案目錄的工作區資料夾相對路徑。變數可用於工作和偵錯組態 (tasks.json
和 launch.json
)。
resolveTask 支援
工作提供者現在可以實作 resolveTask
,以減少提供工作的擴充功能額外負荷。resolveTask
會在 provideTasks
之後呼叫,因此如果您的擴充功能具有關閉 provideTasks
和自動偵測的設定(例如內建 gulp 擴充功能),但使用者仍然在 tasks.json
中參考您的其中一項工作,則會呼叫 resolveTask
,而您的擴充功能可以傳回該單一工作。
擴充功能貢獻
遠端開發 (預覽)
已持續開發 遠端開發 擴充功能,可讓您使用容器、遠端電腦或 適用於 Linux 的 Windows 子系統 (WSL) 作為全功能開發環境。您可以在 遠端開發發行說明中了解新的擴充功能功能和錯誤修正。
您也可以閱讀最近兩篇部落格文章,描述
Java 支援智慧選取
Microsoft Java 擴充功能 現在支援 智慧語意選取。您可以根據游標位置在原始碼中的語意資訊,展開或縮小選取範圍。
- 若要展開選取範圍,請使用 ⌃⇧⌘→ (Windows、Linux Shift+Alt+Right)。
- 若要縮小選取範圍,請使用 ⌃⇧⌘← (Windows、Linux Shift+Alt+Left)。
擴充功能撰寫
vscode.workspace.fs
有新的 API 可供擴充功能讀取、寫入和管理檔案和資料夾。這是 Node.js 的 fs 檔案系統模組的替代方案,更重要的是,它允許從貢獻的檔案系統(例如 SSH 或 WSL 遠端檔案系統)存取檔案。
以下程式碼片段顯示如何寫入檔案,更多使用範例可以在 fsconsumer-sample 中找到。
const writeStr = '1€ is 1.12$ is 0.9£';
const writeBytes = Buffer.from(writeStr, 'utf8');
await vscode.workspace.fs.writeFile(someUri, writeBytes);
行動呼籲:如果您的擴充功能目前正在使用 Node.js 的 fs
模組,請考慮移轉至新的 vscode.workspace.fs
API。
DiagnosticsTag.Deprecated
診斷標籤允許擴充功能作者豐富編輯器內診斷的表示方式。此版本新增了 DiagnosticTag.Deprecated
,編輯器將使用刪除線呈現。
上圖中的診斷是由下方顯示的 validate
函數建立的。行 diag.tags = [vscode.DiagnosticTag.Deprecated];
新增了已淘汰標籤。
let diagnostics = vscode.languages.createDiagnosticCollection('Sample Errors');
let validate = (editor: vscode.TextEditor | undefined) => {
if (!editor) {
return;
}
let result: vscode.Diagnostic[] = [];
for (let line = 0; line < editor.document.lineCount; line++) {
let pos = 0;
while ((pos = editor.document.lineAt(line).text.indexOf('guys', pos)) >= 0) {
let diag = new vscode.Diagnostic(
new vscode.Range(line, pos, line, pos + 'guys'.length),
'This is deprecated, use "folks", "people", or "you all" instead.'
);
diag.severity = vscode.DiagnosticSeverity.Warning;
diag.tags = [vscode.DiagnosticTag.Deprecated];
result.push(diag);
pos += 'guys'.length;
}
}
diagnostics.set(editor.document.uri, result);
};
vscode.workspace.workspaceFile
有一個新的工作區屬性 workspace.workspaceFile
,傳回工作區檔案的位置。例如:file:///Users/name/Development/myProject.code-workspace
或 untitled:1555503116870
,適用於未命名且尚未儲存的工作區。
根據開啟的工作區,值將為
- 未開啟工作區或單一資料夾時為
undefined
。 - 工作區檔案的路徑,以
Uri
表示。
如果工作區未命名,則傳回的 URI 將使用 untitled:
結構描述。
工作區檔案位置的一個用途是呼叫 vscode.openFolder
命令,以便在工作區關閉後再次開啟工作區
vscode.commands.executeCommand('vscode.openFolder', uriOfWorkspace);
注意: 不建議使用 workspace.workspaceFile
位置將組態資料直接寫入檔案。請改用 workspace.getConfiguration().update()
方法,這會在開啟單一資料夾以及未命名或已儲存工作區時都可運作。
vscode.env.shell
建議的 vscode.env.shell
API 現在已穩定。應該使用此 API 來取得終端機的預設殼層,而不是 terminal.integrated.shell.<platform>
設定。
const shell = vscode.env.shell;
if (shell.search(/(powershell|pwsh)/i) !== -1) {
// Do something special that PowerShell needs
}
在 when 子句中支援 OR
現在可以在預期 when
子句的各種貢獻點中使用邏輯 OR (||
)。
例如,新增選單貢獻時
"contributes": {
"menus": {
"editor/title": [{
"command": "showPreviewToSide",
"when": "editorLangId == markdown || editorLangId == html",
"group": "navigation"
}]
}
}
AND &&
運算子的優先順序高於 OR ||
。
主動輸入選項的新主題色彩
新的色彩 inputOption.activeBackground
可讓您控制輸入欄位中已啟動選項的背景色彩。此色彩會重複使用 focusBorder
,使其預設情況下能更好地與主題搭配使用。我們也將 inputOption.activeBorder
的預設值設定為透明,以便邊框僅用於聚焦。
在執行擴充功能整合測試之前安裝擴充功能
使用 vscode-test@1.1.0
,擴充功能作者可以解析 VS Code 下載副本的 CLI 路徑,並將該路徑用於擴充功能管理。
例如
const cp = require('child_process');
const { downloadAndUnzipVSCode, resolveCliPathFromExecutablePath } = require('vscode-test');
(async () => {
const vscodeExecutablePath = await downloadAndUnzipVSCode('1.36.0');
const cliPath = resolveCliPathFromExecutablePath(vscodeExecutablePath);
cp.spawnSync(cliPath, ['--install-extension', '<EXTENSION-ID-OR-PATH-TO-VSIX>'], {
encoding: 'utf-8',
stdio: 'inherit'
});
})();
在更新的 測試擴充功能文件中閱讀更多內容。
已更新在 Linux 上執行擴充功能整合測試的 Travis CI 指令碼
建議的組態(請參閱下方)用於擴充功能整合測試可能無法在最新的 Travis CI Linux 環境中運作
if [ $TRAVIS_OS_NAME == "linux" ]; then
export CXX="g++-4.9" CC="gcc-4.9" DISPLAY=:99.0;
sh -e /etc/init.d/xvfb start;
sleep 3;
fi
您現在可以使用下方的 Xvfb 指令碼來替代
if [ $TRAVIS_OS_NAME == "linux" ]; then
export DISPLAY=':99.0'
/usr/bin/Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &
fi
在更新的 持續整合文件中閱讀更多內容。
建議的擴充功能 API
每個里程碑都附帶新的建議 API,擴充功能作者可以試用。與往常一樣,我們渴望您的意見反應。這是您試用建議 API 必須執行的動作
- 您必須使用 Insiders 版本,因為建議 API 經常變更。
- 您必須在擴充功能的
package.json
檔案中加入此行:"enableProposedApi": true
。 - 將最新版本的 vscode.proposed.d.ts 檔案複製到您的專案中。
請注意,您無法發佈使用建議 API 的擴充功能。我們可能會在下一個版本中進行重大變更,而且我們絕不想破壞現有的擴充功能。
擴充功能終端機
去年推出的建議 TerminalRenderer API 經歷了重大變更,現在已淘汰,改用「擴充功能終端機」。新的 API 更符合終端機的實際運作方式,擴充功能現在實作了 Pseudoterminal
物件,這類似於 *nix 樣式的 pty。
以下是目前的建議
export namespace window {
export function createTerminal(options: ExtensionTerminalOptions): Terminal;
}
export interface ExtensionTerminalOptions {
name: string;
pty: Pseudoterminal;
}
interface Pseudoterminal {
onDidWrite: Event<string>;
onDidOverrideDimensions?: Event<TerminalDimensions | undefined>;
onDidClose?: Event<void>;
open(initialDimensions: TerminalDimensions | undefined): void;
close(): void;
handleInput?(data: string): void;
setDimensions?(dimensions: TerminalDimensions): void;
}
以下是一些重大變更
- 擴充功能終端機現在以與一般終端機幾乎相同的方式完成,只是使用不同的選項物件。這也消除了透過
TerminalRenderer.terminal
存取Terminal
物件的混淆。 - OS 處理程序的概念已不復存在,並且必須傳回結束代碼。
Pseudoterminal
可以簡單地關閉終端機,所有錯誤顯示/通知都由擴充功能驅動。 - 如果初始維度可用(終端機面板先前已顯示),則會呼叫
Pseudoterminal.open
。
以下是如何執行簡單終端機的簡單範例,該終端機會將您的輸入回顯
const writeEmitter = new vscode.EventEmitter<string>();
let line = '';
const pty = {
onDidWrite: writeEmitter.event,
open: () => writeEmitter.fire('Type and press enter to echo the text\r\n\r\n'),
close: () => {},
handleInput: (data: string) => {
if (data === '\r') {
writeEmitter.fire(`\r\necho: "${line}"\r\n\n`);
line = '';
} else {
line += data;
writeEmitter.fire(data);
}
}
};
const terminal = vscode.window.createTerminal({ name: `My Extension REPL`, pty });
terminal.show();
我們希望穩定此功能並相對快速地移除已淘汰的終端機轉譯器,可能在 v1.38 和 v1.39 之間。
vscode.CustomExecution2
此 API 是 vscode.CustomExecution
的演進。它使用經過改良的新 vscode.Pseudoterminal
,允許工作提供者建立工作,使擴充功能內的程式碼能夠完全控制終端機,而不僅僅是執行指令碼或處理程序。
export class CustomExecution2 {
/**
* @param process The [Pseudoterminal](#_Pseudoterminal) to be used by the task to display output.
* @param callback The callback that will be called when the task is started by a user.
*/
constructor(callback: (thisArg?: any) => Thenable<Pseudoterminal>);
/**
* The callback used to execute the task. Cancellation should be handled using
* [Pseudoterminal.close](#_Pseudoterminal.close). When the task is complete fire
* [Pseudoterminal.onDidClose](#_Pseudoterminal.onDidClose).
*/
callback: (thisArg?: any) => Thenable<Pseudoterminal>;
}
vscode.commands.onDidExecuteCommand
有一個新的事件會在每次執行命令時觸發,而事件的承載會識別命令和引數。
export interface CommandExecutionEvent {
command: string;
arguments: any[];
}
export namespace commands {
/**
* An event that is emitted when a [command](#_Command) is executed.
*/
export const onDidExecuteCommand: Event<CommandExecutionEvent>;
}
Webview.toWebviewResource 和 Webview.cspSource
先前建議的 Webview.resourceRoot API 已重新設計。
現在 webview 上有兩個建議的屬性
-
Webview.toWebviewResource
- 將本機檔案系統的 URI 轉換為可在 webview 內使用的 URI。對於桌面 VS Code,這會將
file:
URI 轉換為vscode-resource:
URI。 -
Webview.cspSource
- webview 資源的內容安全性原則來源。對於桌面 VS Code,這會是字串
vscode-resource:
。
const panel = vscode.window.createWebviewPanel(
CatCodingPanel.viewType,
'Cat Coding',
vscode.ViewColumn.One,
{
// Restrict the webview to only loading local content from our extension's `media` directory.
localResourceRoots: [vscode.Uri.file(path.join(extensionPath, 'media'))]
}
);
const imagePath = vscode.Uri.file(path.join(extensionPath, 'media'));
panel.html = `<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; img-src ${
panel.webview.cspSource
} https:;">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Cat Coding</title>
</head>
<body>
<img src="${panel.webview.toWebviewResource(imagePath)}/cat.gif" width="300" />
</body>
</html>`;
工程
在 VS Code 程式碼庫中移除 suppressImplicitAnyIndexErrors
當我們 為 VS Code 的來源啟用嚴格 null 檢查 時,我們也在 TypeScript 編譯器中開啟了 "suppressImplicitAnyIndexErrors": true
。此設定允許在值上使用括號存取子,即使值的類型沒有明確的索引存取簽章。
這是有問題的,因為它很容易最終隱藏 TypeScript 可能已捕獲的錯誤
const map = new Map()
map.set('property', true);
...
if (map['property']) { // This is not an TS error but it does not do what you want!
doImportantStuff();
}
在此迭代中,我們移除了 suppressImplicitAnyIndexErrors
變通方法,並修正了它所抑制的大約 250 個錯誤。兩個最常見的修正是新增明確的索引簽章,以及切換為使用適當的 Map
類型來儲存對應,而不是使用物件常值。
網格式工作台版面配置的進度
在此里程碑中,我們著手進行了幾個里程碑前開始的網格式工作台版面配置工作。一旦我們的初始解決方案完成,新版本的工作台應該以類似的方式運作,但它將更靈活,可新增新的版面配置選項和功能。
我們正在測試的一種新行為是能夠將終端機完全向上拖曳,完全隱藏編輯器。目前,版面配置仍然在旗標 workbench.useExperimentalGridLayout
後方。我們在上一個里程碑中預設在 Insiders 版本中啟用它,這也將在下一個里程碑中繼續。
持續探索基於 iframe 的 webview
我們繼續探索使用一般 iframe 來託管 VS Code 的 webview。作為此工作的一部分,我們現在支援在唯一來源中載入每個基於 iframe 的 webview。這可確保來自多個擴充功能的 webview 不會相互影響。
您現在也可以在桌面 VS Code 中啟用基於 iframe 的 webview,方法是設定:"webview.experimental.useExternalEndpoint": true
。請注意,目前使用基於 iframe 的 webview 需要網際網路連線。雖然基於 iframe 的 webview 仍然是實驗性的,但我們希望 webview 擴充功能作者提供關於您的擴充功能在使用基於 iframe 的 webview 執行時無法運作的部分的意見反應。
新文件
遠端開發教學課程
有新的入門教學課程,引導您使用遠端開發擴充功能執行 Visual Studio Code。
- 透過 SSH 遠端連線 - 透過 SSH 將 Visual Studio Code 連線至遠端和虛擬機器。
- 在 WSL 中工作 - 在適用於 Linux 的 Windows 子系統中執行 Visual Studio Code。
- 開發容器 - 在 Docker 容器中執行 Visual Studio Code。
值得注意的修正
- 422:在還原最大化的視窗時保留視窗大小
- 70371:emmet tab 完成功能在大型檔案中速度緩慢
- 76922:側邊欄檢視的順序在所有視窗中持續存在
- 76989:停用擴充功能不適用於擴充功能偵錯
- 77110:偵錯整合式終端機支援未取得預設終端機
- 77926:輸入 "string;" 有時會插入 "strings;"
感謝您
最後但同樣重要的是,衷心感謝!以下人士協助讓 VS Code 變得更好
對 vscode
的貢獻
- kaoru (@0x6b):將「檢查更新...」選單項目中的 'For' 改為小寫 PR #77972
- Akshita Agarwal (@akshita31):修改 dotnet 組建範本 PR #76318
- Angelo (@angelozerr)
- Brett Cannon (@brettcannon)
- Shiva Prasanth (@cedric05):在多個 git 存放庫工作區中,無法在
原始檔控制提供者檢視
中使用按鍵向上箭頭和 Enter 鍵檢視/聚焦變更 PR #73139 - Christian Oliff (@coliff):修正 'Untitled' 錯字 PR #78272
- Connor Peet (@connor4312):fix(sash):拖曳含有 iframe 的擴充功能時遇到困難 PR #77121
- Connor Shea (@connorshea):新增 .rbi 檔案擴充功能作為 Ruby 檔案類型 PR #75155
- Daniel Schildt (@d2s):fix:拼字錯誤更正 PR #77618
- Dave Alongi (@dalongi):組態 + UI 以記住允許處理 URI 的擴充功能 PR #70844
- Eric Amodio (@eamodio)
- Gabriel DeBacker (@GabeDeBacker):針對自訂執行使用正確解析的 TDO 和工作 PR #77759
- George Batalinski (@georgebatalinski):search-widget(aria-live) 找到結果的狀態 PR #77031
- Haneef Mohammed (@haneefdm):在偵錯「變數」檢視中保留樹狀結構狀態 PR #76476
- Harry Hedger (@hedgerh):onDidExecuteCommand API PR #72345
- 洪偉 (@hwhung0111)
- @ironyman:在高對比佈景主題中,於索引標籤與麵包屑之間新增邊框 PR #76157
- Julien Brianceau (@jbrianceau)
- Jean Pierre (@jeanp413)
- Joel Day (@joelday):為 TaskProvider.resolveTask 新增支援 PR #71027
- Malige Julien (@JulienMalige):#42382 在搜尋和取代時保留大小寫 PR #60311
- Justin Grant (@justingrant):修正 JSDoc 錯字:"beginPattern" -> "beginsPattern" PR #73141
- Kamran Ayub (@kamranayub)
- Kostya Bushuev (@kostyabushuev):已修正 #71134 PR #71500
- Maik Riechert (@letmaik):修正 cpuUsage.sh 中變數的遞增 PR #77512
- Leonardo Carreiro (@lmcarreiro):修正 #48403 Markdown 圖片中損壞的 UNC 路徑 PR #74332
- Mason Liu (@masliu):儲存預覽的 resourceColumn,修正 #74008 PR #76647
- Mathieu Plourde (@matpl):為 isInDOM 函式新增陰影根目錄支援 PR #72313
- @mflan48:針對問題 #71683 的提取要求 PR #72381
- @Neonit:在 Markdown 預覽中將程式碼索引標籤大小調整為 4 PR #77745
- Ryo Nishimura (@niharu):修正錯字 transitionDisposables PR #76723
- Orta (@orta):從 seti-ui 更新至最新的圖示佈景主題 PR #76890
- Dima Ovcharenko (@ovcharenko-di):將 id 變更為 displayName,修正 #77141 PR #77147
- @pi1024e
- Robert Ancell (@robert-ancell):snapcaft.yaml:在 Snap metadata 中設定 AppStream ID PR #76432
- @sharkykh:重新命名時,將目前的 Git 分支名稱作為值放入 PR #72957
- Prabhanjan S Koushik (@skprabhanjan)
- 修正-72650 應先驗證 Shell 路徑,再啟動以防止不明確的錯誤 - $Path 檢查 PR #76349
- 修正-75259 - 與搜尋結果中的檔案互動 PR #78337
- 修正-76141 在影像預覽中於影像周圍新增邊框 PR #76387
- 修正-76662 將 *.hpp.in 新增至 vscode 開箱即用的檔案關聯 PR #76680
- 修正-74281 標準佈景主題強制將 SourceControlResourceGroup 標題設為大寫 PR #76286
- 修正-73341 從擴充功能頁面安裝擴充功能,「安裝」按鈕會使通知氣球持續顯示在右下角 PR #74795
- 修正-75259 - 與搜尋結果中的檔案互動 PR #76828
- 修正-76315 將 *.podspec 新增至檔案關聯 PR #76447
- @tomkv:將 sk 新增至需要地區的地區設定 PR #77942
- Tony Xia (@tony-xia)
- Alexander (@usernamehw):還原 "新增 CLI 旗標以停用 WebView 中的平滑捲動" PR #76944
- Vanessa Phipps (@vlmphipps):取代:在全部取代時遵守 preserveCase PR #78003
- Wesley Wigham (@weswigham):在組建資料夾中使用較新版本的 @types/node,以符合所有其他資料夾 PR #77784
- Xhulio Hasani (@xuhas):索引標籤標題中的 Git HEAD 資訊 PR #76329
- Zero (@ZhangDezhi):避免 extensionTestsLocationURI.fsPath,因為它會正規化路徑 (適用於 #69… PR #74214
對我們的問題追蹤做出貢獻
- John Murray (@gjsjohnmurray)
- Alexander (@usernamehw)
- Eric Amodio (@eamodio)
- Jean Pierre (@jeanp413)
- Danny Tuppeny (@DanTup)
如果您想要協助我們管理收到的問題,請參閱我們的社群問題追蹤頁面。
對 language-server-protocol
的貢獻
對 debug-adapter-protocol
的貢獻
- Pierson Lee (@pieandcakes):更新 C/C++ 資料 PR #64
- Jonah Graham (@jonahgraham):更新版本以符合變更記錄的最新項目 PR #67
對 vscode-generator-code
的貢獻
- Tomáš Hübelbauer (@TomasHubelbauer):使此產生器與 require.resolve 搭配運作 PR #179
- Yoichi Kawasaki (@yokawasa):更新 ext-command-ts 範本的快速入門頁面 PR #178
對 vscode-vsce
的貢獻
- Eric Amodio (@eamodio):在 prepublish 步驟中採用 --yarn 旗標 PR #376
- Leo Hanisch (@HaaLeo):支援 GitHub 問題連結 PR #345
- James George (@jamesgeorge007):導致程式碼更精簡的次要重構 PR #370
對 inno-updater
的貢獻
- Ta Thanh Dinh (@tathanhdinh):使用 is_null 方法來檢查指標是否為 Null PR #10
對 localization
的貢獻
有超過 800 位 Cloud + AI Localization 社群成員使用 Microsoft Localization Community Platform (MLCP),其中約有 100 位活躍貢獻者參與 Visual Studio Code。我們感謝您的貢獻,不論是提供新的翻譯、針對翻譯投票,或是建議流程改進。
以下是貢獻者的快照。如需專案的詳細資訊,包括貢獻者名稱清單,請造訪專案網站:https://aka.ms/vscodeloc。
- 波士尼亞文: Ismar Bašanović、Ernad Husremovic。
- 保加利亞文: Hristiqn Hristov、Иван Иванов、Любомир Василев、Gheorghi Penkov。
- 捷克文: Tadeáš Cvrček、Daniel Padrta、David Jareš、Jan Hajek、Jakub Stibůrek、Michal Franc、Jan Kos、Radim Hampl、Jiří Hofman、Samuel Tulach、Jan Brudný。
- 丹麥文: René Pape、Lasse Stilvang、Allan Kimmer Jensen、Lars Vange Jørgensen、Alexander Matzen、Martin Liversage、Johan Fagerberg、Thomas Larsen、Anders Lund、Anton Ariens。
- 荷蘭文: Leroy Witteveen、Maxim Janssens、Luc Sieben、Hans Zoons、Jos Verlinde、Eric Algera、Damien van Gageldonk、Maxim Van Damme、Sven Klaasen、Tom Meulemans、Sujith Quintelier。
- 英文 (英國): Martin Littlecott、Alexander Ogilvie、Tobias Collier、William Wood、Fabio Zuin、Mohit Nain、Dan Jacobs、Sulkhan Ninidze、Giorgi Jambazishvili、alshyab wa3ed、YASHU MITTAL、Tejas kale、Mohammad Idrees、Chris Dias。
- 芬蘭文: Petri Niinimäki、Kiti Suupohja、Lasse Leppänen、Sebastian de Mel、Riku Riikonen、Valtteri Vatanen。
- 法文: Antoine Griffard、Thierry DEMAN-BARCELÒ、Corwin D'Ambre、Mohamed Sahbi、Rodolphe NOEL、Maxime Coquerel、Steven Dugois、Cédric M.、Michael VAUDIN、Bastien Boussouf、franto。
- 德文: Julian Pritzi、Jakob von der Haar、Frank Lindecke、Dejan Dinic、Florian Erbs、Patrick Burke、Mario Koschischek、Florian Berger、Christof Opresnik、Hans Meiser、Carsten Kneip、Ettore Atalan、Thorsten Hans、Meghana Garise、Sebastian Seidl。
- 希臘文: Δημήτρης Παπαϊωάννου、Sotiris Koukios-Panopoulos、Jim Spentzos、Θοδωρής Τσιρπάνης、Stratos Kourtzanidis、Charalampos Fanoulis、John D、Vassilis Vouvonikos。
- 希伯來文: חיים לבוב、Shalom Craimer、Matan Amos、Eyal Ellenbogen、Snir Broshi、Kyle Orin。
- 印地文: Satish Yadav、Amit Gusain、Sanyam Jain、Abhirav Kushwaha、Ashok Kumar Rathore、nirav adatiya、Rajeev Desai、shaswat rungta、Kumar Vaibhav、Pramit Das、Jagjeet Singh、Pratishek PII、Kiren Paul、Chethana S、Kishan K、Dhanvi Kapila。
- 匈牙利文: Levente Borbély、Péter Nagy、Levente Hallai Seiler、Dániel Tar、Richard Borcsik、Boldi Kemény。
- 簡體中文: 丁丁 易、斌 項、paul cheung、Yiting Zhu、建東 薛、feiyun0112 feiyun0112、Joel Yang、刘瑞恒 刘瑞恒、Edi Wang、Junzhe Liu、Dave Young、张锐、Yizhi Gu、Fan Su、昊宇 周、Justin Liu、Pluwen、Tony Xia、Yu Zhang、XIANG ZUO、少民 谈、彦佐 刘、Zhiqiang Li、福永 叶、G.Y. Z、Hao Hu、志乐 龚、meng shao、Horie Yuan、Xiangrui Kong、Liam Kennedy、王文杰、赵畅畅、松阳 樊、anson zhang、Young Bige、Shi Liu、Wang Debang、Jessica Zhang、Licheng Ren、驰 雷、sun qing、xiong Fu、Lynne Dong、zhao yu、吉姆 舒、红东 黄、游 尤、剑秋 陶、Hanlin Yang、、bh wu、Bravo Yeung、Michael Zhang、Hanyu ZHANG、Y F、WangCG duoduobear、ziqiang sun、越 郑、正元 刘、Jiang LI、擎 钟、peng wei、涛 徐、逍遥 许、Charles Lee、瑜 周、WL、伟 全、rsy iridescent、Simon Chan、海龙 黄、仁松 陈、Jieting Xu、panda small、翼 张、Chen Yang、Wang Weixuan、舜杰 杨、Ludi Fang、雨齐 刘、建 周、涛 罗、cuibty wong、立飞 李、LI ZHAO、九鼎 谭。
- 繁體中文: 謝政廷、Winnie Lin、LikKee 瀝祺 Richie、Martin Lau、Jeremy、奕濬 潘、小克、煾 雪。
- 印尼文: Jakka Prihatna、Septian Adi、Arif Fahmi、Laurensius Dede Suhardiman、maziyank、Heston Sinuraya、Hendra Widjaja、Don Nisnoni、Rachmat Wahidi、Franky So、Bervianto Leo Pratama、Eriawan Kusumawardhono、Rifani Arsyad、Afnizar Nur Ghifari、Christian Elbrianno、Pradipta Hendri、Azhe Kun。
- 義大利文: Alessandro Alpi、Bruni Luca、Luigi Bruno、Andrea Dottor、Riccardo Cappello、Aldo Donetti、andrea falco、Emanuele Meazzo、Michael Longo、Marco Dal Pino。
- 日文: EbXpJ6bp -、nh、Kyohei Uchida、Yoshihisa Ozaki、Hasefumi、TENMYO Masakazu、Takayuki Fuwa、Michihito Kumamoto、Koichi Makino、Seiji Momoto、Aya Tokura、Yosuke Sano、Makoto Sakaguchi、Kyohei Moriyama、裕子 知念、Rie Moriguchi、Fujio Kojima、美穂 山本、taniokae、太郎 西岡、Hiroomi Kurosawa、Kazuya Ujihara、Yasuaki Matsuda。
- 韓文: Hongju、우현 조、Jong Heun Shin、형섭 이、Kyunghee Ko、Youngjae Kim、siin lee、Jae Yong Kum、Hoyeon Han、Kevin Lee、SeungJin Jeong、Hong Kwon。
- 拉脫維亞文: Kaspars Bergs、Andris Vilde。
- 立陶宛文: Andrius Svylas、Augustas Grikšas、Tautvydas Derzinskas、Karolis Kundrotas、Martynas J.。
- 挪威文: Andreas Rødland、Cookius Monsterius、Dag H. Baardsen、Ole Kristian Losvik、Stephan Eriksen。
- 波蘭文: Warchlak、Wojciech Maj、Marcin Weksznejder、Rafał Całka、Tomasz Świstak、Tomasz Wiśniewski、Marek Biedrzycki、Szymon Seliga、Michal Szulc、Jakub Żmidziński、Bartek PL、Igor 05、Rafał Wolak、Tomasz Chojnacki、Piotr Grędowski、Czech Kaczmarek、Artur Pelczar、Marcin Floryan、Paweł Modrzejewski、Jakub Jedryszek、Michał Stojke、Artur Zdanowski。
- 葡萄牙文 (巴西): Alessandro Trovato、Thiago Dupin Ugeda、Weslei A. de T. Marinho、Rafael Lima Teixeira、Gerardo Magela Machado da Silva、Marcos Albuquerque、Loiane Groner、Alessandro Fragnani、Judson Santiago、Andrei Bosco、Fábio Corrêa、Roberto Fonseca、Fabio Lux、Emmanuel Gomes Brandão、Guilherme Pais、Rodrigo Vieira、André Gama。
- 葡萄牙文 (葡萄牙): Ana Rebelo、Nuno Carapito、Pedro Daniel、Pedro Teixeira、João Carvalho、Diogo Barros、José Rodrigues、Sandro Pereira、Vitor Barbosa、Tiago Antunes。
- 羅馬尼亞文: Mihai Marinescu、Stefan Gabos、Alexandru Staicu。
- 俄文: Andrey Veselov、Дмитрий Кирьянов、michael v、Иван Лещенко、nata kazakova、Анатолий Калужин、Валерий Батурин、Эдуард Тихонов。
- 塞爾維亞文: Milos Zivkovic、Radovan Skendzic。
- 西班牙文: Andy Gonzalez、Alvaro Enrique Ruano、Engel Aguilar、Carlos Mendible、José María Aguilar、David Fernández Aldana、Ricardo Rubio、Thierry DEMAN、julian3xl、Ing. Sergio Uziel Tovar Lemus、Mario Mendieta、Jorge Serrano Pérez、Ricardo Estrada Rdez。
- 瑞典文: Johan Spånberg、Notetur Nomen。
- 坦米爾文: Merbin J Anselm、Kondasamy Jayaraman、Mani M、Boopesh Kumar、Vignesh Rajendran、Jeyanthinath Muthuram、Jaganathan B、Nithun Harikrishnan、Purusothaman Ramanujam、Krishna Pravin、Jeffin R P、Karunakaran Samayan、Vetri ..
- 土耳其文: Meryem Aytek、BlueAngel-MG、Fıratcan Sucu、Ahmetcan Aksu、Ömer Sert、Mehmet Yönügül、Anıl MISIRLIOĞLU、Sinan Açar、Misir Jafarov、Umut Can Alparslan、Yakup Ad、Hüseyin Fahri Uzun、S. Ferit Arslan、Mesut Pişkin、Okan Çetin、Bruh Moment、Muhammed Emin TİFTİKÇİ、Burak Göksel。
- 烏克蘭文: Dmytro Kutianskyi、Arthur Murauskas、Sviatoslav Ivaskiv、Yaroslav Y、George Molchanyuk、Did Kokos、Alexander Varchenko、Вадим Шашков、Евгений Коростылёв。
- 越南文: Khôi Phạm、Van-Tien Hoang、Belikhun、Việt Anh Nguyễn、Spepirus Shouru、Vuong Bui、Chủ Tất。