Last active
March 15, 2023 04:44
-
-
Save hexiyou/fef4060308a7f7ad3f04d10c9f392e5f to your computer and use it in GitHub Desktop.
Vimrc配置:引号、括号自动补全
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
VIm.mp4