繁体   English   中英

VIM 缩进:HTML 评论与<openedtag>内部评论</openedtag>

[英]VIM indentation: HTML comment with <openedTag> inside comment

Vim 在找到结束的 HTML 标签对时立即缩进 HTML 块,即使它评论中。

我怎样才能根据需要缩进?

 <:-- Right indentation: --> <div class="x"> <!-- div --> <h1>Title</h1> </div> <!-- Wrong indentation: --> <div class="x"> <!-- <div> --> <h1>Title</h1> </div>

顺便说一句,工具化这些改变什么都没有

:set smartindent!
:set cindent!

也许以下链接为比我更聪明的人提供了线索: Vim Wrong Indent When There Is Dash - in Html Tag

你可以尝试类似的东西

:inoremap ,, <c-o><<<c-o>O

然后在结束标记(例如 </div> 之后)之后键入,,以通过向后缩进 1 级来“修复”错误的缩进。

您还可以 map 在插入模式下使用其他一些组合键,而不是 2 个逗号。

这仅在插入模式下有帮助,但如果您为 ex 重新格式化整个缓冲区则无济于事。 通过'='。

来自 Steve Oualline 的Vi iMproved (VIM)它解释了如何不限制行中引号"的语法,并且只关注行引号的开始/结束。

[...] 一个区域开始(双引号)和一个区域结束(双引号)。定义如下:

:syntax region xString start=/”/ end=/”/

开始和结束指令定义了用于定义区域开始和结束的模式。 但是看起来像这样的字符串呢?

“其中包含双引号 (\”) 的字符串”

这就产生了一个问题:字符串中间的双引号会结束字符串。你需要告诉 Vim 跳过字符串中任何转义的双引号。你可以使用 skip 关键字来做到这一点:

:syntax region xString start=/”/ skip=/\\”/ end=/”/

也许这些语法规则与缩进有关。

也许答案是通过应用<div> </div>来解决的,就像 Qualline 先生对" "所做的那样。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM