使vim自动关闭代码块的语法结构

时间:2012-01-10 14:19:36

标签: vim ide erlang lua pascal

是否有插件使得vim紧密的语法结构能够根据缩进和语法文件中的数据自动包装任何语言的代码块?

例如我编辑lua文件时,我写

function myfunction()

然后按回车键自动关闭“结束”

function myfunction()
    <cursor position>
end

也许任何人都可以举例说明如何使用代码块的长关键字(如lua,erlang或pascal)为特定语言编写自己的插件?

2 个答案:

答案 0 :(得分:3)

Endwise似乎就是你要找的东西。它已经拥有lua支持,如果你对VimL感到满意,它看起来很容易扩展。

答案 1 :(得分:3)

我会使用像UltiSnips(我最喜欢的)或Snipmate这样的代码段插件。它们实质上将一些小词或一段文本扩展为更大的代码片段,并允许您仅编辑每个结构唯一的部分。 UltiSnips和Snippmate都包含许多语言的代码段,并允许您创建自己的代码段。

例如,UltiSnips包含Lua的功能片段。我只需输入fun,然后按Tab键,它就会扩展为

function new_function(args)

end

new_fuctnion被选中,因此我可以编辑函数名称。然后,一旦我按 Ctrl - j (在我的vimrc中我将其重新绑定到 Tab ),它会选择片段的下一部分{{ 1}}在这种情况下允许我输入函数的参数。最后的 Ctrl - j 将光标放在函数体内。