Vim的自动关闭支架

Dag*_*ago 38 vim brackets vim-plugin

是否有任何适用于Vim 7.4的WORKING插件会自动关闭括号('{}','[]','()')并且可能会插入一些回车(至少为'{}')?

我知道这个问题已被问过很多次了,但是没有一个答案在vim 7.4中似乎没有用,或者插件没有更新或者什么的.

到目前为止,我已经尝试过vim-smartinput,autoclose和delimitmate,尽管我已经启用了插件,但它们中的NONE已设法插入任何结束字符,否则它们似乎处于活动状态.我不知道vim是否有某些变化会以某种方式破坏这些插件.这些插件似乎都没有至少在一年内更新.任何适用于vim 7.4的工作解决方案?

dlm*_*tei 95

对于我们这些想要香草的人vim:

inoremap " ""<left>
inoremap ' ''<left>
inoremap ( ()<left>
inoremap [ []<left>
inoremap { {}<left>
inoremap {<CR> {<CR>}<ESC>O
inoremap {;<CR> {<CR>};<ESC>O
Run Code Online (Sandbox Code Playgroud)

未设置此insert模式下的自动完成模式set paste.保持它vimrc以避免每次键入它,当我们不想要映射时,我们需要在键入映射的char之前使用ctrl+ 来转义它.v( {

  • 像我的Vim 8.0中的魅力一样工作 (5认同)
  • 这项功能相当不错,而且顺便说一下,我做了一些与我相关的改进...在最后一个tho映射中,我在每行的末尾添加了&lt;TAB&gt;,因为您要编写的代码是打开代码块后,一个标签(比最后一个标签)缩进更多。inoremap {&lt;CR&gt; {&lt;CR&gt;} &lt;ESC&gt; O &lt;TAB&gt; inoremap {; &lt;CR&gt; {&lt;CR&gt;}; &lt;ESC&gt; O &lt;TAB&gt; (3认同)
  • @dlmeetei,您可能会误会我的意思。我指的不是编辑.vimrc。我指的是它在Eclipse中的工作方式,当您键入`(`时,它会在后面插入`)`,但是当您再次键入`)`时它会覆盖`)`,而不是插入另一个`)`。 (3认同)
  • @rossijonas,自动缩进应该注意分页。如果您设置了 ai 或 family,则不需要 (2认同)
  • @SOFe您可以使用`inoremap &lt;expr&gt;)strpart(getline('。'),col('。')-1,1)==“)”来避免该问题?“ \ &lt;权利&gt;”:“)”` (2认同)

rom*_*inl 33

我刚刚在Ubuntu上使用Pathogen 测试了Vim 7.4.131中的ClosePairs,AutoClose,DelimitMateAutoClose.

毫不奇怪,所有这些都有效.

你的问题应该改写,因为你没有搜索"在7.4中工作的自动关闭插件"......因为他们都这样做.您应该问的是"这是我的设置,为什么没有"自动关闭"插件对我有用?"

一个问题可以回答:"这是一团糟.从第95行开始评论所有内容."

此外,Vim是一个非常稳定的环境:"没有积极地工作"并不意味着"不值得尝试".恰恰相反,实际上.


kry*_*tah 26

在愤怒的mod之前给delimitMate投票结束了基于意见的问题.

  • 哦,对我来说是一个必备的键盘,你可能想看看:`inoremap {<CR> {<CR>} <Co> O`.它的作用:插入`{`并按Enter键时,它会插入右括号并将光标放在对之间的新行上. (10认同)

Yos*_*osh 13

添加一个新候选人:有一个名为lexima的插件.它于2014年10月推出,因此它相当新颖.据作者称,它具有高可定制性和点重复性.它也可以自定义为自动关闭def- end如红宝石一样.

以下是作者在日本举行的VimConf中的演示,该演示比较了实现自动关闭功能的不同方法.

  • 哇。这是列表中的一个很好的补充。比大多数其他插件更好:) (2认同)

Dag*_*ago 3

我明白了为什么这些插件似乎都不适合我。看来问题与 vim 中的 mksession 功能有关,我只是在保存的会话中尝试这些插件,并且由于某种原因似乎阻止了插件因某种未知原因工作。插件似乎已安装并且“工作”正常(如找到插件的命令等)。在不打开保存的会话的情况下,至少 delimitMate 开始为我工作。