vim括號引號html標籤自動補全
阿新 • • 發佈:2019-01-28
(我現在已經不用下面方法了,可使用 xptemplate 外掛 http://blog.csdn.net/zcube/article/details/42525973)
問題:怎樣在vim中實現花括號引號自動補全,包括html標籤? 解決辦法:只要把下面兩段程式碼貼上到~/.vimrc中,就可以實現括號超強補全 <!--括號引號補全程式碼{{{--> " 括號引號補全 inoremap ( ()<Esc>i inoremap [ []<Esc>i inoremap { {<CR>}<Esc>O inoremap ) <c-r>=ClosePair(')')<CR> inoremap ] <c-r>=ClosePair(']')<CR> inoremap } <c-r>=CloseBracket()<CR> inoremap " <c-r>=QuoteDelim('"')<CR> inoremap ' <c-r>=QuoteDelim("'")<CR> function ClosePair(char) if getline('.')[col('.') - 1] == a:char return "\<Right>" else return a:char endif endf function CloseBracket() if match(getline(line('.') + 1), '\s*}') < 0 return "\<CR>}" else return "\<Esc>j0f}a" endif endf function QuoteDelim(char) let line = getline('.') let col = col('.') if line[col - 2] == "\\" "Inserting a quoted quotation mark into the string return a:char elseif line[col - 1] == a:char "Escaping out of the string return "\<Right>" else "Starting a string return a:char.a:char."\<Esc>i" endif endf <!--}}}--> <!--html標籤自動補全{{{--> " html自動補全 autocmd BufNewFile * setlocal filetype=html function! InsertHtmlTag() let pat = '\c<\w\+\s*\(\s\+\w\+\s*=\s*[''#$;,()."a-z0-9]\+\)*\s*>' normal! a> let save_cursor = getpos('.') let result = matchstr(getline(save_cursor[1]), pat) "if (search(pat, 'b', save_cursor[1]) && searchpair('<','','>','bn',0, getline('.')) > 0) if (search(pat, 'b', save_cursor[1])) normal! lyiwf> normal! a</ normal! p normal! a> endif :call cursor(save_cursor[1], save_cursor[2], save_cursor[3]) endfunction inoremap > <ESC>:call InsertHtmlTag()<CR>a<CR><Esc>O <!--}}}--> 之所以這裡的括號補全程式碼中的函式實現反匹配 當打入(輸入內容),再按)系統會自動檢查前面是否已經有匹配的括號 如果有就不再鍵入),而是直接跳出 或許你得加: set autoindent set cindent 參考: http://www.cnblogs.com/huanlei/archive/2012/04/02/2430153.html http://blog.sina.com.cn/s/blog_01ea59580101hvth.html