idea java EclipseFormatter代码格式化的坑和模板

本文介绍了在IDEA中使用EclipseFormatter遇到的问题,即Tab缩进不等于4个空格,并提供了解决办法。推荐使用阿里巴巴的代码规范,详细讲述了如何导入和配置Eclipse的代码格式化模板,包括eclipse-codestyle-forma.xml文件的导入与设置,以及IDEA中EclipseCodeFormatter插件的安装和使用,确保一个Tab键对应4个空格的格式。同时提到了eclipse-codetemplate.xml文件和properties文件的UTF-8编码设置。
摘要由CSDN通过智能技术生成

因为tab缩进在不同的操作系统上或在不同的编辑器下显示长短不一定。
又由于不同情况下Tab缩进的长短不同,所以为了不产生异常错误(py,对java等对代码格式无要求的语言不会导致出错但是格式乱了),所以推荐使用四个空格键代替一个Tab键。

 

问题:

  idea中按一个tab就是一个tab不是期望的四个空格

结论:

  idea使用的eclipseFormatter.xml的锅,这个配置文件配置的结果是一个tab=一个tab。

  关闭eclipseFormatter并重启IDEA后,一个tab等于4个空格(本地IDEA配置结果),  可以理解为每次启动IDEA时会去读eclipseFormatter的配置。

  后续下载了阿里巴巴的eclipseFormatter.xml 一个tab的确是四个空格。

文件准备

文件 说明
p3c-formatter 模板文件
EclipseFormatter.zip idea插件
阿里巴巴Java开发手册(详尽版).pdf 代码规范手册

官方文件:

推荐阿里代码规范

文件名 作用
eclipse-codestyle.xml 代码格式化时用的模板
eclipse-codetemplate.xml 注释模板

两个模板文件

个人在使用格式化配置:

eclipse-codestyle-forma.xml

 
<?xml version="1.0" encoding="UTF-8" standalone="no"?>

<profiles version="12">

<profile kind="CodeFormatterProfile" name="P3C-CodeStyle" version="13">

<!--可变参数的... Idea没有对应的配置项,强制insert-->

<setting id="org.eclipse.jdt.core.formatter.insert_space_after_ellipsis" value="insert"/>

<!--枚举值之间 Idea没有对应的配置项,强制insert-->

<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations" value="insert"/>


<!--org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=Java:SPACE_BEFORE_COMMA-->

<!--org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=Java:SPACE_BEFORE_COMMA

由于IDEA只有一个SPACE_BEFORE_COMMA选项,所以统一设置 insert_space_before_comma 为 do not insert

-->

<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters"

value="do not insert"/>

<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments"

value="do not insert"/>


<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression"

value="do not insert"/>

<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits" value="do not insert"/>

<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws"

value="do not insert"/>

<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer"

value="do not insert"/>

<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation" value="do not insert"/>

<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters"

value="do not insert"/>

<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments" value="do not insert"/>

<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters"

value="do not insert"/>

<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces"

value="do not insert"/>

<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference"

value="do not insert"/>

<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations"

value="do not insert"/>

<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments"

value="do not insert"/>

<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations"

value="do not insert"/>

<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments" value="do not insert"/>

<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments"

value="do not insert"/>

<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws"

value="do not insert"/>

<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations"

value="do not insert"/>

<!--insert_space_before_comma end-->


<!--org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=Java:SPACE_AFTER_COMMA_IN_TYPE_ARGUMENTS-->

<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments" value="insert"/>

<!--IDEA只有一个配置项SPACE_AFTER_COMMA,insert_space_after_comma*统一设置成insert-->

<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters"

value="insert"/>

<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments" value="insert"/>

<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations"

value="insert"/>

<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments"

value="insert"/>

<setting id="org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter" value="insert"/>

<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits" value="insert"/>

<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference"

value="insert"/>

<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations"

value="insert"/>

<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces" value="insert"/>

<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer" value="insert"/>

<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments"

value="insert"/>

<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws"

value="insert"/>

<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression" value="insert"/>

<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters"

value="insert"/>

<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws"

value="insert"/>

<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments"

value="insert"/>

<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters" value="insert"/>

<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation" value="insert"/>

<!--insert_space_after_comma end-->



<!--org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=Java:SPACE_BEFORE_COLON-->

<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional" value="insert"/>

<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert" value="insert"/>

<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for" value="insert"/>


<!--org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=Java:SPACE_AFTER_COLON-->

<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional" value="insert"/>

<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert" value="insert"/>

<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for" value="insert"/>

<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement" value="insert"/>


<!--IDEA不支持配置,默认do not insert-->

<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default" value="do not insert"/>

<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement"

value="do not insert"/>

<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case" value="do not insert"/>

<!--这个在Eclipse也没有找到配置的地方-->

<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case" value="do not insert"/>


<!--org.eclipse.jdt.core.formatter.insert_space_before_semicolon=Java:SPACE_BEFORE_SEMICOLON

程序导入的时候强制将SPACE_BEFORE_SEMICOLON设置为false

-->

<setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources"

value="do not insert"/>

<setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon" value="do not insert"/>

<setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for" value="do not insert"/>


<!--SPACE_AFTER_SEMICOLON=true-->

<setting id="org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for" value="insert"/>

<setting id="org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources" value="insert"/>


<!--IDEA不支持配置,do not insert-->

<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant"

value="do not insert"/>

<setting

id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration"

value="do not insert"/>

<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration"

value="do not insert"/>


<!--IDEA不支持,使用默认-->

<setting id="org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator" value="do not insert"/>

<setting id="org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator" value="do not insert"/>


<!--org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=Java:<Programmatic>-->

<setting id="org.eclipse.jdt.core.formatter.insert_space_after_binary_operator" value="insert"/>

<setting id="org.eclipse.jdt.core.formatter.insert_space_before_binary_operator" value="insert"/>


<!--IDEA不支持配置,使用如下值,两者对应-->

<setting

id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference"

value="do not insert"/>

<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments"

value="do not insert"/>

<setting id="org.eclipse.jdt.core.forma
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值