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

Posted

技术标签:

【中文标题】如何在 Visual Studio Code 中使用 HTML 标记格式化 PHP 文件?【英文标题】:How can I format PHP files with HTML markup in Visual Studio Code? 【发布时间】:2017-05-10 21:16:54 【问题描述】:

我正在使用 Laravel,所以所有视图都是 .blade.php 文件。由于 PHP 扩展,Visual Studio Code 不会格式化 html。我删除了文件名的“刀片”部分,但仍然没有正确格式化文件(通过 Alt+Shift+F) .

我还尝试了大约五个扩展,但没有一个可以重新格式化。

如何在 Visual Studio Code 中格式化 .blade.php 文件?

【问题讨论】:

VSCode Format code command for PHP/HTML的可能重复 VS Code 具有开箱即用的 HTML Intellisense,为了使用此插件实现您的目标,请转到主菜单 - 文件/首选项/设置,然后在您的用户设置中添加:“文件.associations": "*blade.php": "html" 它适用于任何模板扩展、树枝等。即使不重新启动 VS Code 也可以开始工作。 【参考方案1】:

我认为Beautify (by HookyQR) 可能会成功。只需在其配置的 HTML 部分添加“php”和/或“blade.php”即可美化 PHP/Blade 视图文件。

它对我有用!

【讨论】:

回复“'blade.php'”:不应该只是“'blade'”吗? 如果没有对 Blade 文件的直接支持,为什么它比 OP 尝试的其他扩展更好?【参考方案2】:

扩展名Beautify(来自 HookyQR)做得很好。将 PHP 和任何其他文件扩展名类型添加到配置中。作为said by Nico,举个例子:

    转到用户设置 (Ctrl + Shift + P用户设置 (UI) 或 Ctrl + ,(逗号)

    在上面的字段中搜索美化。并点击 “在 settings.json 中编辑” 获得 “美化:配置”

    对于 "html" 部分,添加 "php""blade"

###用法

您可以直接调用它。按F1,然后输入美化自动完成为您提供了两种选择,“美化文件”“美化选择”选择您需要的,它就可以完成这项工作。这是一种直截了当的直接方式

您也可以添加一个键绑定来获得一个键盘快捷键。操作方法如下:

    打开 keybindings.json(进入菜单 FilePreferencesKeyboard Shortcuts

    点击上方。打开并编辑文件 keybindings.json

    将以下内容添加到右括号中,[]

    
           "key": "alt+b",
           "command": "HookyQR.beautify",
           "when": "editorFocus"
    
    

    选择您想要的任何键,并确保您不会覆盖现有的键。存在与否先在左侧搜索。

请注意,所有这些内容都已在扩展程序的描述中详细记录。

额外:关于刀片的注意事项

(@Peter Mortensen 澄清说明套件)

blade 或blade.php

如果您对设置是blade 还是blade.php 感到困惑!我给你清理掉!这是blade!那是语言的 vscode 关键字!

你怎么知道的?

首先,如果您如下图所示打开语言列表:

写刀片

你可以看到Laravel Blade (blade)!语言关键字在括号中! 刀片

好吧,但是如何检查!

在设置中尝试blade.php

尝试美化

你会得到一个询问什么语言(html、css、js)的上下文菜单!

所以它不起作用!

真正了解!放回blade! 而且它会直接工作和美化!

它与刀片的工作情况如何

对此的真棒答案!试试看,自己看看!

但是如果你问我!我会说它确实可以与 html 一起使用!它可能太方便了!你可能需要修复一些线路!取决于您的期望和风格!

这里有一个插图!我故意搞砸了缩进

这里是美化结果:

【讨论】:

这几乎可以正常工作,它认为 PHP 标签正在打开 HTML 标签,并缩进它下面的所有内容 我刚刚添加了“blade”而不是“blade.php”,正如@Sam Dan 建议的那样 铅笔图标,在哪里? @Jonny 事情从那时起发生了变化! vscode 更新了它的设置管理界面!我会更新的!但是你需要做的是CTRL + SHIFT + P > user settings (UI) 然后点击edit on settings.json 文件“settings.json”中的"blade"是否应该是"blade.php"?为什么或为什么不?【参考方案3】:

Beautify(来自 HookyQR)确实解决了这个问题!

许多人将“blade.php”和“php”添加到 HTML 配置中。 Beautify 无法识别并手动选择 HTML 模板。相反,只需在 HTML 配置中添加“刀片”即可解决所有问题。

【讨论】:

我添加到我的用户配置"beautify.language": "js": "type": [ "javascript", "json", "jsonc" ], "filename": [ " .jshintrc", ".jsbeautifyrc" ] , "css": [ "css", "scss" ], "html": [ "htm", "html", "blade" ] , 这不是暗示 Blade 文件应该以“.blade”(而不是“.blade.php”)结尾吗?【参考方案4】:

如果您想要开箱即用的东西,请在 PHP 文件中添加嵌套 HTML 格式,支持 Visual Studio Code 应该已经具备。

它使用 html.format 的所有原生设置、保存时的格式等。试试扩展名 Format HTML in PHP。我之所以成功,是因为其他所有解决方案都让我烦恼,因为它没有 100% 有效。

【讨论】:

你指的是哪个原生设置?【参考方案5】:

我发现 this extension 名为 Format HTML in PHP 非常适合我。

【讨论】:

重复上一个答案?【参考方案6】:

Andrew Schultz mentioned 扩展名:“Format HTML in PHP”。

这确实是使用 HTML 标记格式化 PHP 文件的一个很好的扩展。它还格式化 PHP 文件中包含的 JavaScript 代码。

此外。好消息!开发人员已经成功地包含 Laravel Blade.php 文件。与此同时,我通过手动将语言从Blade 切换到 PHP 来格式化 Visual Studio Code 中的 Laravel 刀片文件,然后我使用带有 Ctrl + Alt 的扩展名“Format HTML in PHP” + F 或右键单击。它对我很有用。

【讨论】:

【参考方案7】:

这可以通过对 ".blade.php" 使用 HTML 格式来完成:

    打开 Command PaletteCtrl + Shift + P(在 PC 上)) 键入“Preferences:Open Settings (JSON)”(这是为了打开 settings.json) 添加
    "files.associations": 
            "*.blade.php": "html",
            "*.tpl": "html"
    ,
    

这会将 .blade.php 文件格式化为 HTML,但不会删除 Blade sn-ps。

【讨论】:

为什么* 用于第一项,而不是第二项 (".tpl")?【参考方案8】:

使用 php 中的一个新功能,vscode 似乎可以漂亮地格式化和突出嵌入的 HTML。 (php 7.3,在问题发布后发布)添加了所谓的“heredoc”和“neardoc”字符串。它们在这里得到了很好的描述:https://andy-carter.com/blog/what-are-php-heredoc-nowdoc。

基本上,你把你的 HTML 写成这样:

[php code.....]
echo
<<<HTML
   <div>
     <h1>This is a headline</h1>
    <p> this is a paragraph. lorem ipsum lorem ipsum blah black </p>
   </div>
HTML;
[^ don't forget the ;  follow with more php if you want]

它在屏幕上看起来很棒。

【讨论】:

【参考方案9】:

我在 PHP 中使用 Format HTML,它在包含 HTML 和 PHP 的文件中运行良好。但是,它似乎没有格式化“纯”php 文件,例如 Class。所以我还安装了 Phpfmt,它对纯 php 文件做得很好,但破坏了混合内容文件中的缩进。这是我得到的一个例子:

<?php
if (!$logged_in) 
    $login_form = 'data-toggle="modal" data-target="#Modal1"';
    $href = '#';
 else 
    $login_form = '';
    $href = 'members';

?>

开始的 php 标记与 html 正确对齐。 '我在'支持的转换'下看到它说:

AlignPHPCode:   Align PHP code within HTML block.

但正如您从上面看到的,它对我不起作用。有什么建议吗??

【讨论】:

以上是关于如何在 Visual Studio Code 中使用 HTML 标记格式化 PHP 文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何在Visual Studio Code 中运行 Python

如何评价Visual Studio Code

visual studio code如何运行c

Deepin系统中如何安装Visual Studio Code

如何在 Linux 中安装 Visual Studio Code

如何在 Visual Studio Code 中自动获取参数名称?