【发布时间】:2015-11-21 01:09:21
【问题描述】:
是否可以让 Visual Studio Code 在 Windows Visual Studio Code 版本 0.7.1 上格式化混合的 HTML 和 PHP 代码?
【问题讨论】:
标签: php format visual-studio-code
是否可以让 Visual Studio Code 在 Windows Visual Studio Code 版本 0.7.1 上格式化混合的 HTML 和 PHP 代码?
【问题讨论】:
标签: php format visual-studio-code
距离我第一次写这个答案已经有五年多了。我最初链接的扩展被放弃了,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。
【讨论】:
要获得混合 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,
【讨论】:
大多数解决方案的问题在于它们都注册为格式化提供程序,并且在 Visual Studio Code 中,您只能在保存特定文件类型时运行一个格式化程序。
因此,您可能会得到所有的 HTML、CSS、JavaScript 代码,但会忽略 PHP 代码。或者,如果您使用常规的 PHP 格式化程序,则没有一个可以正确处理 HTML。
我继续做了一个扩展,它在保存钩子之前运行并且没有注册为 PHP 格式化程序,所以它会用 js-beautify 完成所有的 HTML,然后你可以使用一些东西像 PHPCS + PHPCBF 来格式化 HTML。因此,就我而言,它基本上是目前可用的最佳解决方案。
Format HTML in PHP 在 Visual Studio Code 市场上。
【讨论】:
我使用 bmewburn.vscode-intelephense-client,它运行良好(除非出现语法错误)。
有高级版;我不知道效果如何。
许多其他人提到的 Format HTML in PHP 扩展确实有效,除了存在一些对齐问题,您必须分别格式化 HTML 和 PHP。
phpcbf 也是一个不错的选择,只是它需要更多的自定义,而且计算起来有点复杂。这可能是好事也可能是坏事,这取决于你想要什么。
【讨论】:
我安装了
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 来格式化文件。
【讨论】:
我已经尝试了 Visual Studio Code 的几乎所有格式扩展,但我认为没有一个可以正确/一致地处理混合 PHP/HTML 页面的格式。
【讨论】:
我在 Laravel 中编码,我使用 Format HTML In PHP 来格式化 PHP 代码中的 HTML 代码。它运行良好。
【讨论】:
【讨论】: