首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >VSCode自定义代码格式和语言的自动缩排(Django-模板缩排)

VSCode自定义代码格式和语言的自动缩排(Django-模板缩排)
EN

Stack Overflow用户
提问于 2020-12-16 17:09:31
回答 1查看 168关注 0票数 1

我做了很多搜索,以找到一个创建或覆盖和现有的vscode扩展来为django-template做缩进,但什么都没有,在创建上也没有成功。仍然使用此设置的最佳答案:

代码语言:javascript
运行
复制
"files.associations": {
    "**/*.html": "html",
    "**/templates/**/*.html": "django-html",
}
"[django-html]": {
    "editor.defaultFormatter": "HookyQR.beautify",
}

"beautify.language": {
    "html": ["django-html"]
},

还有这个扩展:Dajngo (Baptiste Darthenay) & beautify。但是django-template语言没有缩进,只有HTML标签会缩进。我试图覆盖Djagno扩展以使其成为可能,是的,它会插入一些缩进,但在保存代码后,Beautify会自动格式化代码并删除该缩进,所以结果总是这样:

代码语言:javascript
运行
复制
<ul class="navbar-nav nav-flex-icons {% if LANGUAGE_BIDI %} mr-auto {% endif %}">
    {% get_available_languages as languages %}
    {% for lang_code, lang_name in languages %}
    {% if lang_code != LANGUAGE_CODE %}
    {% language lang_code %}
    <li class="nav-item">
      <a class="nav-link lang-setter" data-lang-code="{{ lang_code }}">
        {{ lang_code|language_name_local }}
      </a>
    </li>
    {% endlanguage %}
    {% endif %}
    {% endfor %}
</ul>

丑陋的模板。我还提供了所需的缩进规则,但我找不到一种方法来强制vscode代码格式化程序使用该规则。

代码语言:javascript
运行
复制
  "indentationRules": {
      "increaseIndentPattern": "((\\<)(body|address|blockquote|dd|div|dl|dt|tr|tbody|thead|fieldset|form|frame|frameset|h1|h2|h3|h4|h5|h6|iframe|noframes|object|ol|p|ul|applet|center|dir|a|menu|pre|table|button|a|abbr|acronym|area|b|base|basefont|bdo|big|br|button|caption|cite|code|col|colgroup|del|dfn|em|font|head|html|i|img|input|ins|isindex|kbd|label|legend|li|link|map|meta|noscript|optgroup|option|param|q|s|samp|script|select|small|span|strike|strong|style|sub|sup|table|tbody|td|textarea|tfoot|th|thead|title|tr|tt|u|var))|(\\{\\%)\\s*(autoescape|block|blocktrans|blocktranslate|comment|for|empty|if|elif|else|ifchanged|ifequal|ifnotequal|from|low|regroup|ssi|spaceless|templatetag|widthratio|with|verbatim|thumbnail)",
      "decreaseIndentPattern": "((\\<\\/)(.*)*(\\>))|((\\{\\%)\\s*(empty|elif|else|end(autoescape|block|blocktrans|blocktranslate|comment|for|if|ifchanged|ifequal|ifnotequal|spaceless|with|verbatim|thumbnail)))"
      }
EN

回答 1

Stack Overflow用户

发布于 2021-08-05 13:30:47

我也遇到了同样的问题,我发现了一个有用的项目https://github.com/Riverside-Healthcare/djlint

要在vscode中安装它,请执行以下操作(我建议在虚拟环境中安装它):

代码语言:javascript
运行
复制
pip install djlint

一旦这件事完成。我使用扩展run on save并在settings.json中添加了类似的配置

代码语言:javascript
运行
复制
"emeraldwalk.runonsave": {
    "commands": [
        {
            "match": "\\.html$",
            "isAsync": true,
            "cmd": "./path/to/venv/bin/djlint ${file} --reformat --quiet" 
        }
    ]    
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65320298

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档