使 IntelliJ 在行完成时重新格式化当前行

Posted

技术标签:

【中文标题】使 IntelliJ 在行完成时重新格式化当前行【英文标题】:Make IntelliJ reformat the current line on line-completion 【发布时间】:2011-08-13 04:33:23 【问题描述】:

有没有办法让我的线路在 IntelliJ 中完成后重新格式化? (对于那些熟悉的人,FlashDevelop 上提供了这种功能。)

假设我刚刚在 php 中输​​入了这段代码:

$var=array("a","b","c");

输入分号后,我希望编辑器将其重新格式化为(或任何我的配置状态):

$var = array("a", "b", "c");

此自动重新格式化触发器也可以在括号和其他行终止符上执行。

【问题讨论】:

这对我来说也是一个缺失的功能。我喜欢快速打字,不关心空格,然后在完成后清理我的行。 【参考方案1】:

IDEA 中没有这样的功能。您可以在需要时使用重新格式化代码 (Ctrl + Alt + L) 操作。

【讨论】:

经过多次研究,我没有发现任何可以像在 FlashDevelop 中那样完成这项工作的东西……我将不得不研究自定义插件的创建!【参考方案2】:

你实际上可以做类似的事情。

Go to where you want to insert ;
Tools/Start Macro Recording
Type in ;
Then select Code/Auto Indent Lines
Tools/Stop Macro Recording
Name the macro "reformat"
Now go to settings, Keymap, Macros, select "reformat"
Assign a keyboard shortcut of ;

在宏运行后,您可能需要稍微尝试一下才能将光标移到正确的位置。

【讨论】:

代码/自动缩进行不会像 Raphael 需要的那样重新格式化行内的代码(不会插入空格)。 @CrazyCoder,它可以在选定的文本区域上使用 重新格式化代码。不幸的是,映射一个在分号上写分号的宏不会输出分号(v10.0.3)。而且这太严格了,无法将其映射到这个按键上...我更多的是查看基于 PSI 结构的触发器...但是感谢您对宏世界的介绍,我会喜欢的!【参考方案3】:

这是基于上面的jhormans answer,我知道这个问题已经超过 6 年了。但是 IntelliJ IDEA 2017.1.5 仍然没有像 VisualStudios 那样在按下分号时自动重新格式化当前行的功能。

解决方法是按照 jhorman 的描述创建一个宏,但在按下 ';' 之后运行代码 -> 重新格式化代码。然后停止录制并在设置/键盘映射/宏下将快捷方式“Shift+逗号”添加到宏。现在,当在代码中按 Shift + Comma 键入分号时,代码也将被重新格式化。唯一的缺点:每次按下 Shift+Comma 时都会重新格式化整个代码。对于大文件,这可能需要一秒钟。

此解决方法仅在您只有一个行终止符(如分号)时才有效。要自动重新格式化多行终止符(右括号,分号,...)上的代码,您需要将快捷方式添加到“设置”->“键盘映射”->“主菜单”->“代码”->“重新格式化代码”直接。在这种情况下,无需创建宏。

据我所知,仅格式化当前行是不可能的。

【讨论】:

以上是关于使 IntelliJ 在行完成时重新格式化当前行的主要内容,如果未能解决你的问题,请参考以下文章

IntelliJ 在运行时自动重新格式化代码

如何使用IntelliJ IDEA来重构代码

IntelliJ IDEA常用快捷键

Intellij with git - 内容仅在行分隔符中有所不同

“全栈2019”Java第八章:IntelliJ IDEA设置注释不显示在行首

推荐IntelliJ IDEA插件JRebel,支持Java项目热更新,省去不断重启服务的烦恼