8

可能重复:
为什么 vim 在制表符的位置绘制下划线以及如何避免这种情况?

在 CentOS 5.x 上的 VIM 7.0 中缩进 PHP 代码时,HTML 链接显示为下划线。这非常方便,但在某些地方我在该 HTML 中缩进了 PHP 代码,并且整个缩进都带有下划线:

            <li class="picture">
________________<a href="<?=$linkUrl?>">
____________________<img src="/<?=$img['source']?>" alt="Picture"/>
____________________<? if ($someCondition): ?><span class="info"><?=$img['info']?></span><? endif; ?>
________________</a>
            </li>

有没有办法告诉语法荧光笔忽略 HTML 链接中的行前空白?

4

2 回答 2

10

我设法通过修改来实现这一点$VIMRUNTIME/syntax/html.vim。复制到~/.vim/syntax/html.vim(在 Windows.vim上命名vimfiles),并替换原始语法定义

syn region htmlLink start="<a\>\_[^>]*\<href\>" end="</a>"me=e-4 contains=@Spell,htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,javaScript,@htmlPreproc

具有以下内容:

syn region htmlLink start="<a\>\_[^>]*\<href\>" end="</a>"me=e-4 keepend contains=@Spell,htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,htmlLinkText,javaScript,@htmlPreproc
syn match htmlLinkText contained contains=@Spell,htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,htmlLinkText,javaScript,@htmlPreproc "^\s*\zs.\{-}\ze\s*$"
syn match htmlLinkText contained contains=@Spell,htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,htmlLinkText,javaScript,@htmlPreproc "\S.\{-}\ze\s*$"

再往下,改变

HtmlHiLink htmlLink                    Underlined

HtmlHiLink htmlLinkText                Underlined

瞧!基本上,这引入了另一个包含的语法 group htmlLinkText,它不匹配前导空格和尾随空格,而是将突出显示应用于那个。

于 2012-04-15T20:35:30.063 回答
8

你可以这样做:

:hi link htmlLink NONE
于 2012-04-14T04:00:42.970 回答