Автоматические закрывающие скобы для 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
, Они начинаются с той же строки, но если вы нажмете, введите их правильно.