VIM:不要在HTML链接中强调前导空格

dot*_*hen 8 vim

可能重复:
为什么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>
Run Code Online (Sandbox Code Playgroud)

有没有办法告诉语法高亮显示器忽略HTML链接中的行前导空格?

Ing*_*kat 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
Run Code Online (Sandbox Code Playgroud)

以下内容:

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*$"
Run Code Online (Sandbox Code Playgroud)

再往下,改变

HtmlHiLink htmlLink                    Underlined
Run Code Online (Sandbox Code Playgroud)

HtmlHiLink htmlLinkText                Underlined
Run Code Online (Sandbox Code Playgroud)

瞧!基本上,这引入了另一个包含的语法组htmlLinkText,它与前导空格和尾随空格不匹配,并将突出显示应用于此.


kev*_*kev 7

你可以这样做:

:hi link htmlLink NONE
Run Code Online (Sandbox Code Playgroud)