【问题标题】:How can I get vim's closetag plugin to work for all html tags?如何让 vim 的 closetag 插件适用于所有 html 标签?
【发布时间】:2011-09-22 02:02:46
【问题描述】:

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

更新忽略标签列表后似乎没有发生任何事情。

要让这个插件工作,你只需输入标签文本并单击选项卡,对吗?即 div

我错过了什么吗?

【问题讨论】:

    标签: vim macvim


    【解决方案1】:

    你是如何安装插件的?

    当我在~/.vim/plugins 中安装 closetag.vim 时遇到了问题。然后我将其移至~/.vim/scripts,并将以下内容添加到我的.vimrc

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

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

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

    【讨论】:

    • 我也放到plugins文件夹里了。如前所述,它适用于一些标签而不是一些非常常见的标签(p、ul、li)。我会试试你提到的。
    • 我得到了和以前一样的东西。我没有正确使用插件吗?我按 Tab 键来完成一个标签。对于我提到的标签,光标仅在 2 个字符上制表符不起作用。
    • 您是否将tab键配置为closetag触发器?正如我之前所说,默认是 (控制+下划线)。如果你按下它会发生什么?
    【解决方案2】:

    我也无法让这个插件工作,但是在我的情况下,它在最终工作之前会抛出一些错误消息。例如,如果我尝试关闭 H1 标签,我会收到错误 Error Detected while processing function GetCloseTag,错误是 undefined variable b:UnaryTagsStack

    看起来这将是一个有用的插件,但它不会合作。

    【讨论】:

    • 我最喜欢的是 Tim Pope 的 allml.vim 插件。它还没有让我失望。
    【解决方案3】:

    我遇到了同样的问题,上面 nelstrom 的回答并没有为我解决。对我有用的是在我的 .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="" 没有解决问题,但上面的组合似乎可以解决我在所有文件类型中的问题。

    【讨论】:

    • 没关系。我的“修复”并不总是有效,但它不是很可预测。 closeTag 似乎偶尔会忘记 b:unaryTagsStack 的值。是时候试试 allml.vim。
    • 万一将来有人遇到这种情况,对我来说这是因为每个缓冲区都设置了“b:unaryTagsStack”变量(因此是“b”前缀)并且我使用了多个缓冲区。解决方法是将上面的代码分解成自己的函数,在GetCloseTag和GetPartialCloseTag中调用即可。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-03
    • 1970-01-01
    • 2022-08-23
    • 1970-01-01
    • 1970-01-01
    • 2011-02-02
    相关资源
    最近更新 更多