5

是否存在为 Django 模板提供这些文本对象的插件?例如,在 HTML/XML 中,如果我有以下文本

<p>This is some text.<p>

我的光标位于标签内的任何位置,我可以cit用来更改标签内的文本。我正在为 Django 模板寻找类似的东西。例如,与文本

{% block title %}This is the title{% endblock %}

我想要同样的行为。如果什么都不存在,任何 vimscripters 都知道这是否可能并愿意提供一些提示?

谢谢!

4

3 回答 3

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:另一种可能性是使用 eclim (vim + eclipse),它支持 Django 项目和模板编辑http://eclim.org/vim/python/django.html但这要重得多。

于 2012-05-07T13:49:24.097 回答
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 ),所以记得先安装它。

于 2015-08-03T08:33:02.737 回答
0

您可能必须为此编写自己的文本对象。有关如何完成此操作的示例,请参见textobj-rubyblockvim-indent-object 。

于 2012-11-25T00:05:33.557 回答