代码之家  ›  专栏  ›  技术社区  ›  chris

如何让vim的closetag插件适用于所有HTML标记?

  •  4
  • chris  · 技术社区  · 17 年前

    我正在使用closetag.vim插件,但它似乎不适用于所有标签。在插件代码中,有一个被忽略的标记var,其中包含一些我注意到没有关闭ex-dd-dl的标记,但还有许多其他标记不在列表中,它们不起作用(p、ul、li)。

    更新被忽略标记的列表后,似乎什么都没有发生。

    要使这个插件工作,只需输入标签文本并单击标签,对吗?IE DIV

    我错过什么了吗?

    3 回复  |  直到 15 年前
        1
  •  3
  •   nelstrom    17 年前

    你是如何安装这个插件的?

    我安装closetag.vim时遇到了麻烦 ~/.vim/plugins . 然后我把它移到 ~/.vim/scripts 而是将以下内容添加到我的 .vimrc :

    :let g:closetag_html_style=1
    :source ~/.vim/scripts/closetag.vim
    

    现在对我来说很好。我发现它会关闭所有标签(包括“忽略”列表中的标签),但不会关闭自动关闭的标签(例如 <img/> )

    在我使用的脚本版本(0.9.1)中,它定义 <C-_> 作为完成标记的触发器。如果已将命令映射到 <tab> 那也应该管用。

        2
  •  1
  •   rg88    16 年前

    我也不能让这个插件工作,但是在我的例子中,它会在最终工作之前抛出许多错误消息。例如,如果我试图关闭一个h1标记,我会得到错误 Error Detected while processing function GetCloseTag 错误是 undefined variable b:UnaryTagsStack .

    似乎它是一个有用的插件,但它只是不合作。

        3
  •  1
  •   JoshMock    15 年前

    我也有同样的问题,纳尔斯特罗姆的回答并没有帮我解决。对我有用的是在我的.vimrc中添加以下行:

    if !exists("b:unaryTagsStack") || exists("b:closetag_html_style")
        if &filetype == "html" || exists("b:closetag_html_style")
            let b:unaryTagsStacktack="area base br dd dt hr img input link meta param"
        else " for xml and xsl
            let b:unaryTagsStack=""
        endif
    endif
    
    if !exists("b:unaryTagsStack")
        let b:unaryTagsStack=""
    endif
    

    我不知道为什么要加 let b:unaryTagsStack="" 不是这样的,但是上面的组合似乎可以在所有文件类型中修复它。