Vim osx html 亮点

Vim osx html highlights

当我尝试编辑 html 文件时,出现奇怪的白色突出显示行。

https://i.gyazo.com/105987df80e63785f1f2361bc052961b.png

我在初始化后使用 vim 没有 vimrc 和 运行 “syntax on”。

终端:iTerm2(默认终端情况相同)

vim 版本:8.2.1650

改变 colorscheme on air 修复了这种情况,但这不是解决方案。

代码示例:

<template>
  <div class="app-container">
    <el-row>
      <el-col :span="12">
        <el-card>
          <div
            slot="header"
            class="clearfix"
          >
            <span> {{ $t('suppliers.h1') }} </span>
          </div>
          <el-table
            :data="suppliers"
            border
            fit
          >
            <el-table-column
              :label="$t('table.nameColumn')"
              prop="name"
              align="center"
              width="150"
            >
              <template slot-scope="{row}">
                <span>{{ row.name }}</span>
              </template>
            </el-table-column>
            <el-table-column
              :label="$t('table.syncColumn')"
              prop="name"
              align="center"
            >
              <template slot-scope="{row}">
                <span> <i :class="row.sync ? 'el-icon-check' : 'el-icon-close'" /> </span>
              </template>
            </el-table-column>
            <el-table-column
              :label="$t('table.daysLimitColumn')"
              prop="name"
              align="center"
            >
              <template slot-scope="{row}">
                <span> {{ row.daysLimit }} </span>
              </template>
            </el-table-column>
            <el-table-column
              prop="name"
              align="center"
            >
              <template>
                <span> <i class="el-icon-delete" /></span>
              </template>
            </el-table-column>
          </el-table>
          <br>
          <el-form>
            <el-button type="success">
              {{ $t('suppliers.addButton') }}
            </el-button>
          </el-form>
        </el-card>
      </el-col>
    </el-row>
  </div>
</template>

您在这里看到的是 Vim 以 斜体 显示缓冲区的那些部分。它认为文本是斜体的,因为它看到了一个 <i> 标签,但它从来没有看到相应的 </i> 标签。你实际上在那里写了一个 <i .../> 标签,但是 Vim 的 HTML 语法突出显示不准备处理它。 (而且我认为它真的不应该,因为没有内容的 <i> 标签真的不存在。)

为了能够看到语法引擎在做什么,我的建议是安装并启用 vim-scriptease plug-in,它定义了一个 zS 映射来显示语法当前光标位置涉及的组。如果您在任何以白色显示的空白处使用它,您会看到它将 htmlItalic 显示为唯一的活动组。

然后您可以通过以下方式查找 htmlItalic 的突出显示:

:hi htmlItalic
htmlItalic     xxx term=italic cterm=italic
                   gui=italic

您会看到 xxx 的样式为反向视频,背景为白色。这里发生的是终端(或终端中的应用程序 运行)通常需要额外的配置来启用对斜体的支持。如果没有正确启用和配置该支持(它通常不是开箱即用的),它们通常会回退到反转视频,这就是您所看到的。

你会注意到问题是在 <i .../> 标记之后开始的,所以我想你已经怀疑了这一点......如果你查看匹配 htmlItalic 的语法规则,你会看到:

:syn list htmlItalic
--- Syntax items ---
htmlItalic     xxx start=/<i\>/ end=+</i\_s*>+me=s-1  contains=@htmlTop,htmlItalicBold,htmlItalicUnderline 
                   start=/<em\>/ end=+</em\_s*>+me=s-1  contains=@htmlTop 

您会看到它与一对 <i> 标签或 <em> 标签匹配。但它总是寻找对,这是明智的。

你所拥有的将匹配这种语法组的“开始”,而不是“结束”:

<i :class="row.sync ? 'el-icon-check' : 'el-icon-close'" />

我想说这里真正的问题是这不是HTML!假装是这样意味着您要求 Vim 尝试错误地解释标签,这就是为什么您最终会在反向视频中得到部分缓冲区...

我的建议是您告诉 Vim 使用更合适的格式(或者至少使用一种为标签嵌入较少语义的格式),这样它就不会尝试解释您没有解释的内容' t 意味着你的标签。在我看来 XML 至少更接近一点,标签的语义更少或没有。

您可以要求 Vim 使用以下命令在此文件上使用 XML 语法高亮显示:

:set ft=xml

这将消除工件。

为了让 Vim 始终将此文件检测为 XML,最好的方法是实际使用 .xml 扩展名,假设这是可能的。如果不是,还有其他方法可以配置该配置,但您的问题没有足够的关于文件名或内容的其他特征的详细信息,因此我无法就如何在此处完成该操作提出建议。 .如果你接下来需要解决那个问题,请单独提问作为跟进。