如何修改IntelliJ SQL格式化器为UPDATE后的SET添加缩进
问题:如何修改IntelliJ SQL格式化器,为UPDATE语句的SET子句添加缩进?
当前格式化后的代码:
UPDATE role SET is_available = 0 , is_updated = 1 WHERE name = 'Admin';
期望的带缩进的格式化效果:
UPDATE role SET is_available = 0 , is_updated = 1 WHERE name = 'Admin';
当前IntelliJ配置(codeStyles/Project.xml):
<component name="ProjectCodeStyleConfiguration"> <code_scheme name="Project" version="173"> <option name="LINE_SEPARATOR" value=" " /> <option name="RIGHT_MARGIN" value="120" /> <option name="SOFT_MARGINS" value="80,100,120" /> <SqlCodeStyleSettings version="7"> <option name="KEYWORD_CASE" value="2" /> <option name="IDENTIFIER_CASE" value="1" /> <option name="TYPE_CASE" value="4" /> <option name="CUSTOM_TYPE_CASE" value="1" /> <option name="ALIAS_CASE" value="4" /> <option name="BUILT_IN_CASE" value="4" /> <option name="QUOTED_IDENTIFIER_CASE" value="1" /> <option name="QUOTE_TYPE" value="20" /> <option name="QUERY_SECTION_1ST_WORD_ALIGN" value="2" /> <option name="QUERY_EL_COMMA" value="1" /> <option name="SUBQUERY_OPENING" value="1" /> <option name="SUBQUERY_CONTENT" value="1" /> <option name="SUBQUERY_CLOSING" value="3" /> <option name="SUBQUERY_PAR_SPACE_BEFORE" value="1" /> <option name="INSERT_INTO_NL" value="2" /> <option name="INSERT_CONTENT" value="0" /> <option name="INSERT_TABLE_EL_LINE" value="1" /> <option name="INSERT_VALUES_EL_LINE" value="1" /> <option name="INSERT_EL_WRAP" value="0" /> <option name="INSERT_MATRIX_INCLUDING_HEADER" value="true" /> <option name="SET_ALIGN_EQUAL_SIGN" value="false" /> <option name="WITH_EL_WRAP" value="2" /> <option name="WITH_ALIGN_AS" value="true" /> <option name="SELECT_EL_WRAP" value="3" /> <option name="SELECT_KEEP_N_ITEMS_IN_LINE" value="3" /> <option name="SELECT_USE_AS_WORD" value="1" /> <option name="FROM_EL_COMMA" value="0" /> <option name="FROM_ALIGN_JOIN_TABLES" value="true" /> <option name="FROM_INDENT_JOIN" value="false" /> <option name="FROM_ONLY_JOIN_INDENT" value="2" /> <option name="FROM_PLACE_ON" value="21" /> <option name="WHERE_EL_LINE" value="1" /> <option name="ORDER_EL_WRAP" value="2" /> <option name="TABLE_OPENING" value="1" /> <option name="TABLE_CONTENT" value="2" /> <option name="TABLE_CLOSING" value="3" /> <option name="TABLE_ALTER_ITEM_WRAP" value="2" /> <option name="CONSTRAINT_WRAP_2" value="true" /> <option name="CONSTRAINT_WRAP_4" value="true" /> <option name="CREATE_SCHEMA_CONTENT_INDENT" value="false" /> <option name="VIEW_INDENT_QUERY" value="true" /> <option name="ROUTINE_ARG_CONTENT" value="2" /> <option name="ROUTINE_ARG_CLOSING" value="3" /> <option name="ROUTINE_ARG_WRAP" value="2" /> <option name="ROUTINE_ARG_COMMA" value="1" /> <option name="SCRIPT_STMT_SEMICOLON_WRAP" value="2" /> <option name="IMP_COMMON_WRAP_EVERY_STATEMENT" value="true" /> <option name="IMP_DECLARE_EL_WRAP" value="1" /> <option name="IMP_DECLARE_ALIGN_DEFAULT" value="true" /> <option name="IMP_IF_THEN_WRAP_THEN" value="true" /> <option name="IMP_IF_THEN_INDENT_THEN_ELSE" value="true" /> <option name="EXPR_SPACE_WITHIN_PARENTHESES" value="true" /> <option name="EXPR_CASE_THEN_WRAP" value="true" /> <option name="EXPR_CASE_THEN_ALIGN" value="true" /> <option name="EXPR_CASE_END" value="1" /> <option name="EXPR_CASE_KEEP_NL_AFTER_THEN" value="true" /> <option name="INDEX_NAME_TEMPLATE" value="{unique?u:}k_{table}_{columns}" /> <option name="PRIMARY_KEY_NAME_TEMPLATE" value="pk_{table}" /> <option name="FOREIGN_KEY_NAME_TEMPLATE" value="fk_{table}_{ref_table}_{ref_columns}" /> </SqlCodeStyleSettings> <codeStyleSettings language="SQL"> <option name="KEEP_LINE_BREAKS" value="false" /> <option name="KEEP_FIRST_COLUMN_COMMENT" value="false" /> <indentOptions> <option name="CONTINUATION_INDENT_SIZE" value="4" /> <option name="SMART_TABS" value="true" /> </indentOptions> </codeStyleSettings> </code_scheme> </component>
目前已为INSERT、ALTER语句实现了缩进效果,示例如下:
INSERT INTO my_temporary_table (id, value_1, value_2, value_3, value_4) VALUES (26, 42 + 1, 42 + 2, 12345, 67890)
ALTER TABLE t1 ADD first char(1) DEFAULT 'A' NOT NULL, ADD second varchar(2) DEFAULT 'B' NOT NULL, ADD third varchar(160) NULL;
解决方案
要让UPDATE语句的SET子句达到和INSERT、ALTER一致的缩进效果,可通过以下两种方式修改配置:
方式一:图形界面操作
- 打开IntelliJ设置(快捷键
Ctrl+Alt+S,或通过File → Settings) - 导航到Editor → Code Style → SQL
- 切换到Statements标签页
- 找到UPDATE statement区域,勾选Indent SET clause选项
- 点击Apply和OK保存配置,重新格式化代码即可生效
方式二:直接修改配置文件
在你的Project.xml配置中,找到<SqlCodeStyleSettings>节点,添加如下配置项:
<option name="UPDATE_SET_INDENT" value="true" />
添加后的SqlCodeStyleSettings节点会包含该选项,保存文件后重启IntelliJ或重新格式化代码,就能得到你期望的缩进效果。
内容的提问来源于stack exchange,提问作者Simon
相关产品推荐
相关产品推荐

