Переставити параметри методу в IntelliJ за допомогою комбінації клавіш


92

У IntelliJ я можу легко переставити порядок операторів (або цілі методи для цієї частини), натиснувши + Shift+ (або + Shift+ ).

Мені було цікаво, чи існує ярлик, щоб так само легко змінити порядок параметрів методу, так що

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

стане

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

обведенням комбінації клавіш (якщо припустити, що мій курсор розміщений за одним із параметрів).

Мені було б достатньо, якби IntelliJ просто змінив порядок параметрів. Тобто, це не повинно викликати цілу річ Refactor> Change методу підпису .


1
Як це повинно поводитися при наявності трьох або більше параметрів? :)
Костянтин Йовков

2
Скажімо, мій курсор знаходиться на другому параметрі: якщо його перемістити вгору, він повинен стати першим. Перемістивши його вниз, він повинен стати останнім.
Stefan Haberl

2
Один параметр переміщується вгору або вниз за раз! Я хотів би мати можливість зробити цей виступ!
Per Eriksson

1
Ctrl+F6а потім Alt+Upабо Alt+Downперемістити параметр?
Любомир Шайдарів

1
Так, частіше, ніж ви думаєте. Коли я починаю доопрацьовувати метод, я зазвичай Alt-Enter додаю додаткові параметри, коли це потрібно. Закінчивши, я переставляю параметри в більш логічний порядок. Крім того, я думаю, було б дуже добре мати цей ярлик і для викликів методів. (Чоловіче, як часто я неправильно отримував замовлення при роботі зі застарілими API з більш ніж 4 або 5 параметрами одного типу! Uhg!)
Stefan Haberl,

Відповіді:


155

Починаючи з IDEA 16 EAP, для цього існує дія. Це в меню:

Код | Переміщення елемента вліво / вправо

Комбінації клавіш - Alt+ Ctrl+ Shift+ Left/Right( Alt+ Cmd+ Shift+ Left/Rightдля OSX).

Докладніше див. На веб-сторінці http://blog.jetbrains.com/idea/2016/01/intellij-idea-16-eap-improves-editor-and-vcs-integration/ .


Думаю, мені доведеться почекати ще трохи, поки IDEA 16 не вийде в дику природу, але це чудова новина!
Stefan Haberl

EAP вже в дикій природі, ви можете спробувати :) Я не думаю, що це займе більше 2 місяців до випуску.
Петро Громов

4
Добре, але Любомир Shaydariv Відповідь: stackoverflow.com/a/35359882/4024146 набагато краще, тому що це робити рефакторинг і змінювати залежно від зміни параметрів. Це просто перемикає параметри для цього методу, але не виклики методів з інших методів. Вам не потрібно робити макрос для цього, просто CTRL + F6 і використовувати ALT + ↓
mtrakal

1
@mtrakal це дві різні речі. Коли я складаю метод, мені не потрібна важка (повільна) рефакторинг - я просто хочу легко переміщувати параметри. Справжня проблема цього полягає в тому, що у мене часто є параметри в окремих рядках, тому це не працює. (Я дуже хочу перейти до попереднього та перейти до наступного, а не ліворуч та праворуч.)
Джеймс Мур,

Якщо у вас є кілька курсорів на декількох параметрах різних методів, їх можна переміщати разом.
WesternGun

16

Я не впевнений, що це можливо в IDEA, але ви можете спробувати використовувати макроси редактора для двопараметричних методів:

  • Редактор -> Макроси -> Почати запис макросів
  • Запишіть свій макрос:
    • Ctrl+, F6щоб відкрити діалогове вікно Змінити підпис
    • Alt+ поміняти місцями перший і другий параметри
    • Tabщоб деактивувати вкладку Параметри і нехай кнопка Refactor сфокусується
    • Enter щоб закрити діалогове вікно при виконанні рефакторингу
  • Редактор -> Макроси -> Зупинити запис макросів і дайте ім'я вашому макросу, скажімо "Поміняти параметри методу 1 і 2".

А потім перейдіть до свого макросу через меню Редактор -> Макроси або призначте йому спеціальний ярлик у Налаштуваннях -> Карта клавіш -> Головне меню / Редагування / Макроси / Параметри методу заміни 1 і 2 . Для мене це виглядає дуже брудним і безконтекстним способом, але, можливо, це може вам трохи допомогти.


11

У Ubuntu 18.04 ярлик за замовчуванням - Ctrl + Alt + Shift + Super + Вліво / Вправо, щоб перемістити аргумент ліворуч або праворуч у потрібне положення.

Це так, як налаштовано не зіштовхуватися з деякими комбінаціями клавіш нового рівня ОС


1
дякую, хоча це вимагає гімнастики пальців, це набагато краще, ніж необхідність прив'язувати окремий ключ.
gMale
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.