Reorganizar os parâmetros do método no IntelliJ com atalho de teclado

94

No IntelliJ, posso reorganizar facilmente a ordem das declarações (ou métodos inteiros para aquela parte) pressionando + Shift+ (ou + Shift+ ).

Eu queria saber se existe um atalho para alterar a ordem dos parâmetros do método tão facilmente, para que

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

se tornará

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

com o toque de um atalho de teclado (assumindo que meu cursor esteja posicionado em um dos parâmetros).

Seria o suficiente para mim se o IntelliJ apenas reordenasse os parâmetros. Ou seja, isso não precisa acionar uma coisa inteira Refatorar> Alterar assinatura do método .

Stefan Haberl
fonte
1
Como isso deve se comportar quando há três ou mais parâmetros? :)
Konstantin Yovkov
2
Digamos que meu cursor esteja no segundo parâmetro: deslocando-o para cima, ele deve se tornar o primeiro. Deslocando-o para baixo, deve se tornar o último.
Stefan Haberl
2
Um parâmetro movido para cima ou para baixo de cada vez! Eu adoraria poder fazer isso!
Per Eriksson
1
Ctrl+F6e então Alt+Upou Alt+Downpara mover um parâmetro?
Lyubomyr Shaydariv
1
Sim, com mais frequência do que você imagina. Quando começo a desenvolver um método, geralmente Alt-Enter adiciono parâmetros adicionais quando necessário. Quando terminar, reorganizo os parâmetros para que fiquem em uma ordem mais lógica. Além disso, acho que seria muito bom ter esse atalho para chamadas de método também. (Cara, quantas vezes eu entendi errado o pedido ao trabalhar com APIs legadas com mais de 4 ou 5 parâmetros do mesmo tipo! Uhg!)
Stefan Haberl

Respostas:

160

Desde IDEA 16 EAP, há uma ação para isso. Está no menu:

Código | Mover o elemento para a esquerda / direita

Os atalhos de teclado são Alt+ Ctrl+ Shift+ Left/Right( Alt+ Cmd+ Shift+ Left/Rightpara OSX).

Consulte http://blog.jetbrains.com/idea/2016/01/intellij-idea-16-eap-improves-editor-and-vcs-integration/ para obter mais detalhes.

Peter Gromov
fonte
Acho que terei que esperar um pouco mais até que IDEA 16 seja lançado para o mundo, mas isso é uma ótima notícia!
Stefan Haberl
O EAP já está à solta, você pode experimentar :) Não acho que vai demorar mais de 2 meses para o lançamento.
Peter Gromov
4
Bom, mas a resposta de Lyubomyr Shaydariv: stackoverflow.com/a/35359882/4024146 é muito melhor, porque ele refatora e altera as dependências de mudanças de parâmetros. Isso apenas muda os parâmetros para esse método, mas não as chamadas de método de outros métodos. Você não precisa fazer macro para isso, apenas CTRL + F6 e use ALT + ↓
mtrakal
1
@mtrakal são duas coisas diferentes. Quando estou compondo um método, não preciso da refatoração pesada (lenta) - quero apenas mover os parâmetros facilmente. O verdadeiro problema com este é que geralmente tenho parâmetros em linhas separadas, então isso não funciona. (Eu realmente quero um movimento anterior e próximo, não esquerda e direita.)
James Moore
Se você tiver vários cursores em vários parâmetros de métodos diferentes, eles podem ser movidos juntos.
WesternGun
16

Não tenho certeza se isso é possível no IDEA, mas você pode tentar usar macros do editor para métodos de dois parâmetros:

  • Editor -> Macros -> Iniciar Gravação de Macro
  • Grave sua macro:
    • Ctrl+ F6para abrir a caixa de diálogo Alterar assinatura
    • Alt+ para trocar o primeiro e o segundo parâmetro
    • Tabpara desativar a guia Parâmetros e deixar o botão Refatorar obter o foco
    • Enter para fechar a caixa de diálogo ao executar a refatoração
  • Editor -> Macros -> Parar gravação de macro e dar um nome à sua macro, digamos "Trocar parâmetros de método 1 e 2".

Em seguida, acesse sua macro por meio do Editor -> menu Macros ou atribua um atalho personalizado a ela em Configurações -> Mapa de teclado -> Menu principal / Editar / Macros / Parâmetros de método de troca 1 e 2 . Parece uma forma muito suja e sem contexto para mim, mas talvez possa ajudá-lo um pouco.

Lyubomyr Shaydariv
fonte
11

No Ubuntu 18.04, o atalho padrão é Ctrl + Alt + Shift + Super + Esquerda / Direita para mover um argumento para a esquerda ou direita na posição.

Isso ocorre porque está configurado para não entrar em conflito com alguns dos novos atalhos de nível de sistema operacional

Timmeh
fonte
1
obrigado, mesmo que exija ginástica de dedo, isso é muito melhor do que precisar ligar uma chave separada.
gMale