现已发布!阅读关于 12 月份的新功能和修复。

文件图标主题

Visual Studio Code 在其 UI 中会显示文件名旁边的图标,扩展可以提供用户可以选择的新文件图标集。

添加新的文件图标主题

您可以从图标(最好是 SVG)和图标字体创建自己的文件图标主题。例如,请查看内置的两个主题:MinimalSeti

首先,创建一个 VS Code 扩展并添加 iconTheme 贡献点。

{
  "contributes": {
    "iconThemes": [
      {
        "id": "turtles",
        "label": "Turtles",
        "path": "./fileicons/turtles-icon-theme.json"
      }
    ]
  }
}

id 是图标主题的标识符。它在设置中用作标识符,因此使其唯一但易于阅读。label 显示在文件图标主题选择器下拉菜单中。path 指向扩展中定义图标集的那个文件。如果您的图标集名称遵循 *icon-theme.json 命名约定,您将在 VS Code 中获得补全支持和悬停提示。

文件图标集文件

文件图标集文件是一个 JSON 文件,由文件图标关联和图标定义组成。

图标关联将文件类型(“file”、“folder”、“json-file”……)映射到图标定义。图标定义指定了图标的位置:可以是图像文件,也可以是字体中的字形。

图标定义

iconDefinitions 部分包含所有定义。每个定义都有一个 id,将用于引用该定义。一个定义也可以被多个文件关联引用。

{
  "iconDefinitions": {
    "_folder_dark": {
      "iconPath": "./images/Folder_16x_inverse.svg"
    }
  }
}

上面的图标定义包含一个标识符为 _folder_dark 的定义。

支持以下属性

  • iconPath:当使用 svg/png 时:图像的路径。
  • fontCharacter:当使用字形字体时:要使用的字体中的字符。
  • fontColor:当使用字形字体时:要为字形使用的颜色。
  • fontSize:当使用字体时:字体大小。默认情况下,使用字体规范中指定的字体大小。它应该是相对于父字体大小的相对大小(例如 150%)。
  • fontId:当使用字体时:字体的 id。如果未指定,将选择字体规范部分中指定的第一个字体。

文件关联

图标可以与文件夹、文件夹名称、文件、文件扩展名、文件名和语言 ID 相关联。

此外,所有这些关联都可以针对“light”和“highContrast”颜色主题进行细化。

每个文件关联都指向一个图标定义。

{
  "file": "_file_dark",
  "folder": "_folder_dark",
  "folderExpanded": "_folder_open_dark",
  "folderNames": {
    ".vscode": "_vscode_folder"
  },
  "fileExtensions": {
    "ini": "_ini_file"
  },
  "fileNames": {
    "win.ini": "_win_ini_file"
  },
  "languageIds": {
    "ini": "_ini_file"
  },
  "light": {
    "folderExpanded": "_folder_open_light",
    "folder": "_folder_light",
    "file": "_file_light",
    "fileExtensions": {
      "ini": "_ini_file_light"
    }
  },
  "highContrast": {}
}
  • file 是默认的文件图标,显示在所有未匹配任何扩展名、文件名或语言 ID 的文件上。目前,文件图标定义中定义的属性都将被继承(仅适用于字形字体,对于 fontSize 很有用)。
  • folder 是折叠文件夹的文件夹图标,如果未设置 folderExpanded,则也是展开文件夹的图标。可以使用 folderNames 属性将特定文件夹名称与图标相关联。文件夹图标是可选的。如果未设置,则文件夹将不显示任何图标。
  • folderExpanded 是展开文件夹的文件夹图标。展开的文件夹图标是可选的。如果未设置,将显示为 folder 定义的图标。
  • folderNames 将文件夹名称与图标相关联。集合的键是文件夹名称,可以选择性地以单个父路径段 (*) 作为前缀。不支持模式或通配符。文件夹名称匹配不区分大小写。
  • folderNamesExpanded 将文件夹名称与展开文件夹的图标相关联。集合的键是文件夹名称,可以选择性地以单个父路径段 (*) 作为前缀。不支持模式或通配符。文件夹名称匹配不区分大小写。
  • rootFolder 是折叠工作区根文件夹的文件夹图标,如果未设置 rootFolderExpanded,则也是展开工作区根文件夹的图标。如果未设置,则工作区根文件夹将显示为 folder 定义的图标。
  • rootFolderExpanded 是展开工作区根文件夹的文件夹图标。如果未设置,将显示为 rootFolder 定义的图标,用于展开的工作区根文件夹。
  • rootFolderNames 将根文件夹名称与图标相关联。集合的键是文件夹名称。不支持模式或通配符。根文件夹名称匹配不区分大小写。
  • rootFolderNamesExpanded 将根文件夹名称与展开文件夹的图标相关联。集合的键是文件夹名称。不支持模式或通配符。根文件夹名称匹配不区分大小写。
  • languageIds 将语言与图标相关联。集合中的键是语言贡献点中定义的语言 ID。文件的语言是根据语言贡献中定义的扩展名和文件名确定的。请注意,语言贡献的“第一行匹配”不被考虑。
  • fileExtensions 将文件扩展名与图标相关联。集合中的键是文件扩展名。扩展名是点之后的(不包括点)文件名段。具有多个点的文件名(如 lib.d.ts)可以匹配多个扩展名;“d.ts”和“ts”。可以选择性地,文件扩展名可以以单个父路径段 (*) 作为前缀。扩展名区分大小写。
  • fileNames 将文件名与图标相关联。集合中的键是完整的文件名,不包括任何路径段。可以选择性地,文件扩展名可以以单个父路径段 (*) 作为前缀。不支持模式或通配符。文件名匹配不区分大小写。“fileName”匹配是最强的匹配,与文件名关联的图标将优先于匹配的文件扩展名和匹配的语言 ID 的图标。

(*) 某些属性键(folderNamesfolderNamesExpandedfileExtensionsfileNames)可以以单个父路径段作为前缀。仅当资源的直接父文件夹与父路径文件夹匹配时,才会使用该图标。这可用于为特定文件夹(例如 system)中的资源提供不同的外观。

  "fileNames": {
    "system/win.ini": "_win_ini_file"
  },

system/win.ini 表示该关联匹配直接位于 system 文件夹中的名为 win.ini 的文件。

  "fileExtensions": {
    "system/ini": "_ini_file"
  },

system/ini 表示该关联匹配直接位于 system 文件夹中的名为 *.ini 的文件。

文件扩展名匹配优先于语言匹配,但弱于文件名匹配。带父路径段的匹配优先于没有相同类型段的匹配。

带父路径的文件名匹配 > 文件名匹配 > 带父路径的文件扩展名匹配 > 文件扩展名匹配 > 语言匹配……

lighthighContrast 部分具有与上面列出的相同的ファイル关联属性。它们允许覆盖相应主题的图标。

字体定义

fonts 部分允许您声明任意数量的要使用的字形字体。之后,您可以在图标定义中引用这些字体。如果图标定义未指定字体 id,则首先声明的字体将用作默认字体。

将字体文件复制到您的扩展中,并相应地设置路径。建议使用WOFF 字体。

  • 将 'woff' 设置为格式。
  • 粗细属性值在此定义。
  • 样式属性值在此定义。
  • 大小应该是相对于使用图标的字体大小的。因此,请始终使用百分比。
{
  "fonts": [
    {
      "id": "turtles-font",
      "src": [
        {
          "path": "./turtles.woff",
          "format": "woff"
        }
      ],
      "weight": "normal",
      "style": "normal",
      "size": "150%"
    }
  ],
  "iconDefinitions": {
    "_file": {
      "fontCharacter": "\\E002",
      "fontColor": "#5f8b3b",
      "fontId": "turtles-font"
    }
  }
}

文件图标主题中的文件夹图标

当文件夹图标足以指示文件夹的展开状态时,文件图标主题可以指示文件资源管理器不要显示默认文件夹图标(旋转的三角形或“扭曲”)。通过在文件图标主题定义文件中设置 "hidesExplorerArrows":true 来启用此模式。

语言默认图标

语言贡献者可以为语言定义一个图标。

{
  "contributes": {
    "languages": [
      {
        "id": "latex",
        // ...
        "icon": {
          "light": "./icons/latex-light.png",
          "dark": "./icons/latex-dark.png"
        }
      }
    ]
  }
}

如果文件图标主题只有该语言的通用文件图标,则会使用该图标。

仅当以下条件满足时,才会显示语言默认图标:

  • 文件图标主题有特定的文件图标。例如,Minimal 没有特定的文件图标,因此不使用语言默认图标。
  • 文件图标主题不包含给定语言、文件扩展名或文件名的图标。
  • 文件图标主题未定义 "showLanguageModeIcons":false

如果以下条件满足,则始终显示语言默认图标:

  • 文件图标主题定义了 "showLanguageModeIcons":true
© . This site is unofficial and not affiliated with Microsoft.