【问题标题】:VIM: Don't underline leading whitespace in HTML links [duplicate]VIM:不要在 HTML 链接中为前导空格加下划线 [重复]
【发布时间】:2012-04-26 09:32:49
【问题描述】:

可能重复:
Why is vim drawing underlines on the place of tabs and how to avoid this?

在 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 链接中的行前空白?

【问题讨论】:

    标签: vim


    【解决方案1】:

    我设法通过修改$VIMRUNTIME/syntax/html.vim 来实现这一点。复制到~/.vim/syntax/html.vim.vim 在 Windows 上被命名为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
    

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

    【讨论】:

    • 谢谢。出于某种原因,现在没有突出显示任何链接,但突出显示了 H2 和 P 标签!我仔细检查了更改,我似乎找不到它们。编辑大约在第 150 行和第 253 行 if you would like to take a look。谢谢英戈!
    • 您的编辑很好,您的文件适合我。你有任何其他定义吗,可能在 ~/.vim/after/syntax/ 文件中?
    • 不,没有其他文件或定义,我什至尝试使用空白 ~/.vimrc (所以没有其他系统范围的 .vimrc 会妨碍)。这是在 Cygwin 终端中,通过 SSH 连接到 CentOS 5.x 机器,VIM 7.0。
    • @dotancohen:我想我现在已经理解了你所说的“H2 和 P 标签现在突出显示”。这可以通过在 htmlLink 定义中添加“keeppend”来解决;我已经更新了我的答案。
    • Ingo,谢谢,这就是诀窍!这将减少对我来说真正的眼睛,谢谢。我查看了您的网站,我想您可能想知道 Hannah 在希伯来语中也意味着“美丽”。
    【解决方案2】:

    你可以这样做:

    :hi link htmlLink NONE
    

    【讨论】:

    • 谢谢,但这会禁用所有链接突出显示,我碰巧觉得这很有用。我希望仅在行前空白处禁用突出显示。
    猜你喜欢
    • 1970-01-01
    • 2015-06-14
    • 1970-01-01
    • 2015-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-09
    • 1970-01-01
    相关资源
    最近更新 更多