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

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

11 ответов

Решение

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

:imap ( ()<left>

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

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

:inoremap ( ()<left>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Вы можете попробовать загрузить следующий плагин AutoClose: вставляет соответствующие скобки, скобки, скобки или кавычки

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

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

Есть новый плагин от Cohama:

lexima.vim( Github)

(пока нет на vim.org)

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

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

Другие вопросы по тегам