IntelliJ Organizar Importaciones

254

¿IntelliJ tiene una función Organizar importaciones similar a la de Eclipse? Lo que tengo es un archivo Java con varias clases que faltan sus importaciones. Ejemplo:

package com.test;
public class Foo {
    public Map map;
    public JTable table;
}

En Eclipse podría usar Organize Imports y automáticamente importaría ambos java.util.Mapy javax.swing.JTable. En IntelliJ tengo que ir individualmente a cada clase, seleccionarla y luego presionar Alt-Enter. Hay una función Optimizar importaciones, pero todo lo que parece hacer es ordenar y expandir las importaciones existentes .

Estoy usando IntelliJ 10.5.

Steve Kuo
fuente
17
Todavía no puedo encontrar una alternativa a Ctrl + Shift + O de
eclipse
16
¿Has probado Ctrl + Alt + O? Agrega automáticamente cualquier importación única y le solicita que elija entre importaciones similares presionando Alt + Entrar. FYI, estoy usando IntelliJ 12.
divesh premdeep
66
Excepto Ctrl + Alt + O no devolverá una importación que no puede decidir ... Por ejemplo, si hay varias importaciones para elegir (que estoy tratando de averiguar cómo elegirlas, ya que no tienen el símbolo de carácter que sugieren en mi teclado), luego dirá "Importación no utilizada no encontrada".
Azurespot

Respuestas:

356

Ctrl+ Alt+ O( Código → Optimizar importaciones ... ) es lo que está buscando, tanto en Windows / Linux como en mapas de teclas de macOS.

Dice "Optimizar", pero, si está configurado para hacerlo, también:

  • organizar importaciones existentes
  • eliminar importaciones innecesarias
  • agregar nuevas importaciones requeridas
  • agregue importaciones inequívocas sobre la marcha

Puede ajustar la configuración de importación automática en " Configuración → Editor → General → Importación automática " como lo describe Dave .

También puede modificar cómo se ordenan automáticamente las importaciones en " Configuración → Editor → Estilo de código → Java → Importaciones "

Ryan Stewart
fuente
14
Sigo recibiendo votos negativos transitorios, probablemente debido a la confusión. He actualizado mi respuesta a explicar cómo esto no satisface la pregunta original.
Ryan Stewart
44
No funciona cuando los nombres de paquetes en una dependencia han cambiado. Incluso cuando todavía no es ambiguo, tengo que hacer clic en el nombre de clase y presionar Alt + Enter e Enter, para cada clase afectada ...
Superole
77
En Mac también es CTRL + ALT + O (al menos en Android Studio 1.0)
jlapoutre
99
Me parece bastante estúpido que la opción "agregar importaciones no ambiguas sobre la marcha" no esté marcada por defecto. ¿Quién prefiere hacer esto solo, clase por clase?
toni07
3
Debe ser Settings → Editor → General → Auto Import?
Steve Pitchers
100

Debajo "Settings -> Editor -> General -> Auto Import"hay varias opciones con respecto a las importaciones automáticas. Solo se pueden agregar automáticamente importaciones no ambiguas; Esta es una de las opciones.

Dave Newton
fuente
No hay suficientes votos para esta respuesta. Sí, la respuesta de @ ryan-stewart responde completamente a la pregunta del OP, pero esta respuesta proporciona la solución a la pregunta que el OP no hizo: ¿cómo soluciono esto para siempre, no solo cómo lo soluciono esta vez?
Jonathan Landrum
77
Es ahoraSetting > Editor -> General > Auto Import
Lucky
Lo arreglé añadiendo el chequeclasses
Andrea Bergonzo
no funciona a nivel de paquete / carpeta / proyecto, ¿verdad? Hice un 'ctrl + alt + o' en project, src, java e hice mvn clean test ... todavía recibí 'símbolo no encontrado' para refactor reciente.
viejo monje
@ old-monk Funciona con lo que el editor sabe; Es más probable que algo en el refactor esté roto, pero imposible de decir.
Dave Newton
44

La solución simple y corta funcionó para mí.

Vaya a File-> Settings-> Editor-> Auto Import-> Java(panel izquierdo) y haga lo siguiente: Seleccione la casilla de verificación " Add unambigious imports on the fly" y "Optimize imports on the fly "

Consulte esto

ingrese la descripción de la imagen aquí

Rohit Mandiwal
fuente
no funciona a nivel de paquete / carpeta / proyecto, ¿verdad? Hice un 'ctrl + alt + o' en project, src, java e hice mvn clean test ... todavía recibí 'símbolo no encontrado' para refactor reciente.
viejo monje
44

Además de Optimize Importsy Auto Import, que fueron señalados por @ dave-newton y @ ryan-stewart en respuestas anteriores, vaya a:

  • IDEA <= 13: File menu > Settings > Code Style > Java > Imports
  • IDEA> = 14: File menu > Settings > Editor > Code Style > Java > Imports(¡gracias a @ mathias-bader por la pista!) Diálogo de configuración

Allí puede ajustar la agrupación y el pedido o las importaciones, " Class count to use import with '*'", etc.

Nota:
desde 13 IDEA puede configurar los ajustes por defecto del proyecto de la idea de "página de inicio": Configure > Project defaults > Settings > .... Luego, cada nuevo proyecto tendrá la configuración predeterminada: ingrese la descripción de la imagen aquí

t0r0X
fuente
77
Desde IntelliJ IDEA 14, esto se puede encontrar enSettings > Editor > Code Style > Java > Imports
Mathias Bader
@ mathias-bader gracias por señalar el cambio de páginas de "configuración"
t0r0X
1
Felicitaciones por las capturas de pantalla! Quiéralo. ¡Un visual vale más que 1,000 palabras!
atom88
42

Julio de 2015: he concluido que IntelliJ no admite la resolución automática de importaciones con una sola función. "Organizar importaciones" simplemente elimina las importaciones no utilizadas, no resuelve los tipos no importados. Control-Space resuelve un solo tipo no importado. No existe una sola acción para resolver las importaciones de todos los tipos.

Steve Kuo
fuente
11
Esta ha sido mi experiencia. Frustrante.
ayahuasca
1
Esto también me hizo tropezar. Vea la solución de @ rohit a continuación. Archivo -> Configuración -> Editor -> General -> Importación automática -> Java y marque las tres opciones que ha resaltado. Esto funcionó para mí.
Carl Rossman
1
Es extraño que esta sea la respuesta aceptada, ya que es altamente inexacta. Ver stackoverflow.com/a/8609200/839646 .
Ryan Stewart
1
@RyanStewart no resuelve las importaciones ambiguas de la misma manera que lo hace Eclipse. Eclipse aparecerá cuando sea ambiguo, IntelliJ simplemente lo ignorará.
Steve Kuo
9

navegue hasta el archivo donde desea organizar las importaciones o simplemente haga clic en el paquete completo o incluso haga clic en el proyecto que presione CTRL + ALT + O

Khachatur Stepanyan
fuente
1
Esta respuesta ya existe . Usted podría considerar la adición de la información adicional ( "usted puede hacer clic en el paquete entero o incluso haga clic en el proyecto que presione CTRL + ALT + O") como un comentario a la respuesta
Zach Lysobey
9

En IntelliJ 14, la ruta a la configuración de Importación automática ha cambiado. El camino es

IntelliJ IDEA-> Preferencias-> Editor-> General-> Importación automática

luego siga las instrucciones anteriores, haga clic en Agregar importaciones inequívocas sobre la marcha

No puedo imaginar por qué esto no se establecería de forma predeterminada.

Joe
fuente
3

Atajo para Mac: (ctrl + opt + o)

Tiago Gaspar
fuente
1
No, su control + opción + o
Deividi Cavarzan
En realidad, esta respuesta es la misma clave que la más votada en esta pregunta.
Deividi Cavarzan
2

Simplemente mueva el mouse sobre la vista que falta y presione las teclas en Windows ALT + ENTER

Baig
fuente
2

ALT + ENTRAR estaba lejos del hábito del eclipse, en IDEA para mí, el mouse sobre no funcionó, por lo setting>IDESetting>Keymap>Show intention actions and quick-fixesque lo cambié a clic izquierdo del mouse, ¡No era compatible con el mouse! pero el clic izquierdo del mouse estaba bien y estaba más cerca de mi intención.

Ali.Mojtehedy
fuente
2

Finalmente creé una solución a este problema frustrante. No estoy completamente satisfecho con la solución, pero es mejor que nada.

Básicamente, después de pegar el código fuente y corregir las importaciones sin ambigüedad, solo presione F2para resaltar el siguiente error del compilador. Si el error actual es un error de falta de importación, presione Alt+Enter, luego Enterpara seleccionar la Importopción, luego elija la importación correcta. Luego, presione F2nuevamente.

Martin Vysny
fuente
1

Ese complemento realizará automáticamente la acción "organizar importación" al guardar el archivo: https://github.com/dubreuia/intellij-plugin-save-actions .

Para instalar: "Archivo> Configuración> Complementos> Buscar repositorios ...> Buscar 'Guardar acciones'> Categoría 'Herramientas de código'". Luego active la acción de guardar "organizar importación".

Alexandre DuBreuil
fuente
Juzgar una herramienta en una característica (faltante) podría no considerarse como un juicio reflexivo. Si el complemento no funciona, no dude en rellenar un error allí: github.com/dubreuia/intellij-plugin-save-actions/issues .
Alexandre DuBreuil
55
Tienes razón, no es un juicio reflexivo en situaciones normales. Sin embargo, es una frustración expresada por una característica básica increíblemente faltante de una herramienta definitiva. Pasé 2 horas en agonía tratando de hacer que esta característica simple y esencial funcione, sin éxito. Y lo que lo hizo peor, en lugar de ser una función integrada de forma predeterminada (como cuán elegantemente lo hace Eclipse), ¡realmente se necesitaba escribir un complemento para lograrlo! Es como construir un jumbo jet más avanzado y complejo pero sin aire acondicionado, en cambio, ¡cada pasajero recibe un abanico de papel! Me llevó 1 segundo en Eclipse.
DhafirNz
1
En realidad, el uso de este complemento resaltó un problema y una debilidad en IntelliJ. Tuve que deshabilitar este complemento porque secuestra IntelliJ en cada guardado automático, lo que lo vuelve inutilizable y lento. Esto se debe a que intenta hacer todas las acciones de guardar cada vez que escribo algo. Si el guardado automático se puede desactivar de alguna manera, este complemento será realmente muy útil.
DhafirNz
0

Si solo falta una importación (el nombre de la clase tiene un subrayado rojo), haga clic y desplace el mouse sobre ella, y aparecerá una declaración de importación sugerida en azul. Si presiona Alt + Enter en este punto, la importación se incluirá en el archivo y el subrayado rojo debería desaparecer.

Zorayr
fuente
Bastante seguro de que esta es una función multiplataforma
Zach Lysobey
0

Ir a Ayuda -> Buscar acción (el atajo para esto es Cntl + Shift + A) y escribir Optimizar importaciones (el atajo para esto es Cntl + Alt + O)

Manga Rao
fuente