如何阻止Intellij自动更改尚未编辑的行的缩进?

时间:2015-12-01 20:05:06

标签: java intellij-idea

我在Intellij中处理许多项目,其格式是坏的或非正统的,特别是“延续”行的缩进明显不同于Intellij的配置方式。我不希望在许多文件甚至整个文件中修复此缩进(这违反了我们的技术团队的政策,因为它会破坏git-blame,但也会因为它会导致嘈杂的差异或无关的提交)

如果我正在使用这样的缩进编辑文件,我可以使用Intellij自动调整我编辑过的新代码行或行。但我经常发现它在文件的其他地方缩进了其他行,几乎总是这些“延续”行*

如何配置Intellij以停止更改这些?有一个配置选项只能在已更改的行上删除尾部空格,但我无法找到控制此行为的配置。 FWIW这不会在保存时发生,但似乎在其他触发后发生,但我不确定触发器是什么。我认为当你自动导入类时可能会发生这种情况吗?

*我认为这就是所谓的,例如:

foo.bar() .baz() // a line that might be changed by Intellij

3 个答案:

答案 0 :(得分:2)

奇怪的是,除非你运行Code |,否则我不希望IntelliJ IDEA修改行重新格式化代码(或键盘快捷键,如Ctrl-Alt-L或Option-Command-L,已经引用dnault)。当我自动导入一个类时,即使它是同一语句的一部分,也不会更改continuation indent。 (如果您想重新格式化代码的一小部分,可以选择要更改的行,并仅为这些行运行“重新格式化代码”。)

当您注意到这些奇怪的更改时,您可以使用VCS |当地历史|显示“历史记录”菜单(或“显示选择菜单的历史记录”菜单,如果要查看文件的较小部分)。这给出了所有更改以及进行更改时的不同差异概述。这可能有助于发现延迟缩进何时被更改。

打开“设置”对话框(“文件”|“设置”)并导航到“编辑器”|代码风格| Java,您可以指定用于延续缩进的空格数(在“制表符和缩进”选项卡上)。如果项目中的延续缩进是一致的,这可能会解决您的问题。

(可以在“设置”对话框中配置“仅在已更改的行上删除尾部空白的配置选项”,可以在“设置”对话框中进行配置:导航到“编辑器”|“常规”,转到“其他”部分,然后在那里看到“在“保存”组合框上删除尾随空格。)

答案 1 :(得分:0)

更改"在Save"上删除尾随空格为我工作。发现这令人难以置信的烦恼,因为我们不会在代码库中始终使用四个空格或制表符,唯一有效的解决方案就是停止在保存时删除尾随空格。如前所述,可以通过“设置”对话框进行操作:导航到“编辑器”|一般(它在我的intelij IDE的底部)

答案 2 :(得分:0)

我发现了一个非常恼人的自动重新格式化案例。在IntelliJ中,无论何时关闭括号,默认情况下它都会重新格式化所包含的部分。这正在将我精心设计的代码的大部分变成难以理解的垃圾。编辑器可能知道如何将错误的格式更改为一致的格式,但无法从良好(但不一致)的格式中判断出错误的格式 - 至少现在还没有。

有一个选项可以重新格式化大括号,取消勾选停止了大量的重新格式化(同时加快了我的编辑速度,重新格式化导致了一两次挂起)。