vim:括号的缩进代码就像牙套一样



我想以某种方式将我的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

好吧,因为我找不到一个简单的解决方案,所以我通过将以下代码放入 ~/.vim/after/indent/java.vim

来覆盖Java的indentexpr。
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

相关内容

最新更新