Vim 的自动闭合括号

Vim 7.4是否有任何工作插件可以自动关闭括号(“{}”,“[]”,“()”)并可能插入一些回车符(至少对于“{}”) ?

我知道这个问题已经被问过很多次了,但是没有一个答案看起来不能在 vim 7.4中工作,或者插件没有被更新或者什么的。

到目前为止,我已经尝试了 vim-Smartinput,autoclose 和 delimitmate,这些都没有设法插入任何结束字符,即使我已经启用了插件,否则他们似乎是活跃的。我不知道是否有一些变化,在 vim 以某种方式破坏这些插件。这些插件似乎至少在一年内都没有更新。有没有适用于 vim 7.4的解决方案?

100387 次浏览

Xptemplate 是一个代码片段插件,其中包含一个自动完成括号/大括号/等的选项

let g:xptemplate_brace_complete = '([{'

在你的 .vimrc。他们开始在同一行,但如果你点击进入它的位置正确。

在愤怒的国防部关闭基于意见的问题之前,为 一个 href = “ https://github.com/Raimondi/delimitMate”> delimitMate 投一票。

我刚刚在 Ubuntu 的 Vim 7.4.131中测试了 近对自动关闭分界线自动关闭

一点也不奇怪 都能用。

你的问题应该重新措辞,因为你没有搜索“一个自动关闭插件工程在7.4”... 因为他们都做。你应该问的是“这是我的设置,为什么没有一个“自动关闭”插件为我工作?”.

人们可以用这样的问题来回答: “这是一团糟。首先,在第95行之前注释掉所有内容。”

此外,Vim 是一个非常稳定的环境: “不积极工作”并不意味着“不值得尝试”。恰恰相反。

我在回答我自己的问题,因为我发现为什么没有一个插件似乎对我有用。这个问题似乎与 vim 中的 mksession 特性有关,我只是在一个保存的 session 中试用这些插件,由于某些原因,这些插件似乎因为某些未知的原因而无法工作。这些插件似乎已经安装好了,并且“工作”良好(就像在插件命令中找到的那样)。不打开保存的会话,至少 delimitMate 开始为我工作。

添加一个新的候选者: 有一个名为 Lexima的插件。它是在2014年10月推出的,所以相当新。作者认为,它具有高度的可定制性和点重复性。它也可以定制为自动关闭 def-end对,就像红宝石一样。

这里的 陈述由作者在日本举行的 VimConf,它比较了不同的方式来实现自动关闭功能。

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

inoremap " ""<left>
inoremap ' ''<left>
inoremap ( ()<left>
inoremap [ []<left>
inoremap { {}<left>
inoremap {<CR> {<CR>}<ESC>O
inoremap {;<CR> {<CR>};<ESC>O

如果未设置 set paste,则此自动完成操作将在 insert模式下进行。将它保存在 vimrc中,以避免每次输入它 当我们不需要映射时,我们需要使用 ctrl + v转义它,然后键入映射的字符,如 ( {等。