如何在Vim中快速关闭HTML标签?

时间:2020-03-06 14:41:50  来源:igfitidea点击:

自从我不得不在Vim中做任何类似HTML的代码以来已经有一段时间了,但是最近我又遇到了这个问题。假设我正在写一些简单的" HTML":

<html><head><title>This is a title</title></head></html>

如何快速写下标题,标题和html的结束标记?我觉得我在这里错过了一种非常简单的方法,没有让我一步一步地将它们全部写下来。

当然,我可以使用CtrlP来自动完成各个标签的名称,但是让我在笔记本电脑键盘上使用的实际上是正确使用了括号和斜杠。

解决方案

看一下这个..

closetag.vim

Functions and mappings to close open HTML/XML tags

https://www.vim.org/scripts/script.php?script_id=13

我用类似的东西。

我发现使用xmledit插件非常有用。它增加了两个功能:

  • 当我们打开标签时(例如键入&lt;p>),只要在" <p> </ p>"中键入结束的">",标签就会展开标签,并将光标置于标签内的插入模式。
  • 然后,如果我们立即输入另一个>(例如,键入<p >>),则会将其扩展为&lt;p>

并在插入模式下将光标放在标签内,缩进一次。

xml vim插件为这些功能添加了代码折叠和嵌套标记匹配。

当然,如果我们在Markdown中编写HTML内容并使用%!通过我们选择的Markdown处理器过滤Vim缓冲区,则完全不必担心关闭标签:)

我发现让vim为我写打开标签和关闭标签,而不只是关闭标签更方便。我们可以使用Tim Pope出色的ragtag插件。用法如下所示(让|标记光标位置)
我们输入:

span|

CTRL+xSPACE`

你得到

<span>|</span>

我们还可以使用CTRL + x ENTER代替CTRL + x SPACE来获得

<span>
|
</span>

Ragtag可以做的不止是它(例如,在此%>或者DOCTYPE中插入<%=内容)。我们可能想按ragtag的作者查看其他插件,尤其是round。

我喜欢极少的东西

imap ,/ </<C-X><C-O>

allml(现为Ragtag)和Omni-completion(<C-X> <C-O>)
在.py或者.java之类的文件中不起作用。

如果我们想在这些文件中自动关闭标签,
我们可以这样映射。

imap <C-j> <ESC>F<lyt>$a</^R">

(^ R是Contrl + R:我们可以像这样输入Control + v,然后输入Control + r)

(|是光标位置)
现在,如果我们键入..

<p> abcde |

然后输入^ j

然后它像这样关闭标签。

<p> abcde </ p> |

如果我们正在做任何细致的工作,那么火花非常好。

他们网站上的一个例子:

ul> li.item-$ * 3扩展为:

<ul>
    <li class="item-1"></li>
    <li class="item-2"></li>
    <li class="item-3"></li>
</ul>

&lt;C-e>

做问题中给出的例子,

html > head > title{This is a title}

产量

<html>
  <head>
    <title>This is a title</title>
  </head>
</html>