在使用注释缩进java代码时,vim坚持这样缩进:
@Test public void ...
我希望注释与方法定义在同一列中,但我似乎找不到告诉vim这样做的方法,除了可能使用缩进表达式但是我不确定我是否可以将它与常规的.
编辑:文件类型插件已经打开我只是对缩进插件有点困惑.接受的答案可能有点hackish但也适合我.
您不应该修改内置的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 theIndent endfunction setlocal indentexpr=GetJavaIndent_improved()
这样它就会加载库存java缩进,只修改缩进以删除注释缩进.
编辑:我无法删除自己的答案,因为它已被接受,但@ pydave的答案似乎是更好(更强大)的解决方案.
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
我不确定这是否打破了任何其他缩进,但它对我有用.