2009-09-21 64 views
4

我正在使用closetag.vim插件,但它似乎不适用于所有标签。在插件代码中有被忽略的标签var,其中包含一些我注意到不会关闭ex dd dl的变量,但还有许多其他列表中没有不在列表中的内容(p,ul,li)。如何让vim的closetag插件为所有html标签工作?

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

要让这个插件工作,只需输入标签文本并点击标签,对不对?即格

我错过了什么?

回答

3

你是如何安装插件的?

当我安装在~/.vim/plugins中时,我遇到了closetag.vim问题。然后我把它变成~/.vim/scripts代替,并添加以下到我的.vimrc

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

,现在它为我工作得很好。我发现它关闭了所有标签(包括“忽略”列表中的标签),但不包括那些自动关闭的标签(例如<img/>)。

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

+0

我也把它放在插件文件夹中。如前所述,它可以在一些标签上工作,而不是一些很常见的标签(p,ul,li)。我会尝试你提到的。 – chris 2009-09-22 02:55:05

+0

我得到和以前一样的东西。我没有正确使用插件吗?我点击Tab键完成标签。对于我提到的标签不起作用,光标只是超过2个字符。 – chris 2009-09-22 13:43:26

+0

您是否将tab键配置为closetag触发器?正如我之前所说的,默认值是(控件+下划线)。如果你按下,会发生什么? – nelstrom 2009-09-22 15:27:09

1

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

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

+0

我最喜欢的是Tim Pope的allml.vim插件。它还没有让我失望。 – chris 2009-10-01 22:26:50

+0

allml.vim现在被称为[ragtag](https://github.com/tpope/vim-ragtag) – lkraav 2012-01-05 23:38:16

1

我有同样的问题,上面的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=""没有做的伎俩,但上面的组合似乎解决它在所有的文件类型我。

+0

没关系。我的“修复”并不是一直工作,但它不是很可预测的。 closeTag似乎偶尔忘记了b:unaryTagsStack的价值。有时间尝试allml.vim。 – JoshMock 2011-09-21 22:30:47

+1

如果有人在将来遇到这种情况,对我来说,这是因为'b:unaryTagsStack'变量是为每个缓冲区设置的(因此是'b'前缀),我使用多个缓冲区。解决方案是将上面的代码分解成它自己的函数,并在GetCloseTag和GetPartialCloseTag中调用它。 – jMcK 2015-11-09 20:15:29