如何让Vim自动添加结束括号?

时间:2009-05-19 15:24:10

标签: vim autocomplete

在编辑.scm文件时,如果Vim在我开始)后立即自动放置结束括号(,那将会很棒。我该怎么做?

11 个答案:

答案 0 :(得分:35)

您可以根据自己的喜好映射左大括号:

:imap ( ()<left>

答案 1 :(得分:31)

尝试使用AutoClose插件。

答案 2 :(得分:13)

最简单的答案是包含地图。例如:

:inoremap ( ()<left>

问题是你需要为你想要自动关闭的每个符号添加一个条目('{','[','“'等)。此外,插件通常更聪明,提供诸如检测“关闭”字符而不是重复它。

上面的解决方案和大多数插件的问题在于,它们会打破撤消序列(gundo任何人?),如:help ins-special-special中所述。

以下是您所要求的插件列表(来自vimtips):

  • delimitMate以色列Chauca Fuentes(可配置,并且不会破坏撤销/重做/重复,但是 - 打破iabbr)也在GitHub
  • Karl Guertin的
  • AutoClose(自动关闭特定的硬编码字符,但不会破坏撤消/重做/重复)
  • Thiago Alves的
  • AutoClose(可配置,但会破坏撤消/重做/重复)
  • auto-pairs苗江的自动对话(可配置,但会中断/重做/重复)
  • Edoardo Vacchi的
  • ClosePairs(可配置,但会破坏撤消/重做/重复)
  • Kana Natsuno的
  • smartinput(可配置,但会破坏撤消/重做/重复)

vimtips外,网络上还有another nice explanation of the issue

答案 3 :(得分:11)

我也需要一个,我已经尝试了一些插件:

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,这对我来说非常合适。它简单实用。

答案 4 :(得分:8)

关于这个主题有很多提示和插件。请查看vimtips网站中的relevant entry

答案 5 :(得分:6)

我现在正在使用auto-pairs并且效果非常好。

插件破坏撤销/重做/重复的问题似乎在上面列出的一些插件中持续存在,但我不认为这是一个很大的问题(好吧,至少目前不在我这里)。 / p>

但有一点需要注意,我无法使用:helptags在撰写本文时使用此插件生成帮助文件。

答案 6 :(得分:3)

查看这个新插件:vim-autoclose by Townk。前面提到的AutoClose是积极的,有时表现得不合适。

答案 7 :(得分:1)

使用此功能时出现问题(通过imap或其中一个脚本)。您将无法使用.命令重复完整编辑。

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

如果正常插入括号,它可以正常工作。

答案 8 :(得分:1)

答案 9 :(得分:1)

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

测试此插件是否为undu redo。 2013它只是有效。还有python-mode插件。

答案 10 :(得分:0)

cohama有一个新插件:

lexima.vim github

(尚未在vim.org上)

此插件支持.命令!
Afaik,这是唯一支持此功能的插件。

撤消/重做序列也可以。