При редактировании файлов .scm
было бы здорово, если бы Vim автоматически ставил закрывающую скобку )
, как только я запускаю (
. Как мне это сделать?
Как заставить Vim автоматически ставить конечные фигурные скобки?
Ответы (11)
Вы можете сопоставить открывающую скобку по своему вкусу:
:imap ( ()<left>
Попробуйте использовать плагин AutoClose.
<ESC>
. Так что избегайте, если вы заботитесь об этом.
- person Steven Lu; 31.05.2013
Самый простой ответ - включить карту. Например.:
:inoremap ( ()<left>
Проблема в том, что вам нужно будет добавить одну запись для каждого символа, который вы хотите автоматически закрыть ('{','[','"', и т. д.). Кроме того, плагины обычно более умны, обеспечивая такие вещи, как обнаружение "закрытия" характер и не повторять его.
Проблема с приведенным выше решением и с большинством подключаемых модулей заключается в том, что они имеют тенденцию нарушать последовательность отмены (gundo любой?), как описано в :help ins-special-special.
Вот список плагинов, которые делают то, что вы просите (из vimtips):
- delimitMate от Исраэля Чаука Фуэнтеса (настраивается и не прерывает отмену/повторение/повторение, но - сломать iabbr) также на GitHub
- AutoClose от Karl Guertin (автоматически закрывает определенные жестко запрограммированные символы, но не прерывает отмену). /повторить/повторить)
- AutoClose от Тьяго Алвеса (настраивается, но прерывает отмену/возврат/повтор)
- авто-пары Автопары Мяо Цзяна (настраивается, но прерывает отмену/повторение/повторение)
- ClosePairs Эдоардо Вакки (настраивается, но прерывает отмену/повтор/повтор)
- smartinput от Kana Natsuno (настраивается, но прерывает отмену/повторение/повторение)
Помимо 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.
В настоящее время я использую автопары, и это работает очень хорошо.
Проблемы с плагином, нарушающим отмену/повтор/повтор, по-видимому, сохраняются среди некоторых из перечисленных выше плагинов, но я не думаю, что это большая проблема (ну, по крайней мере, не для меня в данный момент).
Только одно предостережение: я не мог использовать :helptags для создания файла справки с этим подключаемым модулем на момент написания этой статьи.
Оцените этот новый плагин: vim-autoclose by Townk. Ранее упомянутый AutoClose был слишком агрессивным и иногда вел себя нежелательным образом.
Есть проблема с использованием этого (через имап или один из скриптов). Вы не сможете повторить полное редактирование с помощью команды .
.
e.g. (foo) with . only gets you foo, without the brackets.
Он отлично работает, если вы вставляете скобки как два символа.
Вы можете попробовать загрузить следующий плагин AutoClose: вставляет соответствующие квадратные скобки, скобки, фигурные скобки или кавычки < /а>
https://github.com/vim-scripts/Auto-Pairs
Протестировал этот плагин на undu redo. 2013 Это просто работает. Также с плагином python-mode.
Есть новый плагин от cohama:
lexima.vim
(github)
(пока не на vim.org)
Этот плагин поддерживает команду .
!
На самом деле, это единственный плагин, поддерживающий это.
Также работает последовательность отмены/возврата.