終於深入地理解了括號自動補全[1]!vim的這一功能是須要手動配置的,在豆瓣上找到了一個比較完美的版本[2],趕忙偷了過來。由於懶,我還添加了引號的補全功能。有了這段代碼,vim的括號補全就和Sublime Text 2同樣同樣的了(其實引號的匹配效果仍是有些差距的)。vim
將如下代碼粘貼到.vimrc文件中:segmentfault
function! AutoPair(open, close) let line = getline('.') if col('.') > strlen(line) || line[col('.') - 1] == ' ' return a:open.a:close."\<ESC>i" else return a:open endif endf function! ClosePair(char) if getline('.')[col('.') - 1] == a:char return "\<Right>" else return a:char endif endf function! SamePair(char) let line = getline('.') if col('.') > strlen(line) || line[col('.') - 1] == ' ' return a:char.a:char."\<ESC>i" elseif line[col('.') - 1] == a:char return "\<Right>" else return a:char endif endf inoremap ( <c-r>=AutoPair('(', ')')<CR> inoremap ) <c-r>=ClosePair(')')<CR> inoremap { <c-r>=AutoPair('{', '}')<CR> inoremap } <c-r>=ClosePair('}')<CR> inoremap [ <c-r>=AutoPair('[', ']')<CR> inoremap ] <c-r>=ClosePair(']')<CR> inoremap " <c-r>=SamePair('"')<CR> inoremap ' <c-r>=SamePair("'")<CR> inoremap ` <c-r>=SamePair('`')<CR>
[1] 爲何編輯器會有「括號補全」這個功能?
[2] vim 括號補全小技巧編輯器