Vim:括号的缩进代码就像它对括号一样

时间:2016-12-25 13:26:44

标签: java vim macvim

我想以某种方式在括号内缩进我的java代码,就像它在括号内一样。这是一个虚拟的例子:

public String hello(
    String really,
    String looong,
    String listOf,
    Optional<String> params
) {
    return params.map((p) -> "Do something with the value " + p).orElse("world");
}

我试图使用cinoptions来解决它,但似乎没有这样的选择。我不想最终为java编写自定义identexpr

1 个答案:

答案 0 :(得分:0)

好吧,既然我找不到一个简单的解决方案,我已经通过将以下代码放到~/.vim/after/indent/java.vim来覆盖了indentexpr for java:

setlocal indentexpr=GetMyJavaIndent()
function GetMyJavaIndent()
    " When the line starts with a ), try aligning it with the matching (
    if getline(v:lnum) =~ '^\s*)'
        call cursor(v:lnum, 1)
        silent normal! %
        let lnum = line('.')
        if lnum < v:lnum
            return indent(lnum)
        endif
    endif
    return GetJavaIndent()
endfunction