当前位置:  开发笔记 > 编程语言 > 正文

如何正确地使用vim indent java注释?

如何解决《如何正确地使用vimindentjava注释?》经验,为你挑选了2个好方法。

在使用注释缩进java代码时,vim坚持这样缩进:

@Test
    public void ...

我希望注释与方法定义在同一列中,但我似乎找不到告诉vim这样做的方法,除了可能使用缩进表达式但是我不确定我是否可以将它与常规的.

编辑:文件类型插件已经打开我只是对缩进插件有点困惑.接受的答案可能有点hackish但也适合我.



1> idbrii..:

您不应该修改内置的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缩进,只修改缩进以删除注释缩进.



2> WMR..:

编辑:我无法删除自己的答案,因为它已被接受,但@ pydave的答案似乎是更好(更强大)的解决方案.


您可能应该通过设置使用缩进文件来获取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

我不确定这是否打破了任何其他缩进,但它对我有用.

推荐阅读
mobiledu2402851173
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有