Skip to content

Instantly share code, notes, and snippets.

@hexiyou
Last active March 15, 2023 04:44
Show Gist options
  • Save hexiyou/fef4060308a7f7ad3f04d10c9f392e5f to your computer and use it in GitHub Desktop.
Save hexiyou/fef4060308a7f7ad3f04d10c9f392e5f to your computer and use it in GitHub Desktop.
Vimrc配置:引号、括号自动补全
set nocompatible
" 括号自动补全
inoremap ( ()<Esc>i
inoremap [ []<Esc>i
inoremap { {<CR>}<Esc>O
autocmd 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
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
@hexiyou
Copy link
Author

hexiyou commented Mar 15, 2023

VIm.mp4

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment