Intellij IDEA系列软件保留空行缩进避免自动删除方法

09/17/2015

自从Kaijia申请到JetBrains的学生优惠开始用Intellij IDEA系列的软件就感觉再也回不去Netbeans了,这一系列在整体性能,尤其是在代码自动完成这个功能上要比Netbeans领先起码一两年。现在Kaijia已经将几乎全部的代码迁移到了Intellij IDEA系列中。不过随之而来的一些小问题也出现了。

在Netbeans中,默认所有的空行都是保留缩进的,缩进的量根据上下文的缩进量确定。而在Intellij中,默认所有的空行都是没有缩进的,所有增加的缩进Tab都会在文件保存时被自动删除。这样设置确也有好处,比如统计行数时不需要考虑Tab和空格、在nano中显示时可以避免绿色条柱等等,但是对于以往在Netbeans中编辑的项目,迁移到Intellij后,这些使用习惯的改变势必会对原有的开发规范造成影响。

Kaijia就经常需要用其他软件手动去增加缩进。在Intellij的设置里面搜索了一下发现控制此行为的选项粗看只有“Keep indents at empty lines”(空行保留缩进)一项,激活这一项后实际上并没有效果,缩进只会在光标所在的行被保留;光标移开到其他行后,只要按下强制保存键(Ctrl+S),原来空行的缩进立马就被删除了。

于是Kaijia仔细研究了一下设置项,发现实际上Intellij的删除缩进行为是同时被两个设置项控制的(有点坑啊)。

首先时刚才提到的设置中Editor->Code Style->Default Indent Options下面的Keep indents at empty lines一项,选中此项后将保留空行的缩进——直到保存。保存之后,空行的缩进仍然将被删除。

Code Style中设置项

Code Style中设置项

第二个设置项则相对比较隐蔽,在设置中Editor->General->Other下面的Strip trailing space on Save一项,此设置控制在保存时对空行缩进的处理方式,有三种选项:

  • Modified Lines,在保存时删除发生修改的行中的空行缩进;
  • All,在保存时删除当前的文件中所有的空行缩进;
  • None,在保存时保留所有的空行缩进。

在这里只要选定None就可以实现保留空行缩进了。

General设置项

General设置项

必须在两项同时设置后才可以保留空行缩进。另外需要提醒的是,第二项“Strip trailing space on Save”是对全局生效的,当切换到其他不保留空行的项目时,必须再在设置中将此设置改回。