当前位置: 首页 > 面试题库 >

如何使Vim正确缩进Java注释?

湛同
2023-03-14
问题内容

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

@Test
    public void ...

我希望注释与方法定义在同一列中,但似乎无法找到一种告诉vim做到这一点的方法,除了可能使用缩进表达式外,但我不确定是否可以将其与经常碰碰碰。

编辑:文件类型插件已经打开,我对缩进插件有点困惑。接受的答案可能有点破烂,但对我也有用。


问题答案:

编辑:我不能删除自己的答案,因为它已经被接受,但是@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 theIndent
endfunction
setlocal 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

我不确定这是否会破坏其他缩进,但对我有用。



 类似资料:
  • 问题内容: 我使用Vim已有一段时间了,在PHP文件中无法正常使用HTML缩进。 例如,我想要的是让每个孩子都比其父缩进一个标签,如下所示。 使用PHP-correct- Indent 脚本,代码的格式如下: 即使使用缩进的HTML,然后再向其中添加PHP代码,缩进也会被忽略,从而移动HTML代码的新行而根本没有任何缩进。 那么,有什么方法可以使用Vim获得想要在PHP文件中使用HTML的缩进格式

  • 本文向大家介绍如何正确设置VIM自动缩进以编辑Python文件?,包括了如何正确设置VIM自动缩进以编辑Python文件?的使用技巧和注意事项,需要的朋友参考一下 要为VIM中的python文件设置autoindent,请使用以下配置: 示例 将此配置添加到主文件夹中的.vimrc文件。

  • 我试图放大我的mandelbrot集,我读到了这个问题:如何简单地放大mandelbrot集,但我很难理解它,它不起作用。当我这样计算新的实数和复数时: 新的mandelbrot在两个轴上都有点变形?怎么了?以下是一个例子:http://www.phpdevpad.de/index.php?id=190.

  • 问题内容: 我正在使用Vim并编辑Python脚本。 通常,自动缩进效果很好,但是当我开始换行并输入’#’来输入注释时,Vim会为我取消缩进。 例如,如果有 然后按回车,Vim会正确缩进 但是,如果我没有输入,而是输入,它会自动缩进 我的.vimrc文件如下。有人知道为什么会这样吗? 问题答案: 设置使Vim表现得像您为我描述的那样,而使用(这就是我倾向于使用的)Vim表现得像您希望的那样。 更新

  • 问题内容: 混合使用PHP和HTML时,应使用什么合适的缩进样式?我要缩进以使输出的HTML具有正确的缩进,还是使PHP / HTML混合看起来格式正确(从而更易于阅读)? 例如,假设我有一个循环输出表行。以下哪一项是正确的? PHP / HTML组合看起来正确: 输出的HTML看起来正确: 我发现,遇到这种情况时(经常),我没有标准的样式可以使用。我知道可能没有“正确”的答案,但我很想听听其他开

  • 我在我的多线程应用程序中使用了Java Executors,但我似乎不知道什么时候使用以下每一种方式是最好的: 我想知道的是:这些方法是可以互换的,还是在某种情况下我应该使用上面的特定类型?