Parsing 如何在Vim中找到Django模板标记并用块标记替换它们?

Parsing 如何在Vim中找到Django模板标记并用块标记替换它们?,parsing,vim,django-templates,replace,Parsing,Vim,Django Templates,Replace,我需要更改几个Django模板的实例 像这样: {% block content %}{{ mycontents }}{% endblock content %} 为此: {% templatetag openblock %} block content {% templatetag closeblock %}{% templatetag openvariable %} mycontents {% templatetag closevariable %}{% templatetag openb

我需要更改几个Django模板的实例 像这样:

{% block content %}{{ mycontents }}{% endblock content %}
为此:

{% templatetag openblock %} block content {% templatetag closeblock %}{% templatetag openvariable %} mycontents {% templatetag closevariable %}{% templatetag openblock %} endblock content {% templatetag closeblock %}

如何构造查找和替换命令来执行此操作?我通常使用Vim来实现这类功能,但我也愿意使用其他替代方法。

可以使用以下两个替换命令进行转换 块和变量内容分别为:

:%s/{%\(.\{-}\)%}/{% openblock %}\1{% closeblock %}/g
:%s/{{\(.\{-}\)}}/{% openvariable %}\1{% closevariable %}/g

可以使用以下两个替换命令进行转换 块和变量内容分别为:

:%s/{%\(.\{-}\)%}/{% openblock %}\1{% closeblock %}/g
:%s/{{\(.\{-}\)}}/{% openvariable %}\1{% closevariable %}/g

我个人会用宏来做。只有当“mycontent”都在一行时,这才有效

使用以下命令保存宏:

:让@q='/{%block
wcwtemplatetagw“aciwopenblockf}a块{%templatetag closeblock%}{%templatetag openvariable%}l2dlf}C{%templatetag closevariable%}{%templatetag openblock%}结束块a{%templatetag closeblock%}

@q
使用


编辑Ookookk我应该猜到从vim粘贴特殊字符不会起作用

我个人会用一个宏来完成。这只会在“mycontent”都在一行的情况下起作用

使用以下命令保存宏:

:让@q='/{%block
wcwtemplatetagw“aciwopenblockf}a块{%templatetag closeblock%}{%templatetag openvariable%}l2dlf}C{%templatetag closevariable%}{%templatetag openblock%}结束块a{%templatetag closeblock%}

@q
使用


编辑ookk我应该猜到从vim粘贴特殊字符不会起作用

更新模板标记占位符,您将得到完整的答案:-)更新模板标记占位符,您将得到完整的答案:-)