终于深入地理解了括号自动补全[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>