Existe alguma forma (ou atalho) para importar automaticamente as classes no IntelliJ IDEA como no Eclipse?

122

No Eclipse, enquanto codifica em Java e pressione Ctrl+ Shift+ Oauto importe todas as classes automaticamente.
No NetBeans, isso é feito com Ctrl+ Shift+ I.

Existe alguma maneira de fazer isso no IntelliJ IDEA?

Eu pesquisei um atalho equivalente no google, StackOverflow, configuração do IntelliJ IDEA e no site oficial do IntelliJ Atalhos de teclado que você não pode perder

Bywronski
fonte
4
Ao procurar um comando / atalho de teclado, digite Ctrl-shift-A (ou Cmd-shift-A no Mac) e pesquise o comando. Por exemplo, aqui, digitar "importações" irá mostrar o comando "Otimizar importações" e seu atalho de teclado.
JB Nizet
2
O "Otimizar importações" não funciona adicionar as Classes
bywronski
A importação automática para classes está funcionando se você ativá-la em "Configurações> Editor> Geral> Importação automática".
Andrea Bergonzo
esta é realmente a maior falha do intellij. é uma dor. obter conflitos e fusões nas importações é estúpido, mas o intellij não pode ajudá-lo facilmente a resolvê-lo
bharal

Respostas:

103

O IntelliJ IDEA não possui uma ação para adicionar importações. Em vez disso, ele tem a capacidade de fazer conforme você digita. Se você habilitar "Adicionar importações não ambíguas imediatamente" em Configurações> Editor> Geral> Importação automática , o IntelliJ IDEA irá adicioná-las conforme você digita, sem a necessidade de quaisquer atalhos. Você também pode adicionar classes e pacotes para excluir da importação automática para tornar uma classe que você usa intensamente, que entra em conflito com outras classes do mesmo nome, inequívoca.

Para classes que são ambíguas (ou se você prefere ter a opção "Adicionar importações não ambíguas em tempo real" desativada), basta digitar o nome da classe (apenas o nome está OK, não há necessidade de se qualificar totalmente). Use o autocompletar de código e selecione a classe específica que você deseja:

insira a descrição da imagem aqui

Observe os nomes totalmente qualificados à direita. Quando seleciono o que desejo e clico em Enter, o IDEA adiciona automaticamente a declaração de importação. Isso funciona da mesma forma se eu estivesse digitando o nome de um construtor. Para métodos estáticos, você pode simplesmente continuar digitando o método que deseja. Na captura de tela a seguir, nenhuma classe "StringUtils" foi importada ainda.

insira a descrição da imagem aqui

Como alternativa, digite o nome da classe e pressione Alt+ Enterou + Enterpara "Mostrar ações de intenção e correções rápidas" e selecione a opção de importação.

Embora nunca o tenha usado, acho que o plug-in de terceiros do Eclipse Code Formatter fará o que você quiser. Ele lista "emula a otimização de importações do Eclipse" como um recurso. Veja suas instruções para mais informações. Mas, no final, suspeito que você descobrirá que os recursos integrados do IDEA funcionam bem assim que você se acostumar com seu paradigma. Em geral, IDEA usa um conceito de "desenvolver por intenções". Portanto, em vez de interromper meu trabalho de desenvolvimento para adicionar uma instrução de importação, eu apenas digito a classe que desejo (minha intenção) e o IDEA adiciona automaticamente a instrução de importação para a classe para mim.

Javaru
fonte
7
Dá muito mais trabalho quando você edita arquivos antigos.
Adam
Isso não está funcionando para mim. Quando pressiono Enter após selecionar uma classe que aparece na lista de preenchimento automático, o IntelliJ não a importa. Em vez disso, ele grava o nome totalmente qualificado da classe. Isso é muito irritante e inútil. Você sabe como consertar isso?
Rodrigo
^ a razão para esse comportamento é que a classe que eu estava tentando importar não estava no caminho de construção. Uma vez adicionado, pressionar Enter importou corretamente a classe.
Rodrigo
3
Eu tinha chegado a essa questão na esperança de encontrar um atalho para o IntelliJ. O problema é que, se eu comentar uma grande seção do código com classes, o IntelliJ remove automaticamente as importações de namespace. Agora, se eu for e descomentar o código, o IntelliJ não importará novamente os namespaces para o mesmo e se tornará uma grande dor de cabeça continuar fazendo ALT + Enter para cada um deles. Qualquer solução?
Rahul Saini
Eu concordo com @RahulSaini nisso. Não há razão para ter dois mapas principais separados para uma única atividade. Não quero e não devo ter que fazer várias coisas para realizar uma única ação. Eu diria que, neste ponto, a intellij está apenas sendo beligerante e não tem nenhuma razão real para não "organizar" as importações em vez de "otimizar" as importações. Eu realmente quero votar esta resposta, mesmo que seja tecnicamente correta.
peekay
73

Nem tudo de uma vez. Mas você pode pressionar

Alt + Enter

As pessoas presumem que só funciona quando você está em um determinado item. Mas na verdade funciona para o "próximo tipo ausente". Então, se você continuar pressionando Alt+ Enter, o IDEA corrige um após o outro até que todos sejam corrigidos.

Teknopaul
fonte
1
Presumo que você esteja se referindo aos símbolos das teclas do teclado. Eles podem ser adicionados usando a kbdtag<kbd>Alt</kbd> + <kbd>Enter</kbd>
GuiSim
1
Vá para a classe que não foi possível encontrar e pressione ⌥ + Enter. Ainda bem que rolei para baixo.
Ajak6
1
Existe uma maneira de remapear Alt+Enterpara uma combinação mais amigável? Não consegui descobrir pelo IntelliJ IDEA > Preferences > Keymapmenu.
laylaylom
1
Achei a maneira do Eclipse de perder a adição de instruções de importação mais fácil do que a do IDEA. Eu sempre fico confuso sobre onde colocar o cursor do mouse antes de digitar Alt + Enter
vikramvi
Alt + Enter em combinação com F2 (próximo erro destacado) é geralmente bastante rápido, mesmo para classes (muito) grandes.
osundblad
10

Parece que o IntelliJ IDEA importará as aulas perdidas automaticamente, e você pode importá-las pressionando Alt+ Entermanualmente.

Wuaner
fonte
8

Acho que a melhor solução, embora não seja exatamente a mesma que Eclipse / Netbeans, é alterar as configurações de 'Otimizar Importações'.

Debaixo Preferences > Editor > General > Auto Import

Conjunto Add unambiguous imports on the fly

Edit: Usando este método, quando não estão importações ambíguas, IntelliJ irá informá-lo, e então você pode usar Alt+ Entermétodo descrito na resposta por Wuaner

Acho que, quase sempre, o Import mais adequado está no topo da lista.

confortável hoje
fonte
1
@Raja Também não sei por quê. Eu sei que quando eu disse aos meus colegas de trabalho eles optaram por não usar este método, embora ... misterioso.
confortável hoje
As instruções são bem claras. Ele apenas importa as unambiguousclasses automaticamente . E eu tenho usado desde os últimos dois dias no meu projeto de mais de 3000 aulas. Funciona como um encanto. Obrigado por compartilhar.
Raja Anbazhagan
5

Não é possível importar tudo de uma vez, mas pode usar a seguinte combinação:

ALT+ Enter-> Mostrar ações de intenção e soluções rápidas.

F2 -> Próximo erro destacado.

Lyncean Patel
fonte
3

Outra opção é pedir ao IDEA para se comportar como um eclipse com teclas de atalho do eclipse. Você pode usar todos os atalhos do eclipse ativando isso.

Aqui estão as etapas:

1- Com IDEA aberto, pressione Control + ` . As opções a seguir serão exibidas.

insira a descrição da imagem aqui

2- Selecione Mapa de teclado. Você verá outro pop-up. Selecione Eclipse lá.

insira a descrição da imagem aqui

3- Agora pressioneCtrl + Shift + O . Você terminou!

Dexter
fonte
Eu tentei. Não faz "organizar importações" se comportar da maneira do Eclipse.
Florian F
0

Use control+ option+ Lpara importar automaticamente o pacote e remover automaticamente os pacotes não usados ​​no Mac

NarendraR
fonte