我可以在Vim中修复Groovy缩进吗?

时间:2015-07-08 20:18:20

标签: vim groovy indentation auto-indent

我正在尝试将Vim用于工作中的一些Groovy代码。当不使用分号时,它似乎无法很好地处理自动注册。我发现了一些与Ruby和JavaScript有关的问题,但是我找到的修复工作都没有。我的.vimrc中有filetype plugin indent on,并且未设置cindentautoindentsmartindent。我已尝试在Groovy缓冲区中运行setlocal nocindent nosmartindent并使用ggVG=重新包装该文件,以防万一在后台设置插件,但它仍然总是出错。< / p>

例如,我在一个小样本上得到了这个(来自我在Groovy中编写的个人libGDX沙箱应用程序)

@Override
    void render () {
        Gdx.gl.glClearColor(0.75f, 0.75f, 0.75f, 1)
            Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT)
            batch.begin()
            batch.draw(img, 0, 0)
            font.draw(batch, "Testing", 300, 400)
            batch.end()
    }

注意注释,左括号和函数第一行之后的额外缩进。我的.vimrc相当复杂,但如果有人认为这会有所帮助,我可以发布一个指向我的dotfiles的链接。

2 个答案:

答案 0 :(得分:8)

Vim没有附带groovy的缩进脚本。因此它尝试使用基于C的标准缩进规则。这些规则使用分号来确定行是否结束,这就是为什么在函数的第二行上得到行继续缩进的原因。

由于vim不包含缩进脚本,因此您可以使用groovyindent插件。放在~/.vim/indent。您还需要在groovy.vim上运行dos2unix,因为它包含错误的行结尾。

答案 1 :(得分:0)

由于 groovy 看起来很像简化的 perl,对于我的小 groovy(实际上是 nextflow DSL)编码,设置 filetype=perl 后跟 gg=G 效果很好。