Как мне заставить Vim автоматически поставить конечные скобки? - PullRequest
35 голосов
/ 19 мая 2009

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

Ответы [ 11 ]

35 голосов
/ 19 мая 2009

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

:imap ( ()<left>
31 голосов
/ 19 мая 2009

Попробуйте использовать плагин AutoClose .

13 голосов
/ 21 января 2013

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

:inoremap ( ()<left>

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

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

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

  • delimitMate от Израиля Chauca Fuentes (настраивается и не прерывает отмену / повтор / повтор, но прерывает iabbr) также на GitHub
  • AutoClose от Karl Guertin (автоматически закрывает определенные жестко закодированные символы, но не прерывает отмену / повтор / повтор)
  • AutoClose от Thiago Alves (настраивается, но прерывает отмену / повтор / повтор)
  • автопары Автопары по Мяо Цзяну (настраивается, но прерывается отмена / повтор / повтор)
  • ClosePairs от Edoardo Vacchi (настраивается, но прерывает отмену / повтор / повтор)
  • smartinput от Kana Natsuno (настраивается, но прерывает отмену / повтор / повтор)

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

11 голосов
/ 20 мая 2009

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

AutoClose, 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, которое идеально подходит для меня Это просто и полезно.

8 голосов
/ 19 мая 2009

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

6 голосов
/ 27 июля 2013

В настоящее время я использую автопары , и это работает очень хорошо.

Проблемы с плагином, нарушающим отмену / повтор / повтор, по-видимому, сохраняются среди некоторых из плагинов, перечисленных выше, но я не думаю, что это большая проблема (ну, по крайней мере, для меня сейчас). 1005 *

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

3 голосов
/ 24 сентября 2012

Проверьте этот новый плагин: vim-autoclose by Townk . Ранее упомянутый AutoClose был агрессивным, иногда ведя себя нежелательно.

1 голос
/ 14 марта 2013

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

Протестирован этот плагин для отмены повтора. 2013 Это просто работает. Также с плагином в режиме Python.

1 голос
/ 23 августа 2012
1 голос
/ 21 мая 2009

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...