現已釋出!閱讀關於 11 月新增功能和修復的內容。

2019 年 7 月 (版本 1.37)

更新 1.37.1:此更新解決了這些問題

下載:Windows:x64 | Mac:Intel | Linux:deb rpm tarball snap


歡迎使用 2019 年 7 月版 Visual Studio Code。此版本中有許多更新,希望您會喜歡,其中一些主要亮點包括

如果您想線上閱讀這些發行說明,請訪問 code.visualstudio.com 上的更新頁面。
您還可以檢視開發者佈道者 Brian Clark 的 1.37 版本亮點影片

Insiders:想盡快看到新功能嗎?您可以下載每夜更新的 Insiders 構建版本,並第一時間嘗試最新的更新。有關最新的 Visual Studio Code 新聞、更新和內容,請在 Twitter 上關注我們 @code

工作臺

新產品圖示

我們已將所有產品圖示更新為統一的樣式、顏色和大小。我們經歷了各種迭代,社群在整個過程中提供了有益的反饋。

注意:這不包括我們對 Octicons 的使用,這些圖示顯示在狀態列和快速選擇中。

VS Code product icons

“設定”編輯器支援字串陣列

“設定”編輯器現在允許編輯字串陣列設定。“新增項”按鈕將彈出一個輸入框以新增新字串。

Settings UI for array-of-string settings

擴充套件作者可以透過提供帶有 typeitems 鍵的配置來啟用此支援

{
  "type": "array",
  "items": {
    "type": "string"
  }
}

已從設定檔案中刪除警告

您將不再在 settings.json 檔案中看到有關未知或不支援的設定的警告。相反,不活動的設定將被淡化,類似於未使用的原始碼,並帶有解釋原因的懸停提示。此外,您將不會看到來自當前停用的擴充套件的設定的警告。

Faded unused settings

在資源管理器中顯示搜尋結果

“搜尋”檢視中的檔案上下文選單現在有一個“在資源管理器中顯示”命令,用於在檔案資源管理器中導航到該檔案。

Reveal in Explorer command in search result

搜尋正則表示式功能

在 1.29 版本中,我們添加了設定 search.usePCRE2 以使搜尋使用 PCRE2 正則表示式引擎。這啟用了使用一些高階正則表示式功能進行搜尋,例如反向引用前瞻斷言。得益於 ripgrep 中的一些上游工作,您現在無需啟用特殊設定即可使用這些功能。如果正則表示式使用 Rust 正則表示式引擎不支援的功能,ripgrep 將自動回退到 PCRE2 引擎,現在 search.usePCRE2 已棄用。提醒一下,VS Code 僅支援 JavaScript 中有效的正則表示式,因為開啟的編輯器仍使用編輯器的基於 JavaScript 的搜尋進行搜尋。

NPM 指令碼資源管理器預設可見

以前,您必須啟用設定 npm.enableScriptExplorer 才能使 NPM 指令碼資源管理器可見,這很難發現。現在,當工作區根目錄中存在 package.json 檔案時,NPM 指令碼資源管理器在檔案資源管理器中顯示為摺疊狀態。

NPM Scripts Explorer collapsed

當您的工作區根目錄中沒有 package.json 時,您仍然可以使用該設定來啟用 NPM 指令碼資源管理器。如果您想隱藏該資源管理器,可以右鍵單擊其標題並從上下文選單中選擇“隱藏”。

focusedView 上下文鍵

新增了一個鍵繫結 when 子句上下文鍵 focusedView,用於在給定檢視獲得焦點時顯示或啟用命令。

"when": "focusedView == nodeDependencies"

輔助功能改進

我們修復了整個工作臺的輔助功能問題。已修復問題的完整列表可在 GitHub 上找到,帶有 “輔助功能”標籤

樹檢視中採用了新的樹控制元件

貢獻樹檢視的擴充套件現在將獲得新的樹控制元件體驗。樹控制元件提供更好的效能以及改進的鍵盤導航、篩選、自定義縮排、水平滾動等。如果您喜歡的擴充套件具有自定義樹檢視,您應該會看到與早期新增到內建 VS Code 資源管理器中的相同使用者體驗改進。

編輯器

在選中區域顯示空白符

editor.renderWhitespace 設定現在支援 selection 選項。設定此選項後,空白字元將僅顯示在選定的文字上

Whitespace rendered on selection

這對於快速檢查空白符而無需填充整個編輯器非常方便。

改進的小地圖搜尋結果可見性

在上一個版本中,我們在小地圖(程式碼大綱)中引入了搜尋裝飾。這些裝飾很難看清,因此在此迭代中,我們致力於提高它們的可見性。現在,整個行將在小地圖中以低不透明度突出顯示,實際匹配項以高不透明度顯示。

Minimap search results

您還可以使用新的 minimap.findMatchHighlight 主題顏色更改裝飾的顏色。

查詢和替換保留大小寫

現在,在編輯器的“查詢”小部件中進行替換時,您可以保留大小寫。當編輯器的“替換”輸入框中的“保留大小寫”選項(AB 按鈕)開啟時,此功能將啟用。

Preserve Case button

目前 VS Code 僅支援保留全大寫全小寫標題大小寫

Preserve case example

“查詢”小部件中按鈕切換的活動狀態

我們更新了“查詢”小部件的按鈕切換活動狀態,使其具有填充背景,以便您現在可以輕鬆判斷何時聚焦於活動切換。這出現在“搜尋”檢視、“查詢和替換”以及“終端查詢”中。

在此更新中,我們引入了一個新的主題顏色 inputOption.activeBackground,用於控制切換活動狀態的背景顏色。此顏色重複使用 focusBorder,以便預設情況下更好地與主題配合使用。我們還將 inputOption.activeBorder 的預設值設定為透明,以便邊框僅用於焦點。

Button toggle active state

更新的資訊顏色

警告顏色統一之後,我們還更新了 editorInfoForegroundeditorInfoBorder 以匹配其餘資訊診斷顏色。您將在“檢視錯誤”檢視和編輯器波浪線中看到此更新的顏色

Info display colors

整合終端

搜尋 UX 改進

以前在終端內搜尋時,會從終端視口的頂部開始向下搜尋。當到達底部時,它會迴繞到頂部。新行為與許多其他終端模擬器一致,從緩衝區的底部開始向上搜尋,從而大大減少了混亂的體驗。

Terminal search now searches upwards by default

終端輔助功能改進

當使用螢幕閱讀器時,終端現在具有行導航模式,可以透過 方便地導航行。該模式可以透過 退出。

如果您想自定義鍵繫結,這些是新命令

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}"

改進的錯誤報告和診斷

以前,當終端以錯誤的配置啟動時,它只會指示程序以錯誤程式碼退出。現在提供了更好的錯誤訊息,指導使用者解決一些常見場景。

Using an invalid shell setting will tell you the shell is invalid

語言

改進的 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 屬性值(包括不常用的值)提供詳細文件。

CSS property value completion documentation

更快地使用 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.jsonlaunch.json) 中使用。

resolveTask 支援

任務提供程式現在可以實現 resolveTask,以減少擴充套件提供任務的開銷。resolveTaskprovideTasks 之後呼叫,因此如果您的擴充套件有一個關閉 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,編輯器將使用刪除線渲染它。

Strikeout Deprecated decoration

上圖中的診斷是由下面顯示的 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-workspaceuntitled: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 獲取終端的預設 shell,而不是 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 物件的令人困惑的方式。
  • 作業系統程序的概念以及返回退出程式碼的概念已消失。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 資源的 Content Security Policy (內容安全策略) 源。

    對於桌面版 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 的原始碼啟用嚴格空檢查時,我們還在 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 之後。在上一個里程碑中,我們在 Insider 版本中預設啟用了它,在下一個里程碑中也將繼續啟用。

持續探索基於 iframe 的 webview

我們繼續探索使用普通 iframe 來託管 VS Code 的 webview。作為其中的一部分,我們現在支援在唯一的源中載入每個基於 iframe 的 webview。這確保了來自多個擴充套件的 webview 不能相互影響。

您現在還可以透過設定 "webview.experimental.useExternalEndpoint": true 在桌面版 VS Code 中啟用基於 iframe 的 webview。請注意,使用基於 iframe 的 webview 當前需要 Internet 連線。雖然基於 iframe 的 webview 仍處於實驗階段,但我們希望 webview 擴充套件作者就您的擴充套件在使用基於 iframe 的 webview 執行時無法正常工作的部分提供反饋。

新文件

遠端開發教程

新增了入門教程,引導您透過遠端開發擴充套件執行 Visual Studio Code。

  • 透過 SSH 遠端 - 使用 Visual Studio Code 透過 SSH 連線到遠端和虛擬機器。
  • 在 WSL 中工作 - 在適用於 Linux 的 Windows 子系統中執行 Visual Studio Code。
  • 開發容器 - 在 Docker 容器中執行 Visual Studio Code。

值得注意的修復

  • 422:恢復最大化視窗時保留視窗大小
  • 70371:在大型檔案中 emmet tab 補全速度慢
  • 76922:側邊欄檢視的順序在所有視窗中保持不變
  • 76989:停用擴充套件不適用於擴充套件除錯
  • 77110:除錯整合終端支援未獲取預設終端
  • 77926:有時鍵入“string;”會插入“strings;”

感謝

最後但同樣重要的是,衷心感謝!以下幫助使 VS Code 變得更好的各位:

vscode 的貢獻

對我們問題跟蹤的貢獻

如果您想幫助我們管理傳入問題,請參閱我們的社群問題跟蹤頁面。

language-server-protocol 的貢獻

debug-adapter-protocol 的貢獻

vscode-generator-code 的貢獻

vscode-vsce 的貢獻

inno-updater 的貢獻

localization 的貢獻

有超過 800 名 雲 + AI 本地化 社群成員使用 Microsoft 本地化社群平臺 (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, 朱奕婷, 薛建東, feiyun0112 feiyun0112, Joel Yang, 劉瑞恆 劉瑞恆, Edi Wang, Junzhe Liu, Dave Young, 張銳, 顧一之, 範蘇, 周昊宇, Justin Liu, Pluwen, Tony Xia, Yu Zhang, 左翔, 談少民, 劉彥佐, Zhiqiang Li, 葉福永, G.Y. Z, 虎昊, 龔志樂, meng shao, Horie Yuan, 孔祥瑞, Liam Kennedy, 王文傑, 趙暢暢, 樊松陽, anson zhang, Young Bige, 施流, 王德邦, Jessica Zhang, 任利城, 雷馳, 孫慶, 傅雄, Lynne Dong, 趙雨, 吉姆 舒, 黃紅東, 尤遊, 陶劍秋, Hanlin Yang, , 吳本慧, Bravo Yeung, Michael Zhang, 張漢宇, Y F, WangCG duoduobear, 孫自強, 鄭越, 劉正元, 李江, 鍾擎, 彭偉, 徐濤, 許逍遙, Charles Lee, 周瑜, WL, 全偉, rsy iridescent, Simon Chan, 黃海龍, 陳仁松, 徐潔婷, panda small, 張翼, 楊晨, 王維軒, 楊舜傑, 方路迪, 劉雨齊, 周建, 羅濤, cuibty wong, 李立飛, 李釗, 譚九鼎。
  • 繁體中文: 謝政廷, 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。
© . This site is unofficial and not affiliated with Microsoft.