Visual Studio Code 中 PHP/HTML 的格式代码命令

Posted

技术标签:

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

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

【问题讨论】:

【参考方案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 support。 extensions 涵盖了它所缺少的内容。快速搜索会发现至少三个(1、2 和 3)声称支持 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】:

我安装了

Prettier 用于 HTML、CSS 和 JavaScript 文件

PHP Intelephense 用于 PHP 文件

我按照每个插件的说明进行操作,但发现我必须额外手动编辑 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 为高级功能付费。格式不包含在高级版中。

以上是关于Visual Studio Code 中 PHP/HTML 的格式代码命令的主要内容,如果未能解决你的问题,请参考以下文章

visual studio code(vscode) 调试php

visual studio code (vsc)中查看 php 数组的全部元素

Visual Studio Code 调试 PHP

如何在 Visual Studio Code 中使用 HTML 标记格式化 PHP 文件?

visual studio code 设置php.validate.executablePath

如何在 PHP 的 Visual Studio Code 中选择包括 $ 在内的整个变量名?