【问题标题】:Format code command for PHP/HTML in Visual Studio CodeVisual Studio Code 中 PHP/HTML 的格式代码命令
【发布时间】:2015-11-21 01:09:21
【问题描述】:

是否可以让 Visual Studio Code 在 Windows Visual Studio Code 版本 0.7.1 上格式化混合的 HTML 和 PHP 代码?

【问题讨论】:

    标签: php format visual-studio-code


    【解决方案1】:

    更新 2021-07-21

    距离我第一次写这个答案已经有五年多了。我最初链接的扩展被放弃了,Visual Studio Code 的内在 PHP 支持没有改进,这令人失望。据我所知,目前唯一还不错的扩展是PHP Intelephense,它使用免费增值模式:基本功能是免费的,在撰写本文时,终身许可是 12 美元。

    免费版本的 Intelephense 支持使用常用快捷键(在 Windows 和 Linux 上为 Alt + Shift + F ⌥⇧F 在 macOS 上)。 Visual Studio Code 仍然缺乏对 PHP 代码格式化的内置支持,如果您在未安装适当扩展程序的情况下尝试格式化 PHP,则会将您引导至扩展程序市场。

    原始答案

    Visual Studio Code 有pretty awesome PHP supportextensions 涵盖了它所缺少的内容。快速搜索会发现至少三个(123)声称支持 PHP 格式。

    他们似乎在 Windows/Linux 上使用标准快捷键 Alt + Shift + F,在 Mac 上使用不同的快捷键。如果您使用的是 Mac,请尝试 ⌥⇧F

    【讨论】:

    • 男人。我真的很期待 VSCode 对 PHP 的格式支持。
    • @MartynChamberlin Visual Studio Code 现在拥有近乎完整的 PHP 支持,包括借助第三方扩展的格式支持。 code.visualstudio.com/Docs/languages/overview
    • 嗯。他们都缺乏imo。 format-php 不处理函数范围的注释格式。 format-indent 完全无法使用(Artur 的“每次格式化时在每一行后添加一个新的空行”对我来说也是如此)。 php-debug 很荒谬,因为它不是一站式解决方案——你必须修改你的 php.ini 文件,而且我必须修改几个,因为我的一些项目在 VM 中,一些在 MAMP 中。它的 Mac 文档也为零,这很奇怪。我仍在等待让 VSCode 对我有用的“PHP 格式化程序”。
    • 快到 2019 年了,我们仍然没有涵盖这部分内容。 Beautify 扩展有时可以正常工作,但会在某些部分弄乱缩进,例如内部类方法
    • @AndrewKoster 在我在这里写答案的这些年里,我已经同意了。然而,当时——五年前——VSC 刚刚添加了 PHP 支持,它比以前存在于 VSC 生态系统中的要好得多。从那以后的几年里,它一直无法跟上 PhpStorm,并且在内在支持方面也没有任何改进。我目前使用 VSC + Intelephense;它是可用的,但它还有很多不足之处。
    【解决方案2】:

    要获得混合 PHP、HTML 和 JavaScript 代码的最佳格式设置,只需使用“PHP CS FIXER”。

    然后在你的setting.json 文件上使用这个简单的配置:

    "php-cs-fixer.executablePath": "${extensionPath}\\php-cs-fixer.phar",
    "[php]": {
        "editor.defaultFormatter": "junstyle.php-cs-fixer",
        "editor.formatOnSave": true
    },
    "php-cs-fixer.rules": "@PSR2",
    "php-cs-fixer.formatHtml": true,
    

    【讨论】:

    • 这个设置对我有用,我已经安装了这个扩展,但我错过了这个设置。
    • 太棒了,效果很好。为什么他们不在扩展常见问题解答中告诉设置? ):
    【解决方案3】:

    大多数解决方案的问题在于它们都注册为格式化提供程序,并且在 Visual Studio Code 中,您只能在保存特定文件类型时运行一个格式化程序。

    因此,您可能会得到所有的 HTML、CSS、JavaScript 代码,但会忽略 PHP 代码。或者,如果您使用常规的 PHP 格式化程序,则没有一个可以正确处理 HTML。

    我继续做了一个扩展,它在保存钩子之前运行并且没有注册为 PHP 格式化程序,所以它会用 js-beautify 完成所有的 HTML,然后你可以使用一些东西像 PHPCS + PHPCBF 来格式化 HTML。因此,就我而言,它基本上是目前可用的最佳解决方案。

    Format HTML in PHP 在 Visual Studio Code 市场上。

    【讨论】:

      【解决方案4】:

      我使用 bmewburn.vscode-intelephense-client,它运行良好(除非出现语法错误)。

      有高级版;我不知道效果如何。

      On GitHub

      On VSCode Marketplace

      Official Site


      许多其他人提到的 Format HTML in PHP 扩展确实有效,除了存在一些对齐问题,您必须分别格式化 HTML 和 PHP。


      phpcbf 也是一个不错的选择,只是它需要更多的自定义,而且计算起来有点复杂。这可能是好事也可能是坏事,这取决于你想要什么。

      【讨论】:

      • 这是自最新的 VS Code 更新之一以来唯一帮助我的人 - 谢谢!
      【解决方案5】:

      我安装了

      我按照每个插件的说明进行操作,但发现我必须额外手动编辑 settings.json 才能让它们协同工作。

            "editor.defaultFormatter": "esbenp.prettier-vscode",
            "[php]": {
                "editor.defaultFormatter": "bmewburn.vscode-intelephense-client"
      

      这些设置使用 Intelephense 作为 PHP 文件的格式化程序,并使用 Prettier 作为所有其他文件的格式化程序。

      现在我像其他人一样使用 Shift + Alt + F 来格式化文件。

      【讨论】:

      • 您的回答值得更多的支持!谢谢。
      • 在哪里可以找到 settings.json 文件?
      • 我通常只需按 [ctrl] + [,] 即可进入设置,然后单击标题栏下右上角出现的“打开设置 (JSON)”图标 这是另一个选项...VS Code: How to open settings.json file?
      • 另一个选项:languagespecific-editor-settings "如果你有一个文件打开并且你想为这个文件类型自定义编辑器,在状态栏中选择 VS Code 右下角的语言模式窗口。这将打开语言模式选择器,其中包含配置“language_name”基于语言的设置选项。选择此选项将打开您的用户 settings.json,其中包含您可以添加适用设置的语言条目。”
      【解决方案6】:

      我已经尝试了 Visual Studio Code 的几乎所有格式扩展,但我认为没有一个可以正确/一致地处理混合 PHP/HTML 页面的格式。

      【讨论】:

        【解决方案7】:

        我在 Laravel 中编码,我使用 Format HTML In PHP 来格式化 PHP 代码中的 HTML 代码。它运行良好。

        【讨论】:

        • 不适合我,已经重新加载 vscode 仍然没有。似乎所有者在 github 问题上遇到了麻烦
        【解决方案8】:

        将扩展Format HTML in PHP 添加到 Visual Studio Code。

        或者使用“在 PHP 中格式化 HTML”在扩展中搜索。

        重新加载后,使用Shift + Alt + F

        【讨论】:

          【解决方案9】:

          转到 vs 代码中的扩展:

          然后写:category:formatters php

          按回车键。您将看到所有可用的格式化程序。现在安装你喜欢的那个。

          然后在任何打开的 php 文件中右键单击,从弹出菜单中选择格式文档。

          【讨论】:

          • 那是付费的,不是免费的。我现在在 laravel 项目中
          • @FoggyMindedGreenhorn 为高级功能付费。格式不包含在高级版中。
          猜你喜欢
          • 1970-01-01
          • 2018-05-01
          • 2020-08-16
          • 1970-01-01
          • 2018-05-25
          • 2018-03-12
          • 2016-06-26
          • 2021-03-02
          • 2018-09-05
          相关资源
          最近更新 更多