Как заставить Vim автоматически ставить конечные скобки?

при редактировании .scm файлы было бы здорово, если бы Vim автоматически поставил конечную скобку ) Как только я начинаю (. Как мне это сделать?

11 ответов


вы можете отобразить открывающую скобку по своему вкусу:

:imap ( ()<left>

попробуйте использовать Автозакрытия плагин.


самый простой ответ-включить карту. Например.:

:inoremap ( ()<left>

проблема в том, что вам нужно будет добавить одну запись для каждого символа, который вы хотите автоматически закрыть ('{','[','"',etc). Кроме того, Плагины обычно более умны, обеспечивая такие вещи, как обнаружение "закрывающего" символа и не повторяя его.

проблема с решением выше и большинство плагины, это то, что они, как правило, нарушают последовательность отмены (gundoбыл кого?), как поясняется в:помощь ins-special-special.

вот список плагинов, которые делают то, что вы спрашиваете (с vimtips):

кроме vimtips, есть еще одно хорошее объяснение проблемы в интернете.


Мне тоже нужен был один, и я уже пробовал несколько плагинов:

Автозакрытия, http://www.vim.org/scripts/script.php?script_id=1849, немного агрессивный.

простые пары,http://www.vim.org/scripts/script.php?script_id=2339, зависит от Python. Если вы находитесь в Linux, это не проблема, но в Windows это может быть проблемой, чтобы соответствовать версии Vim интерпретатору Python у вас есть.

мой совет будет ClosePairs, что вы можете найти в http://www.vim.org/scripts/script.php?script_id=2373 который отлично работает для меня. Это просто и полезно.


есть много советов и плагинов на эту тему. Взгляните на соответствующая запись на сайте vimtips.


в настоящее время я использую Авто-парами!--2--> и он работает очень хорошо.

проблемы плагина, нарушающего undo/redo / repeat, похоже, сохраняются среди некоторых плагинов, перечисленных выше, но я не думаю, что это большая проблема (ну, по крайней мере, не для меня на данный момент).

только одно предостережение, хотя я не смог использовать :helptags для создания файла справки с этим плагином, как на момент написания этого.


проверьте этот новый плагин:ВИМ-закрывания по Townk. Ранее упомянутые Автозакрытия был агрессивным, иногда вел себя нежелательным образом.


существует проблема с использованием этого (через imap или один из скриптов). Вы не сможете повторить полное редактирование с помощью .

e.g. (foo) with . only gets you foo, without the brackets.

Он отлично работает, если вы вставляете скобки нормально, как два символа.



https://github.com/vim-scripts/Auto-Pairs

протестировал этот плагин для undu повтора. 2013 Это просто работает. Также с плагином python-mode.


есть новый плагин от cohama:

lexima.vim (github)

(еще не включено vim.org)

этот плагин поддерживает .команда!
Afaik, это единственный плагин, поддерживающий это.

также работает последовательность отмены/повтора.