【问题标题】:Rearrange method parameters in IntelliJ with keyboard shortcut使用键盘快捷键重新排列 IntelliJ 中的方法参数
【发布时间】:2016-02-12 09:00:57
【问题描述】:

在 IntelliJ 中,我可以通过按 + Shift + (或 + Shift + )。

我想知道是否有捷径可以轻松更改方法参数的顺序,以便

public void sth(String a, String b) {...}

会变成

public void sth(String b, String a) {...}

使用键盘快捷键(假设我的光标位于其中一个参数上)。

如果 IntelliJ 只对参数重新排序,这对我来说就足够了。也就是说,这不需要触发整个重构>更改方法签名的事情。

【问题讨论】:

  • 当有三个或更多参数时,它应该如何表现? :)
  • 假设我的光标在第二个参数上:向上移动,它应该成为第一个。向下移动,它应该成为最后一个。
  • 一次向上或向下移动一个参数!我很想能够做到这一点!
  • Ctrl+F6 然后Alt+UpAlt+Down 移动参数?
  • 是的,比你想象的更频繁。当我开始充实一个方法时,我通常Alt-Enter 在需要时添加其他参数。完成后,我将重新排列参数以更符合逻辑的顺序。另外,我认为为方法调用也有这个快捷方式会非常好。 (伙计,在使用具有超过 4 或 5 个相同类型参数的旧 API 时,我多久会弄错顺序!呃!)

标签: java intellij-idea


【解决方案1】:

从 IDEA 16 EAP 开始,就有了相应的行动。它在菜单中:

代码 |向左/向右移动元素

键盘快捷键是Alt+Ctrl+Shift+Left/Right (Alt kbd>+Cmd+Shift+Left/Right 对于 OSX)。

更多详情请见http://blog.jetbrains.com/idea/2016/01/intellij-idea-16-eap-improves-editor-and-vcs-integration/

【讨论】:

  • 很好,但是 Lyubomyr Shaydariv 回答:stackoverflow.com/a/35359882/4024146 要好得多,因为它确实重构并更改了对参数更改的依赖关系。这只是切换此方法的参数,而不是来自其他方法的方法调用。您不需要为它制作宏,只需 CTRL+F6 并使用 ALT + ↓
  • @mtrakal 他们是两个不同的东西。当我编写一个方法时,我不需要重量级(慢速)重构——我只想轻松地移动参数。这个问题的真正问题是我经常在不同的行上有参数,所以这不起作用。 (我真的想要一个上一个移动和下一个移动,而不是左右。)
  • 如果在不同方法的多个参数上有多个光标,可以一起移动。
  • 注意:这不会改变参数的任何使用的顺序!要非常小心。
【解决方案2】:

我不确定在 IDEA 中是否可行,但您可以尝试将编辑器宏用于双参数方法:

  • 编辑器 -> 宏 -> 开始宏录制
  • 录制宏:
    • Ctrl+F6 打开更改签名对话框
    • Alt+交换第一个和第二个参数
    • Tab 停用 Parameters 选项卡并让 Refactor 按钮获得焦点
    • 回车在执行重构时关闭对话框
  • Editor -> Macros -> Stop Macro Recording 并为你的宏命名,比如“交换方法参数 1 和 2”。

然后通过 Editor -> Macros 菜单访问您的宏,或在 Settings -> Keymap -> Main menu/Edit/Macros/Swap 方法参数 1 中为其分配自定义快捷方式和 2。对我来说,这看起来是一种非常肮脏且与上下文无关的方式,但也许它可以帮助你一点。

【讨论】:

  • 这解决了我重构大约 500~ 个方法的问题。
【解决方案3】:

在 Ubuntu 18.04 上,默认快捷键是 Ctrl+Alt+Shift+Super+Left/Right 来将参数向左或向右移动。

这是因为它被设置为不会与一些新的操作系统级快捷方式发生冲突

【讨论】:

  • 谢谢,虽然它需要手指操,但这比需要单独绑定一个键要好得多。
  • 谢谢。在代码菜单中显示为 C+A+S+left,但显示为灰色。在看到这个之前,我一直在想为什么。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-01-10
  • 2012-11-20
  • 2019-08-12
  • 1970-01-01
  • 2016-09-29
  • 2011-10-29
  • 2017-04-30
相关资源
最近更新 更多