PhpStorm或其他JetBrains IDE中的保存时代码重新格式化

68
如何设置代码在保存时自动重新格式化?这样我就不必每次都按Ctrl+Alt+L了。请注意,不能改变原来的意思。

3
接受的答案不错,但对于大多数人来说,最好使用“save actions”插件。https://dev59.com/QHNA5IYBdhLWcg3wdtz5 - CodeMonkey
6个回答

134

实际上是可以的。
这个想法是记录一个非常简单的宏,选择所有行(Ctrl+A),格式化(Ctrl+Alt+L),取消选择(上下箭头)并保存文件(Ctrl+S),然后将此宏绑定到Ctrl+S

免费更改键盘快捷键“全部保存”

  1. 打开 文件 > 设置;
  2. 搜索 “keymap” 并打开它;
  3. 搜索 “全部保存” 并双击操作 “全部保存”;
  4. 选择 “删除 Ctrl+S”;
  5. 再次双击 “全部保存”,选择 “添加键盘快捷键”;
  6. 选择 “Ctrl+Alt+Shift+S” 作为第一个键;
  7. 确认并退出设置。

录制宏

  1. 编辑 > 宏 > 开始宏录制;
  2. 按下 Ctrl+A,然后 Ctrl+Alt+L,然后 向上箭头,然后 向下箭头,最后按下Ctrl+Alt+Shift+S;
  3. 停止录制宏,点击页面右下角的停止按钮;
  4. 给这个宏取一个名字,比如“格式化和保存”;

将Ctrl+S分配给“格式化和保存”

  1. 打开 文件 > 设置;
  2. 搜索 “keymap” 并打开它;
  3. 搜索 “格式化和保存” 并双击操作 “格式化和保存”;
  4. 选择 “添加键盘快捷键”;
  5. 选择 “Ctrl+S” 作为第一个键;
  6. 确认并退出设置。

最后,尽情享受PhpStorm吧!


28
宏并不需要那么长:Ctrl+Alt+L 和 Ctrl+Alt+S同样可以做到相同的事情。 - Saugat
5
请将 "Ctrl+Alt+S" 替换为 "Ctrl+Alt+Shift+S",因为后者没有冲突。 - goyote
1
有关编程的内容翻译:格式化所有目录文件的有用提示:首先在“项目”窗口中选择目录,然后从“代码”菜单中选择“重新格式化代码”。 - R Sun
1
这个特性能和PhpStorm的自动保存功能一起使用吗?也就是说,它可以在不点击任何热键的情况下自动保存和自动格式化代码吗? - Dr. House
@Mkey,我测试了一下PhpStorm 2020.3,发现自动保存和自动格式化功能无法正常工作,需要手动点击热键才能生效。:( - Subramanya Rao
显示剩余2条评论

22

19

设置 -> 工具 -> 保存时执行的操作 -> 重新格式化代码


6

另一件与此宏结合非常有帮助的事情是

展示重构文件对话框

如果您只想重新格式化您刚刚更改的代码,您可以设置以下选项:

只有 VCS 更改文本

该对话框可以通过以下快捷键打开:CTRL+ALT+SHIFT+L


1
谢谢。宏很有用,但这不是我需要的。大多数时候,我想重新格式化新/更改的代码。 - George Marian

1
在 PHPStorm 2020 及更高版本中检查并发现了一个名为 Save Action 的插件。但一定要配置新项目和现有项目。
您还可以导出 PHPStorm 设置,然后解压缩并替换/创建以下文件:-
  1. 设置/选项/macro.xml 下的宏文件
    <application>
    <component name="ActionMacroManager">
    <macro name="Format & Save">
    <action id="ReformatCode"/>
    <action id="SaveAll"/>
    </macro>
    </component>
    </application>
  1. 设置/按键映射/默认复制.xml
    <keymap version="1" name="Default copy" parent="Default for XWin">
    <action id="DBNavigator.Actions.SourceEditor.Save"/>
    <action id="Macro.Format & Save">
    <keyboard-shortcut first-keystroke="ctrl s"/>
    </action>
    <action id="SaveAll">
    <keyboard-shortcut first-keystroke="shift ctrl alt s"/>
    </action>
    </keymap>

现在将其压缩并导入,每当您按下ctrl+s时,自动进行代码格式化。

0

从v2017.2.4开始,CTRL + ALT + L无法使用。请改用alt + F8

解决方案: 使用:ALT + F8来格式化代码。

当按照Luca Mastrostefano的描述创建宏时,请使用: alt + F8进行格式化,然后使用ctrl + alt + s进行保存。


2
这实际上是特定于 PhpStorm 中的“Visual Studio”键映射。 - Webber

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接