gVim的html标签自动闭合插件
用惯了dreamweaver,话说它的标签自动闭合功能还是很不错的。转而学习gVim之后,为它的强大功能与灵活的订制性所震撼。自然也想到了将dw的标签闭合功能引用过来.
网上资料并不多,在iteye上搜到了一篇文章(kenshin54.iteye.com/blog/858156)。下载来之后,果然好用。
然而很快发现了一点不方便之处,因我之前已引用了几个括号闭合的功能,使用这个标签闭合插件后,并没有出来效果。原因是后面多了个自动闭合的括号,那标签里的匹配便不灵了。
于是研究了下代码,虽然很少的代码,但对于我这个还不熟悉vim语法和函数的人,却需要花些功夫去理解。于是照原作者的代码,自己改动了下,既能兼容括号闭合,也不会因标签所在行后面有内容而略过自动闭合.
"to store cursor Position let s:cursorPos = 0 "support <!-- close tag function! EasyCloseTags() let nchr = getline('.')[col('.') - 1] let pchr = getline('.')[col('.') - 2] if pchr == "<" let tag = GetLastOpenTag("b:unaryTagsStack") if tag == "" return "/" else let s:cursorPos=col('.')-1 if nchr == "-->" return "/".tag else return "/".tag.">" endif endif else return "/" endif endfunction "set cursor to <tag>#cursor#</tag> function! SetCursors() if s:cursorPos != 0 let lineNum = line(".") call cursor(lineNum, s:cursorPos) let s:cursorPos = 0 endif return "" endfunction "set up key '/' to trigger closeTag and setCursor function :inoremap / <c-r>=EasyCloseTags()<cr><c-r>=SetCursors()<cr></cr></c-r></cr></c-r>
有需要的朋友可以拿去了,不过,不敢保证没有问题,vim学习中...