Enable auto-completion of brackets and quotation marks in VIM

Source: Internet
Author: User
Add the following content to the. vimrc file.
inoremap ( ()<Esc>iinoremap [ []<Esc>iinoremap { {<CR>}<Esc>Oautocmd Syntax html,vim inoremap < <lt>><Esc>i| inoremap > <c-r>=ClosePair('>')<CR>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 endifendffunction CloseBracket() if match(getline(line('.') + 1), '\s*}') < 0 return "\<CR>}" else return "\<Esc>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 "\<Right>" else "Starting a string return a:char.a:char."\<Esc>i" endifendf

  

 

 

Others:

AutoComplete. Match. pair. Vim

inoremap ( <c-r>=OpenPair('(')<CR>inoremap ) <c-r>=ClosePair(')')<CR>inoremap { <c-r>=OpenPair('{')<CR>inoremap } <c-r>=ClosePair('}')<CR>inoremap [ <c-r>=OpenPair('[')<CR>inoremap ] <c-r>=ClosePair(']')<CR>" just for xml document, but need not for now."inoremap < <c-r>=OpenPair('<')<CR>"inoremap > <c-r>=ClosePair('>')<CR>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 && ol>=cl)        return a:char . PAIRs[a:char] . "\<Left>"    else        return a:char    endifendfunctionfunction! ClosePair(char)    if getline('.')[col('.')-1] == a:char        return "\<Right>"    else        return a:char    endifendfinoremap ' <c-r>=CompleteQuote("'")<CR>inoremap " <c-r>=CompleteQuote('"')<CR>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 . "\<Left>"    elseif isBefreQuote        return "\<Right>"    else        return a:quote . a:quote . "\<Left>"    endifendfunction

  

 

 

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.