将下面内容加入.vimrc文件中即可
inoremap ( ()iinoremap [ [] iinoremap { { } Oautocmd Syntax html,vim inoremap < > i| inoremap > =ClosePair('>') inoremap ) =ClosePair(')') inoremap ] =ClosePair(']') inoremap } =CloseBracket() inoremap " =QuoteDelim('"') inoremap ' =QuoteDelim("'") function ClosePair(char) if getline('.')[col('.') - 1] == a:char return "\ " else return a:char endifendffunction CloseBracket() if match(getline(line('.') + 1), '\s*}') < 0 return "\ }" else return "\ j0f}a" endifendffunction 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 "\ " else "Starting a string return a:char.a:char."\ i" endifendf
其他相关:
autocomplete.match.pair.vim
inoremap (=OpenPair('(') inoremap ) =ClosePair(')') inoremap { =OpenPair('{') inoremap } =ClosePair('}') inoremap [ =OpenPair('[') inoremap ] =ClosePair(']') " just for xml document, but need not for now."inoremap < =OpenPair('<') "inoremap > =ClosePair('>') function! OpenPair(char) let PAIRs = { \ '{' : '}', \ '[' : ']', \ '(' : ')', \ '<' : '>' \} if line('$')>2000 let line = getline('.') let txt = strpart(line, col('.')-1) else let lines = getline(1,line('$')) let line="" for str in lines let line = line . str . "\n" endfor let blines = getline(line('.')-1, line("$")) let txt = strpart(getline("."), col('.')-1) for str in blines let txt = txt . str . "\n" endfor endif let oL = len(split(line, a:char, 1))-1 let cL = len(split(line, PAIRs[a:char], 1))-1 let ol = len(split(txt, a:char, 1))-1 let cl = len(split(txt, PAIRs[a:char], 1))-1 if oL>=cL || (oL =cl) return a:char . PAIRs[a:char] . "\ " else return a:char endifendfunctionfunction! ClosePair(char) if getline('.')[col('.')-1] == a:char return "\ " else return a:char endifendfinoremap ' =CompleteQuote("'") inoremap " =CompleteQuote('"') function! CompleteQuote(quote) let ql = len(split(getline('.'), a:quote, 1))-1 let slen = len(split(strpart(getline("."), 0, col(".")-1), a:quote, 1))-1 let elen = len(split(strpart(getline("."), col(".")-1), a:quote, 1))-1 let isBefreQuote = getline('.')[col('.') - 1] == a:quote if '"'==a:quote && "vim"==&ft && 0==match(strpart(getline('.'), 0, col('.')-1), "^[\t ]*$") " for vim comment. return a:quote elseif "'"==a:quote && 0==match(getline('.')[col('.')-2], "[a-zA-Z0-9]") " for Name's Blog. return a:quote elseif (ql%2)==1 " a:quote length is odd. return a:quote elseif ((slen%2)==1 && (elen%2)==1 && !isBefreQuote) || ((slen%2)==0 && (elen%2)==0) return a:quote . a:quote . "\ " elseif isBefreQuote return "\ " else return a:quote . a:quote . "\ " endifendfunction