vim gg=G html 和 jinja2

标签 vim jinja2

我使用 gg=G 在 vi​​m 中重新缩进我的文件。我有 jinja2 模板,其中包含 jinja2 表达式和 html。 filetype 设置为 jinja。当我使用 gg=G 时,html 会正确重新缩进,但 jinja 表达式不会。

实际:

{% for elem in list %}
{% if elem.foo %}
<div>
    <p>foo</p>
</div>
{% else %}
<div>
    <p>bar</p>
</div>
{% endif %}
{% endfor %}

预期:

{% for elem in list %}
    {% if elem.foo %}
        <div>
            <p>foo</p>
        </div>
    {% else %}
        <div>
            <p>bar</p>
        </div>
    {% endif %}
{% endfor %}

如何改变这种行为?

亲切的问候!

最佳答案

Jinja 插件的缩进脚本只是委托(delegate)给默认 html 的缩进方法。文件类型,请参阅here .

不幸的是,尽管indent/html.vim可以使用自定义 HTML 标签进行扩展,标签语法 ​​<...>是硬编码的,因此您不能只配置 {% ... %} Jinja 的语法。如果你没有找到 Jinja 的特殊缩进插件,你必须编写一个/扩展 indent/html.vim一个你自己。

关于vim gg=G html 和 jinja2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16255109/

相关文章:

sorting - 为什么 Vim 的排序函数默认区分大小写?

ruby - 当我将 ruby​​ 更新到 2.0.0-p0 时,我的 vim 无法工作

functional-programming - Vim脚本中的 "reduce"函数

regex - 使用 VI 编辑器时我的 REGEX 有什么问题?

google-app-engine - 为什么我的 Jinja 回溯毫无意义?

vim - 空行可以在 Vim 中显示为其他内容吗?

ansible - Ansible 中按自然字母数字顺序对列表进行排序

css - 如何将 css 添加到 flask 应用程序中的 remember_me?

jinja2 - ansible jinja2 连接 IP 地址

php - Jinja2 与 Smarty