Как заставить Vim автоматически ставить конечные скобки?
при редактировании .scm
файлы было бы здорово, если бы Vim автоматически поставил конечную скобку )
Как только я начинаю (
. Как мне это сделать?
11 ответов
самый простой ответ-включить карту. Например.:
:inoremap ( ()<left>
проблема в том, что вам нужно будет добавить одну запись для каждого символа, который вы хотите автоматически закрыть ('{','[','"',etc). Кроме того, Плагины обычно более умны, обеспечивая такие вещи, как обнаружение "закрывающего" символа и не повторяя его.
проблема с решением выше и большинство плагины, это то, что они, как правило, нарушают последовательность отмены (gundoбыл кого?), как поясняется в:помощь ins-special-special.
вот список плагинов, которые делают то, что вы спрашиваете (с vimtips):
- delimitMate Израиль Chauca Фуэнтес (настраивается и не ломается отменить / повторить / повторить, но-break iabbr) также на GitHub
- Автозакрытия Карлом Гертином (автоматически закрывает определенные жестко закодированные символы, но не ломается отменить / повторить / повторить)
- Автозакрытия по Thiago Alves (настраивается, но ломается отменить / повторить / повторить)
- авто-парами!--9--> Auto Pairs by Miao Jiang (настраивается, но прерывает undo/redo/repeat)
- ClosePairs по Edoardo Vacchi (настраивается, но ломается отменить / повторить / повторить)
- smartinput по Kana Natsuno (настраивается, но прерывает undo / redo / repeat)
кроме 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, это единственный плагин, поддерживающий это.
также работает последовательность отмены/повтора.