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

Duc*_*ppy 9 vim groovy indentation auto-indent

我正在尝试使用Vim来处理一些Groovy代码.当不使用分号时,它似乎不能很好地处理自动注册.我发现了一些与Ruby和JavaScript有关的问题,但是我找不到任何修复工作.我有filetype plugin indent on我的.vimrc,并且不设置cindent,autoindent或smartindent.我已经尝试setlocal nocindent nosmartindent在Groovy缓冲区中运行并重新提交文件,ggVG=以防万一在幕后设置插件,它仍然总是错误.

例如,我在一个小样本上得到这个(来自我在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()
    }
Run Code Online (Sandbox Code Playgroud)

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

FDi*_*off 10

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

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

  • 现在有一个unov版本的groovyindent:https://github.com/vim-scripts/groovyindent-unix (5认同)