Vim плагин для "авто-закрытых" скобок?

Я искал рядом и далеко, и не нашел плагин, который может просто автоматически закрыть набор скобок, как TextMate. Например:

Vim     : (*manually close parens* → )
Textmate: (*Auto closes parens*)

Если вы можете описать плагин для этого, я буду очень полезен. Спасибо!

5 ответов

Решение

Попробуйте delimitMate:

https://github.com/Raimondi/delimitMate

Здесь также перечислены некоторые плагины. Плюс инструкции по его настройке:

http://vim.wikia.com/wiki/Automatically_append_closing_characters

Для тех из нас, кто хочет идти по равнине vim путь:

ino " ""<left>
ino ' ''<left>
ino ( ()<left>
ino [ []<left>
ino { {}<left>
ino {<CR> {<CR>}<ESC>O

Это автозаполнение в insert Режим. Хранить в vimrc чтобы не вводить его каждый раз и когда нам не нужно отображение, нам нужно экранировать его с помощью ctrl - v, прежде чем вводить сопоставленный символ ( { и т.п.

Я использую AutoPairs. Вы можете получить его здесь:

https://github.com/jiangmiao/auto-pairs.git

Если вы читаете документы, у вас есть много вариантов, которые охватывают большинство случаев.

Я поддерживаю плагин, который упрощает вставку сбалансированных символов, подобных скобкам, и который даже поддерживает окружение слов / строк / выделения.

https://github.com/LucHermitte/lh-brackets/

Привязки по умолчанию для C & C++ описаны на странице lh-cpp.

Делайте это исключительно в vim без плагинов и симулируя все существующие IDE.

      " # Close brackets automatically, with return
inoremap {<cr> {<cr>}<C-O><S-O>
inoremap (<cr> (<cr>)<c-o><s-o>
inoremap [<cr> [<cr>]<c-o><s-o>
" # Close brackets without return
inoremap ( ()<left>
inoremap { {}<left>
inoremap [ []<left>
" # Two cases below are covered by inoremap <exp>
" inoremap " ""<left>
" inoremap ' ''<left>
" # If you close a bracket that is already closed, it overwrites
inoremap <expr> ) strpart(getline('.'), col('.')-1, 1) == ")" ? "\<Right>" : ")"
inoremap <expr> } strpart(getline('.'), col('.')-1, 1) == "}" ? "\<Right>" : "}"
inoremap <expr> ] strpart(getline('.'), col('.')-1, 1) == "]" ? "\<Right>" : "]"
inoremap <expr> ' strpart(getline('.'), col('.')-1, 1) == "'" ? "\<Right>" : "''<left>"
inoremap <expr> " strpart(getline('.'), col('.')-1, 1) == "\"" ? "\<Right>" : "\"\"<left>"
" # enclose a word in normal mode with "'({[
nnoremap ' mmbi'<esc>ea'<esc>`m<right>
nnoremap " mmbi"<esc>ea"<esc>`m<right>
nnoremap ( mmbi(<esc>ea)<esc>`m<right>
nnoremap { mmbi{<esc>ea}<esc>`m<right>
nnoremap [ mmbi[<esc>ea]<esc>`m<right>
" # enclose a selection in visual mode with "'({[
vnoremap ' <Esc>`<i'<Esc>`>a<right>'<Esc>
vnoremap " <Esc>`<i"<Esc>`>a<right>"<Esc>
vnoremap ( <Esc>`<i(<Esc>`>a<right>)<Esc>
vnoremap { <Esc>`<i{<Esc>`>a<right>}<Esc>
vnoremap [ <Esc>`<i[<Esc>`>a<right>]<Esc>
Другие вопросы по тегам