【问题标题】:Vim inner tag blocks for Django templatesDjango 模板的 Vim 内部标签块
【发布时间】: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 清理旧问题。您可以将其发布为答案吗?这是我最接近解决方案的方法。
  • 完成,感谢您重温旧问题。我们需要更多像你这样的人。

标签: django templates vim django-templates


【解决方案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-rubyblockvim-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。

    视觉模式下的示例(先选择一些文本):

    • 为变量键入 SvS{
    • 输入 Sb 表示一个块
    • 为 if 语句键入 Si
    • 为 with 语句键入 Sw
    • 输入 Sc 发表评论
    • 为 for 语句键入 Sf
    • 为其他模板标签键入 S%

    PS : 另一种可能性是使用支持 Django 项目和模板编辑的 eclim (vim + eclipse) http://eclim.org/vim/python/django.html 但这要重得多。

    【讨论】:

    • 是的。我以前见过这个,但这就是我要问的。不过还是不错的。谢谢:)
    猜你喜欢
    • 2011-02-09
    • 2018-10-21
    • 2014-07-25
    • 2014-04-03
    • 1970-01-01
    • 2011-07-21
    • 2018-11-25
    • 1970-01-01
    • 2011-10-07
    相关资源
    最近更新 更多