【问题标题】:How to Format Laravel Blade Codes in Visual Studio Code?如何在 Visual Studio Code 中格式化 Laravel Blade 代码?
【发布时间】:2018-02-26 08:04:44
【问题描述】:

我已经安装了一些 Visual Studio Code 扩展来处理 Laravel Blade 代码,例如

laravel 刀片 [https://marketplace.visualstudio.com/items?itemName=KTamas.laravel-blade]

Laravel 刀片片段 [https://marketplace.visualstudio.com/items?itemName=onecentlin.laravel-blade]

但他们并没有帮助我格式化 Laravel Blade 代码 [blade.php 文件]。我的意思是他们没有像我预期的那样自动缩进代码。但是我在网上看到了刀片代码,这些代码在 Visual Studio Code IDE 中缩进得很好。

示例:

https://medium.com/@ardanirohman/laravel-%EF%B8%8F-visual-studio-code-debug-environment-65440274d3b0

我可以使用它们的任何特定配置或技术来使这些扩展工作还是有其他方法?提前致谢

【问题讨论】:

    标签: php laravel visual-studio-code laravel-blade


    【解决方案1】:
    1. 首先转到“Visual Studio Code”设置并搜索选项“files.associations”如果该选项在您的设置中不可用。请将您的 Visual Studio 代码更新到最新版本。

    2. 在设置覆盖面板中经过以下sn-p

    "files.associations": {
        "*.blade.php": "html",
        "*.tpl": "html"
    }
    

    它将为 html 类型关联 .blade.php 和 .tpl 文件扩展名

    保存它,你就可以开始了。快乐的格式:)

    更新: 使用刀片代码格式化html仍然存在一些问题,格式化程序在执行格式命令时倾向于将刀片代码放在一行中。但是,如果您的代码增长,那将不是问题。此外,您可以通过在刀片块之间添加行注释来轻松管理它们。在代码中添加注释总是一件好事。


    更新:似乎更新版本在用户设置中添加了启用刀片格式的选项。要使用它,

    1. 请确保您使用的是最新版本并安装了“Laravel Blade Snippets”扩展。

    2. 然后 Ctrl+Shift+P输入用户 设置 : 回车

    3. 在“用户设置”>“扩展”>“刀片配置”中勾选启用格式化刀片文件。

    就是这样。

    【讨论】:

    • 当前版本的 laravel-blade-sn-ps 中的刀片格式化程序将左对齐所有刀片指令并删除缩进,这使得嵌套刀片指令难以阅读。目前有几个问题未解决,包括github.com/onecentlin/laravel-blade-snippets-vscode/issues/104
    • 刀片文件中script标签里面的js代码不格式化吗?
    【解决方案2】:

    更新你的 VSCode。转至 Settings>ExtensionsEnable Blade Format 复选框。 使用窗口快捷键:Shift+Alt+F:

    【讨论】:

    • 这似乎不像 2019 年 11 月 19 日那样有效。我也没有启用任何其他第 3 方格式化程序。我什至尝试开始一个新文档。基本上,如果我格式化刀片文档,它会将所有行向左对齐。真可惜。
    • 同时重新启动 Visual Studio Code 以使更改生效。
    【解决方案3】:

    对我来说,this 扩展非常适合使用以下设置进行自动缩进:

    "beautify.language": {
            "html": [
                "blade",
                "html"
            ]
        },
    

    【讨论】:

    • 你能描述美化扩展设置的选项在哪里
    • 此设置 sn-p 旨在进入settings.json。您可以通过选择“首选项 > 用户设置”来到达那里,然后在菜单中显示的任何设置下查找“在 settings.json 中编辑”链接。也就是说,在发表此评论时,Beautify 不会正确格式化 Blade 模板,除非您实现 @Slivicon 发布的代码。
    【解决方案4】:
    Files>Preferences>Settings>Extensions>Blade Configurations
    

    然后启用格式化刀片文件(跟随图片)。然后重新启动 Visual Studio Code。现在使用 Shift+Alt+F 来格式化。现在好了。

    【讨论】:

      【解决方案5】:

      首先安装这个扩展,https://marketplace.visualstudio.com/items?itemName=onecentlin.laravel-blade

      打开settings.json。 添加此行。

      "[blade]": {
          "editor.defaultFormatter": "onecentlin.laravel-blade",
          "editor.formatOnSave": true
      }
      

      【讨论】:

      • 接受的答案对我不起作用——尽管我为此添加了刀片到被忽略的语言中,但它一直在尝试使用 Prettier。然而,这是一种享受。
      【解决方案6】:

      此解决方案适用于 2021

      首先,安装Laravel Blade,然后更新您的settings.json 文件并添加此部分

      "[blade]": {
        "editor.defaultFormatter": "amirmarmul.laravel-blade-vscode",
        "editor.formatOnSave": true
      }
      

      【讨论】:

        【解决方案7】:

        我发现实际上会尝试在刀片文件中缩进与 html 混合的刀片指令的唯一解决方案是对 Beautify 扩展程序中的美化器 javascript 的破解,由 Faizal Nugraha 完成。

        编辑: 不过,这似乎不支持在 html <script> 标记内格式化刀片指令。 Beautify 似乎将其格式化为 JavaScript。

        1. 安装Beautify 扩展
        2. 编辑~/.vscode/extensions/hookyqr.beautify-1.5.0/node_modules/js-beautify/js/src/html/beautifier.js (Linux/MacOS) 或%USERPROFILE%\.vscode\extensions\hookyqr.beautify-1.5.0\node_modules\js-beautify\js\src\html\beautifier.js (Windows) 并执行以下操作:
        3. 寻找函数Beautifier.prototype.beautify = function()
        4. 在函数内部查找行var source_text = this._source_text;
        5. 在那一行之后,粘贴:
                // BEGIN blade-1of2
                source_text = source_text.replace(/\{\{(--)?((?:(?!(--)?\}\}).)+)(--)?\}\}/g, function(m, ds, c, dh, de) {
                if (c) {
                    c = c.replace(/(^[ \t]*|[ \t]*$)/g, '');
                    c = c.replace(/'/g, ''');
                    c = c.replace(/"/g, '"');
                    c = encodeURIComponent(c);
                }
                return "{{" + (ds ? ds : "") + c + (de ? de : "") + "}}";
            });
            source_text = source_text.replace(/^[ \t]*@([a-z]+)([^\n]*)$/gim, function(m, d, c) {
                if (c) {
                    c = c.replace(/'/g, ''');
                    c = c.replace(/"/g, '"');
                    c = "|" + encodeURIComponent(c);
                }
                switch (d) {
                    case 'break':
                    case 'case':
                    case 'continue':
                    case 'default':
                    case 'empty':
                    case 'endsection':
                    case 'else':
                    case 'elseif':
                    case 'extends':
                    case 'csrf':
                    case 'include':
                    case 'json':
                    case 'method':
                    case 'parent':
                    case 'section':
                    case 'stack':
                    case 'yield':
                        return "<blade " + d + c + "/>";
                    default:
                        if (d.startsWith('end')) {
                            return "</blade " + d + c + ">";
                        } else {
                            return "<blade " + d + c + ">";
                        }
                }
            });
            // END blade-1of2
        
        1. 寻找var sweet_code = printer._output.get_code(eol);这一行
        2. 在那一行之后,粘贴:
            // BEGIN blade-2of2
            sweet_code = sweet_code.replace(/^([ \t]*)<\/?blade ([a-z]+)\|?([^>\/]+)?\/?>$/gim, function toDirective(m, s, d, c) {
                if (c) {
                    c = decodeURIComponent(c);
                    c = c.replace(/&#39;/g, "'");
                    c = c.replace(/&#34;/g, '"');
                    c = c.replace(/^[ \t]*/g, '');
                } else {
                    c = "";
                }
                if (!s) {
                    s = "";
                }
                switch (d) {
                    case 'else':
                    case 'elseif':
                    case 'empty':
                        s = s.replace(printer._output.__indent_cache.__indent_string, '');
                        break;
                }
                return s + "@" + d + c.trim();
            });
            sweet_code = sweet_code.replace(/@(case|default)((?:(?!@break).|\n)+)@break/gim, function addMoreIndent(m, t, c) {
                var indent = printer._output.__indent_cache.__base_string;
                c = c.replace(/\n/g, "\n" + indent + printer._output.__indent_cache.__indent_string);
                c = c.replace(new RegExp(indent + '@' + t, 'gi'), '@' + t);
                return "@" + t + c + "@break";
            });
            sweet_code = sweet_code.replace(/\{\{(--)?((?:(?!(--)?\}\}).)+)(--)?\}\}/g, function (m, ds, c, dh, de) {
                if (c) {
                    c = decodeURIComponent(c);
                    c = c.replace(/&#39;/g, "'");
                    c = c.replace(/&#34;/g, '"');
                    c = c.replace(/(^[ \t]*|[ \t]*$)/g, ' ');
                }
                return "{{" + (ds ? ds : "") + c + (de ? de : "") + "}}";
            });
            // END blade-2of2
        
        1. 保存文件并重启 VS Code。

        当然,如果文件被更改、更新或其他方式,则必须重做。

        参考。 https://gist.github.com/fzldn/a27973ff7e4c8e3738b0e06e525f7403#gistcomment-2693197

        【讨论】:

        • 感谢您发布此信息!一些简单的格式还有很长的路要走,但我认为您的解决方案是完成正确缩进的唯一方法。
        • 我当然不能相信链接要点中属于 Faizal 的代码,但我发现它是迄今为止最好的。它仍然存在一些限制,但它是我迄今为止找到的最佳解决方案。
        【解决方案8】:

        我想为支持指令缩进和指令中的php代码格式的VSCode推荐vscode-blade-formatter

        screenshot

        这是基于我之前的项目blade-formatter。 我创建这个的动机是我想通过 CLI 以编程方式使用正确的缩进格式化刀片文件。

        如果您想缩进指令,请尝试。

        【讨论】:

        【解决方案9】:

        安装 Laravel Blade Formatter 扩展后,将这些行添加到您的 VS Code settings.json 文件中:

        https://marketplace.visualstudio.com/items?itemName=shufo.vscode-blade-formatter

        editor.formatOnSave": true,
        "[blade]": {
            "editor.defaultFormatter": "shufo.vscode-blade-formatter"
        },
        

        【讨论】:

          【解决方案10】:

          将此添加到settings.json

          "beautify.language": {
                  "html": [
                          "blade"
                  ]
          },
          

          【讨论】:

            【解决方案11】:

            您可以自行决定在此处找到合适的扩展程序。您可能想要使用扩展,因为它比内置格式更强大。

            很长一段时间以来,我一直在使用 Laravel Blade Snippets,因为在发布此消息时,它的安装量已达到 140 万。不过,我最近换到了Laravel Blade Formatter,虽然只有 134K 的安装量,但我现在开心多了。

            一旦你找到了你的毒药,Control-Shift-i 就是你的朋友。

            【讨论】:

              【解决方案12】:

              右键单击文档中的任意位置,选择“格式化文档”,然后选择laravel Blade sn-ps。先安装 Laravel Blade sn-ps 扩展。

              【讨论】:

                猜你喜欢
                • 2021-03-02
                • 1970-01-01
                • 2017-08-13
                • 2018-05-01
                • 2016-06-29
                • 2018-09-05
                • 2021-06-26
                • 2016-06-26
                相关资源
                最近更新 更多