好吧,我原来只想换了vim以后,开始学习HTML5的,但是配置vim插件的时候,遇到一些问题。找了好几个类似closetag的插件,要不然就是不是很好用,要不然就是和其他插件有那么点小冲突。最后还是决定自己增强一下。
选的closetag插件是http://www.vim.org/scripts/script.php?script_id=13 ,它默认支持的close行为是按ctrl+_,而且闭合后光标在行末,而不是标签之间。
我想增加的功能有2个,一个是在输入<tag></ 后自动关闭标签,另一个是关闭标签后光标返回到<tag>#cursor# </tag>标签中间,然后可以继续写代码。功能很简单,但是由于第一次写vim脚本,内置函数和代码格式都不是最清楚,稍微花了点时间。
在closetag.vim最后加上如下代码即可。
""""""""""""""" add by kenshin """"""""""""""""
"to store cursor Position
let s:cursorPos = 0
"support </ close tag
function! EasyCloseTag()
let line = getline(".")
let length = strlen(line)
let lastChar = strpart(line,length - 1)
if lastChar == "<"
let tag = GetLastOpenTag("b:unaryTagsStack")
if tag == ""
return ""
else
let s:cursorPos = col(".") - 1
return "/".tag.">"
endif
else
return "/"
endfunction
"set cursor to <tag>#cursor#</tag>
function! SetCursor()
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>=EasyCloseTag()<CR><C-R>=SetCursor()<CR>