Автоматические закрывающие скобы для Vim

Есть ли какой-нибудь РАБОЧИЙ плагин для Vim 7.4, который бы автоматически закрывал скобки ('{}', '[]', '()') и, возможно, вставлял некоторые возвраты каретки (по крайней мере, для {{} ')?

Я знаю, что этот вопрос задавался довольно много раз, но ни один из ответов либо, похоже, не работает в vim 7.4, либо плагин не был обновлен или что-то в этом роде.

До сих пор я пробовал vim-smartinput, autoclose и delimitmate, и ни одному из них не удалось вставить закрывающие символы, даже если я включил плагины, и в остальном они кажутся активными. Я не знаю, были ли какие-то изменения в vim, которые каким-то образом ломали эти плагины. Похоже, что ни один из этих плагинов не обновляется через год. Любые рабочие решения, которые будут работать с VIM 7.4?

6 ответов

Решение

Я отвечаю на свой собственный вопрос, потому что я выяснил, почему ни один из плагинов, казалось, не работал для меня. Кажется, проблема связана с функцией mksession в vim, я только пробовал эти плагины в сохраненном сеансе и по какой-то причине, по-видимому, препятствует работе плагинов по неизвестной причине. Плагины вроде бы установлены и "работают" нормально (как в командах от плагина найдены и т. Д.). Не открывая сохраненную сессию, по крайней мере, delimitMate начал работать на меня.

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

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

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

Я только что протестировал ClosePairs, AutoClose, DelimitMate и AutoClose в Vim 7.4.131 на Ubuntu, используя Pathogen.

Не удивительно, что все они работают.

Ваш вопрос должен быть перефразирован, так как вы не ищете "плагин автоматического закрытия, работающий в 7.4"… потому что все они делают. Вы должны спросить: "Вот мои настройки, почему ни один из плагинов" автоматического закрытия "не работает для меня?".

На вопрос, на который можно ответить: "Это беспорядок. Начните с комментирования всего до строки 95".

Кроме того, Vim - очень стабильная среда: "не активно работать" не означает "не стоит пытаться". Наоборот, на самом деле.

Голосование за delimitMate до того, как сердитые моды закроют вопрос о том, чтобы быть основанным на мнении.

Добавление нового кандидата: есть плагин под названием лексима. Он был представлен в октябре 2014 года, поэтому он довольно новый. По словам автора, он отличается высокой настраиваемостью и точечной повторяемостью. Также можно настроить автоматическое закрытие def - end пары как в рубине.

Вот презентация автора в VimConf, проведенная в Японии, в которой сравниваются различные способы достижения функций автоматического закрытия.

xptemplate - это плагин сниппетов, который включает опцию для автозаполнения скобок / фигурных скобок / и т.д. Установите его и установите

let g:xptemplate_brace_complete = '([{'

в вашем .vimrc, Они начинаются с той же строки, но если вы нажмете, введите их правильно.

Другие вопросы по тегам