【问题标题】:How to make VS Code treat a file extensions as a certain language?如何使 VS Code 将文件扩展名视为某种语言?
【发布时间】:2015-07-10 12:04:25
【问题描述】:

或者有没有办法切换当前文件的语言,以便正确突出显示语法?

例如,*.jsx 实际上是 JavaScript,但 VS Code 无法识别它。

【问题讨论】:

    标签: visual-studio-code vscode-settings


    【解决方案1】:

    更新

    请注意,JoelAZ 的answer 更简单,并且会导致相同的设置更改!下面的答案仍然有效,只是更多的步骤和更多的大惊小怪。

    旧答案

    Visual Studio Code 中,您可以将语言突出显示的持久文件关联添加到您的settings.json 文件中,如下所示:

    // Place your settings in this file to overwrite the default settings
    {
      "some_setting": custom_value,
      ...
    
      "files.associations": {
        "*.thor": "ruby",
        "*.jsx": "javascript",
        "Jenkinsfile*": "groovy"
      }
    }
    

    您可以使用Ctrl+Shift+P(或查看 -> 命令面板),然后输入settings JSON。选择Preferences: Open Settings (JSON)打开您的settings.json

    要找到正确的语言 ID,请使用 Ctrl+Shift+P(或 View -> Command Palette),然后输入Change Language Mode。您可以在列表中看到语言 ID,例如键入 docker 以查找 Docker 文件的语言 ID (dockerfile)。在上例的第一个条目中,.thor 是文件结尾,ruby 是语言 ID。

    Files: Associations 功能首次在 Visual Studio Code 版本 1.0(2016 年 3 月)中引入。检查发行说明中可用的wildcard patterns 和文档中的known language strings

    【讨论】:

    • 关联的值需要是语言/插件的 ID,而不是名称。比如我安装的VBScript插件,ID是vbs。 "*.vms" : "vbs" 让自定义扩展名正确关联。
    • 您也可以将这些设置放在项目特定的${projectdir}/.vscode/settings.json 文件中。
    • @TatiOverflow 从菜单中是 View -> Command Palette。 (但你可能想试试 Shift 按钮而不是shit 按钮,那个对我也没什么用。)
    • @MattM 但是要找到正确的 ID 名称,您必须:Ctrl+Shift+P(或 Mac 上的 Cmd)并选择“更改语言模式”,然后在显示的列表中您将语言的 ID(例如:Docker 的“dockerfile”或 Batch 的“bat”)
    • @alex 和 Carl,使用“配置文件关联”菜单有一种更简单的方法,它根本不需要任何 ID 名称。在此处查看完整的答案和步骤:stackoverflow.com/a/51228725/3307796
    【解决方案2】:

    我发现的全局关联最简单的方法就是 Ctrl+k m(或 Ctrl kbd>+Shift+P 并键入“更改语言模式”)与您关联的类型的文件打开。

    在第一个选择中将是选项“为 'x' 配置文件关联”(无论文件类型如何 - 参见附图)。选择此项后,您可以选择语言,然后使文件类型关联永久化。

    自原始问题和接受的答案以来,这可能已经改变(可能已经改变)(我不知道它何时改变),但它比接受的手动编辑步骤和其他一些答案要容易得多,并且完全避免了与可能不明显的 ID 混淆。

    【讨论】:

    • 谢谢 - 这对我有用。手动编辑settings.json文件时不清楚扩展ID应该是什么,但是这个方法排序了!
    • 不客气@ccbunney,很高兴它有帮助。这与我遇到的问题完全相同——我从来没有弄清楚我需要的扩展 ID,哈哈。无论如何,我真的很高兴为自己找到这个解决方案,它帮助其他人真是太酷了! :D
    • 这个解决方案有一个显着的优势。其他解决方案需要您提前知道语言标识符是什么。这对于code.visualstudio.com/docs/languages/… 中列出的java 等预定义值是可以的,但是对于安装的VS Code 扩展,我们会不知所措。例如,我为 Apache *.conf 文件安装了一个 Apache 扩展,语言标识符原来是 apacheconf——我怎么猜到了?我通过遵循上述解决方案发现了这一点。然后我可以编辑settings.json 以进一步破解映射。
    • @VincentYin 完全正确。出于这个原因,这是最简单的解决方案,与我首先找到此解决方案的原因相同 - 不知道什么是 lang。标识符是我需要的。很高兴大家发现它有帮助。
    • 我尝试了@Josien 获得最多投票的答案,.gpx 文件被视为.xml 文件,但 VSC 在执行此操作后仍然没有语法突出显示文件。但是上面的这个解决方案效果很好
    【解决方案3】:

    按住 Ctrl+Shift+P(或 Mac 上的 cmd),选择“更改语言模式”即可。

    但我仍然无法找到一种方法让 VS Code 将具有特定扩展名的文件识别为某种特定语言。

    【讨论】:

    • 似乎有直接到Change Language Mode的快捷方式; Alt+K, M
    • Cmd+K, M for Mac。
    • 这是很有可能的。请参阅下面的答案:stackoverflow.com/a/51228725/3307796
    • 如果没有帮助,为什么VSC中有文件关联?
    • ctrl+shit+p 对我不起作用。什么是常规的非快捷方式?
    【解决方案4】:

    例如:

    // .vscode/settings.json in workspace
    
    {
      "files.associations": {
        "*Container.js": "javascriptreact",
        "**/components/*/*.js": "javascriptreact",
        "**/config/routes.js": "javascriptreact"
      }
    }
    

    【讨论】:

    • 不错。如果您具有相同的扩展名,但基于路径的语言解析器不同,这将派上用场。例如。您可以让 yml 在一个文件夹中处理 Concourse 管道,在另一个文件夹中处理 Ansible 文件。
    • 如果可以的话,我会投票两次。一直在尝试使用 .html 扩展名保留我的 Nanoc 布局和部分的语法,这解决了它:"**/layouts/**/*.html": "erb" - 值得注意的是,VSCode“语言模式”下拉菜单在括号中显示了语法荧光笔的实际名称,例如Ruby ERB (erb)
    • 这对我有用,但是作为一个附带问题,equinusocio.vsc-material-theme-icons 没有正确地将图标映射到这些类型。
    【解决方案5】:

    这对我有用。

    {
    "files.associations": {"*.bitesize": "yaml"}
     }
    

    【讨论】:

      【解决方案6】:

      例如,这将使以.variables.overrides 结尾的文件被视为与任何其他LESS 文件一样。在代码着色方面,在(自动)格式方面。根据需要在用户设置或项目设置中定义。

      (语义 UI 使用这些奇怪的扩展,以防您想知道)

      【讨论】:

        【解决方案7】:

        我在这里找到了解决方案:https://code.visualstudio.com/docs/customization/colorizer

        转到VS_CODE_FOLDER/resources/app/extensions/ 并在那里更新package.json

        【讨论】:

          【解决方案8】:

          按照https://code.visualstudio.com/docs/customization/colorizer#_common-questions 上的步骤对我来说效果很好:

          要扩展现有的着色器,您可以创建一个简单的 package.json 在 .vscode/extensions 下的新文件夹中,并提供 extensionDependencies 属性指定您想要的自定义 添加到。在下面的示例中,将扩展名 .mmd 添加到 降价着色器。请注意,不仅必须 extensionDependency 名称与自定义匹配,但语言 ID 必须与 您正在扩展的着色器的语言 ID。

          {
              "name": "MyMarkdown",
              "version": "0.0.1",
              "engines": {
                  "vscode": "0.10.x"
              },
              "publisher": "none",
              "extensionDependencies": [
                  "markdown"
              ],
              "contributes": {
                  "languages": [{
                      "id": "markdown",
                      "aliases": ["mmd"],
                      "extensions": [".mmd"]
                  }]
              }
          }
          

          【讨论】:

            【解决方案9】:

            您可以将 md.html 扩展名添加到您的 settings.json 文件关联中,以启用 markdeep 文件的降价格式,如下所示:

                "files.associations": {
                    "*.md.html": "markdown"
                },
            

            settings.json 文件位于不同的位置,具体取决于您的操作系统。例如它在 macOS 中是~/Library/Application Support/Code/User/settings.json。 您可以在 VS Code 中使用 Ctrl+Shift+p 打开和编辑它。

            【讨论】:

              【解决方案10】:

              我采用了不同的方法来解决几乎相同的问题,在我的例子中,我做了一个新的扩展,添加了对 Drupal 特定文件(例如 .module 和 .inc)的 PHP 语法高亮支持:https://github.com/mastazi/VS-code-drupal

              正如您在代码中看到的,我创建了一个新的扩展而不是修改现有的 PHP 扩展。显然我在 Drupal 扩展中声明了对 PHP 扩展的依赖。

              这样做的好处是,如果 PHP 扩展有更新,我对 Drupal 的自定义支持不会在更新过程中丢失。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 2019-03-26
                • 2020-04-04
                • 2017-04-18
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多