增強closetag自動閉合功能

好吧,我原來只想換了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>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章