Как мне заставить Vim автоматически поставить конечные скобки?
Во время редактирования .scm
файлы было бы здорово, если бы Vim автоматически поставил конечную скобку )
как только я начну (
, Как мне это сделать?
11 ответов
Вы можете сопоставить открывающую скобку по своему вкусу:
:imap ( ()<left>
Самый простой ответ - включить карту. Например.:
: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, это единственный плагин, поддерживающий это.
Также работает последовательность отмен / повторов.