Django 模板的 Vim 内部标签块
Posted
技术标签:
【中文标题】Django 模板的 Vim 内部标签块【英文标题】:Vim inner tag blocks for Django templates 【发布时间】:2012-05-16 00:40:20 【问题描述】:是否存在为 Django 模板提供这些文本对象的插件?例如,在 html/XML 中,如果我有以下文本
<p>This is some text.<p>
我的光标位于标签内的任何位置,我可以使用cit
来更改标签内的文本。我正在为 Django 模板寻找类似的东西。例如,与文本
% block title %This is the title% endblock %
我想要同样的行为。如果什么都不存在,任何 vimscripters 都知道这是否可能并愿意提供一些提示?
谢谢!
【问题讨论】:
@RandyMorris 感谢您的链接 @RandyMorris 清理旧问题。您可以将其发布为答案吗?这是我最接近解决方案的方法。 完成,感谢您重温旧问题。我们需要更多像你这样的人。 【参考方案1】:django-template-textobjects 插件 (https://github.com/mjbrownie/django-template-textobjects) 允许您实现这一点。它添加了一系列文本对象(例如 db 用于 Django 块,df 用于 Django 循环等)。
例如,cidb 将允许您更改以下内容:
% block stylesheets %My stylesheets here% endblock %
该插件依赖于另一个插件 vim-textobj-user (https://github.com/kana/vim-textobj-user),所以记得先安装它。
【讨论】:
【参考方案2】:您可能必须为此编写自己的文本对象。请参阅 textobj-rubyblock 和 vim-indent-object 了解如何完成此操作的示例。
【讨论】:
谢谢兰迪!还没来得及做这个,但如果我这样做了,我会在这里发帖。【参考方案3】:查看官方 Django 文档。 有一个“在 Django 中使用 Vim”部分。
https://code.djangoproject.com/wiki/UsingVimWithDjango
和一个环绕映射部分。
这是摘录:
let b:surround_char2nr("v") = " \r "
let b:surround_char2nr("") = " \r "
let b:surround_char2nr("%") = "% \r %"
let b:surround_char2nr("b") = "% block \1block name: \1 %\r% endblock \1\1 %"
let b:surround_char2nr("i") = "% if \1condition: \1 %\r% endif %"
let b:surround_char2nr("w") = "% with \1with: \1 %\r% endwith %"
let b:surround_char2nr("f") = "% for \1for loop: \1 %\r% endfor %"
let b:surround_char2nr("c") = "% comment %\r% endcomment %"
将以上内容放入~/.vim/ftplugin/htmldjango.vim。
视觉模式下的示例(先选择一些文本):
为变量键入 Sv 或 S 输入 Sb 表示一个块 为 if 语句键入 Si 为 with 语句键入 Sw 输入 Sc 发表评论 为 for 语句键入 Sf 为其他模板标签键入 S%PS : 另一种可能性是使用支持 Django 项目和模板编辑的 eclim (vim + eclipse) http://eclim.org/vim/python/django.html 但这要重得多。
【讨论】:
是的。我以前见过这个,但这就是我要问的。不过还是不错的。谢谢:)以上是关于Django 模板的 Vim 内部标签块的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Django 模板中的“带有模板标签”中设置 Django 渲染块值?
使用 django-pygmentify 突出显示 Django 模板引擎中的内部代码块
是否可以使用 django 的自定义模板标签在模板的其他块中插入代码?