编辑:我不能删除自己的答案,因为它已经被接受,但是@pydave的答案似乎是更好(更可靠)的解决方案。
您不应该修改内置的vim设置。软件包升级后,您的更改可能会消失。如果将其复制到.vim,则不会获得任何Java缩进错误修复。
而是将以下内容放入一个名为
~/.vim/after/indent/java.vim
function! GetJavaIndent_improved() let theIndent = GetJavaIndent() let lnum = prevnonblank(v:lnum - 1) let line = getline(lnum) if line =~ '^s*@.*$' let theIndent = indent(lnum) endif return theIndentendfunctionsetlocal indentexpr=GetJavaIndent_improved()
这样,它将加载普通的Java缩进,并且仅修改缩进以删除注释缩进。
您可能应该通过设置将缩进文件用于Java FileType(而不是使用cindent)
filetype plugin indent on。
就是说,我的Linux发行版中的Vim 7.1附带的缩进文件(从当前的vim
svn来看,对于7.2仍然适用)尚未解决注释问题。因此,我将复制
/usr/share/vim/vim71/indent/java.vim(参见https://vim.svn.sourceforge.net/svnroot/vim/branches/vim7.1/runtime/indent/java.vim)复制
~/.vim/indent/java.vim并在末尾添加了以下几行:
let lnum = prevnonblank(v:lnum - 1)let line = getline(lnum)if line =~ '^s*@.*$' let theIndent = indent(lnum)endif
我不确定这是否会破坏其他缩进,但对我有用。



