IntelliJ จัดระเบียบการนำเข้า


254

IntelliJ มีคุณสมบัติ Organize Imports เหมือนกับที่อยู่ใน Eclipse หรือไม่? สิ่งที่ฉันมีคือไฟล์ Java ที่มีหลายคลาสขาดการนำเข้า ตัวอย่าง:

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

ในคราสฉันสามารถใช้จัดระเบียบการนำเข้าโดยอัตโนมัติและจะนำเข้าทั้งสองและjava.util.Map javax.swing.JTableใน IntelliJ ฉันต้องไปทีละชั้นแล้วเลือกจากนั้นกด Alt-Enter มีคุณสมบัติเพิ่มประสิทธิภาพการนำเข้า แต่สิ่งที่ดูเหมือนว่าจะทำคือเรียงลำดับและขยายการนำเข้าที่มีอยู่

ฉันใช้ IntelliJ 10.5


17
ฉันยังไม่พบทางเลือกอื่นสำหรับ Ctrl + Shift + O ของ
eclipse

16
คุณลอง Ctrl + Alt + O แล้วหรือยัง มันจะเพิ่มการนำเข้าที่ไม่ซ้ำกันโดยอัตโนมัติและแจ้งให้คุณเลือกระหว่างการนำเข้าที่คล้ายกันโดยกด Alt + Enter FYI ฉันใช้ IntelliJ 12
divesh premdeep

6
ยกเว้น Ctrl + Alt + O จะไม่คืนค่าการนำเข้าที่ไม่สามารถตัดสินใจได้ ... ตัวอย่างเช่นหากมีการนำเข้าหลายรายการให้เลือก (ซึ่งฉันกำลังพยายามหาวิธีเลือกพวกเขาเนื่องจากฉันไม่ได้ มีสัญลักษณ์อักขระที่แนะนำบนแป้นพิมพ์ของฉัน) จากนั้นจะพูดว่า "ไม่พบการนำเข้าที่ไม่ได้ใช้"
Azurespot

คำตอบ:


356

Ctrl+ Alt+ O( Code → Optimize Imports ... ) คือสิ่งที่คุณกำลังมองหาทั้งบน Windows / Linux และปุ่มกด macOS

มันระบุว่า "เพิ่มประสิทธิภาพ" แต่หากกำหนดค่าให้ทำเช่นนั้นจะยัง:

  • จัดระเบียบการนำเข้าที่มีอยู่
  • ลบการนำเข้าที่ไม่จำเป็น
  • เพิ่มการนำเข้าที่ต้องการใหม่
  • เพิ่มการนำเข้าที่ชัดเจนในทันที

คุณสามารถปรับแต่งรถยนต์นำเข้าการตั้งค่าภายใต้หัวข้อ " การตั้งค่า→แก้ไข→ทั่วไป→รถยนต์นำเข้า " ตามที่อธิบายไว้โดยเดฟ

นอกจากนี้คุณยังสามารถปรับเปลี่ยนวิธีการนำเข้าอัตโนมัติได้ภายใต้ " การตั้งค่า→ตัวแก้ไข→สไตล์โค้ด→ Java →นำเข้า "


14
ฉันยังคงได้รับ downvotes ชั่วคราวอาจเกิดจากความสับสน ผมได้ปรับปรุงคำตอบของฉันเพื่ออธิบายวิธีการนี้ไม่ตอบสนองคำถามเดิม
Ryan Stewart

4
มันไม่ทำงานเมื่อมีการเปลี่ยนแปลงชื่อแพคเกจในการพึ่งพา แม้ในขณะที่ยังไม่ชัดเจนฉันต้องคลิก ClassName กด Alt + Enter และ Enter สำหรับแต่ละชั้นเรียนที่ได้รับผลกระทบ ...
Superole

7
สำหรับ Mac มันคือ CTRL + ALT + O เช่นกัน (อย่างน้อยใน Android Studio 1.0)
jlapoutre

9
ฉันคิดว่ามันค่อนข้างโง่ที่ตัวเลือก "เพิ่มการนำเข้าที่ชัดเจนในทันที" ไม่ได้ถูกตรวจสอบโดยค่าเริ่มต้น ใครที่ชอบทำสิ่งนี้ด้วยตนเอง
toni07

3
ควรเป็นSettings → Editor → General → Auto Importอย่างไร
Steve Pitchers

100

ภายใต้"Settings -> Editor -> General -> Auto Import"มีตัวเลือกมากมายเกี่ยวกับการนำเข้าอัตโนมัติ สามารถเพิ่มการนำเข้าที่ไม่คลุมเครือเท่านั้นได้โดยอัตโนมัติ นี่คือหนึ่งในตัวเลือก


โหวตไม่เพียงพอสำหรับคำตอบนี้ ใช่คำตอบของ @ ryan-stewart ตอบคำถามของ OP อย่างเต็มที่ แต่คำตอบนี้ให้คำตอบสำหรับคำถามที่ OP ไม่ได้ถาม: ฉันจะแก้ไขปัญหานี้ได้อย่างไรตลอดกาลไม่ใช่แค่ฉันจะแก้ไขได้ในครั้งเดียว
Jonathan Landrum

7
ได้แล้วตอนนี้Setting > Editor -> General > Auto Import
โชคดี

ฉันแก้ไขแล้วว่าเพิ่มการตรวจสอบclasses
Andrea Bergonzo

มันใช้งานไม่ได้กับแพ็คเกจ / โฟลเดอร์ / ระดับโปรเจ็กต์ใช่ไหม? ฉันทำ 'ctrl + alt + o' ในโปรเจ็กต์ src, java และทำการทดสอบ mvn ใหม่ทั้งหมด ... ฉันยังคงได้รับ 'สัญลักษณ์ไม่พบ' สำหรับ refactor ล่าสุด
พระเฒ่า

@ old-monk มันทำงานร่วมกับสิ่งที่บรรณาธิการรู้ เป็นไปได้ว่ามีบางสิ่งใน refactor เสีย แต่เป็นไปไม่ได้ที่จะพูด
Dave Newton

44

ทางออกที่ง่ายและสั้นใช้ได้สำหรับฉัน

ไปที่File-> Settings-> Editor-> Auto Import-> Java(แผงด้านซ้าย) และทำสิ่งต่าง ๆ ด้านล่าง: เลือกกล่องกาเครื่องหมายสำหรับ " Add unambigious imports on the fly" และ " Optimize imports on the fly"

แนะนำสิ่งนี้

ป้อนคำอธิบายรูปภาพที่นี่


มันใช้งานไม่ได้กับแพ็คเกจ / โฟลเดอร์ / ระดับโปรเจ็กต์ใช่ไหม? ฉันทำ 'ctrl + alt + o' ในโปรเจ็กต์ src, java และทำการทดสอบ mvn ใหม่ทั้งหมด ... ฉันยังคงได้รับ 'สัญลักษณ์ไม่พบ' สำหรับ refactor ล่าสุด
พระเฒ่า

44

นอกเหนือไปOptimize ImportsและAuto Importซึ่งชี้ให้เห็นโดย @ dave นิวตันและ @ ryan-สจ๊วตในคำตอบก่อนหน้านี้ไปที่:

  • IDEA <= 13: File menu > Settings > Code Style > Java > Imports
  • IDEA> = 14: File menu > Settings > Editor > Code Style > Java > Imports(ขอบคุณ @ mathias-bader สำหรับคำใบ้!) กล่องโต้ตอบการตั้งค่า

คุณสามารถปรับแต่งการจัดกลุ่มและการสั่งซื้อหรือนำเข้า " Class count to use import with '*'" ฯลฯ ได้อย่างแม่นยำ

หมายเหตุ:
ตั้งแต่ 13 IDEA คุณสามารถกำหนดค่าการตั้งค่าเริ่มต้นโครงการจากความคิด Configure > Project defaults > Settings > ..."หน้าเริ่มต้น" จากนั้นทุกโครงการใหม่จะมีการตั้งค่าเริ่มต้นเหล่านั้น: ป้อนคำอธิบายรูปภาพที่นี่


7
ตั้งแต่ IntelliJ IDEA 14 สามารถพบได้ที่Settings > Editor > Code Style > Java > Imports
Mathias Bader

@ mathias-bader ขอบคุณสำหรับการชี้ให้เห็นการเปลี่ยนแปลงหน้า "การตั้งค่า"
t0r0X

1
รุ่งโรจน์สำหรับภาพหน้าจอ! รักมัน ภาพมีค่า 1,000 คำ!
atom88

42

กรกฎาคม 2015 - ฉันได้ข้อสรุปแล้วว่า IntelliJ ไม่สนับสนุนการแก้ไขการนำเข้าด้วยฟังก์ชั่นเดียวโดยอัตโนมัติ "จัดการการนำเข้า" เพียงแค่ลบการนำเข้าที่ไม่ได้ใช้ออกไป แต่ไม่สามารถแก้ไขประเภทที่ไม่ได้นำเข้า พื้นที่ควบคุมแก้ไขประเภทที่ไม่ได้นำเข้าเดียว ไม่มีการดำเนินการเดียวเพื่อแก้ไขการนำเข้าทุกประเภท


11
นี่เป็นประสบการณ์ของฉัน ที่น่าผิดหวัง
ayahuasca

1
สิ่งนี้ทำให้ฉันสะดุด ดูวิธีแก้ปัญหาของ @ rohit ด้านล่าง ไฟล์ -> การตั้งค่า -> แก้ไข -> ทั่วไป -> นำเข้าอัตโนมัติ -> Java และตรวจสอบตัวเลือกทั้งสามที่เขาเน้นไว้ สิ่งนี้ใช้ได้สำหรับฉัน
Carl Rossman

1
แปลกที่นี่เป็นคำตอบที่ยอมรับเพราะมันไม่ถูกต้องสูง ดูstackoverflow.com/a/8609200/839646
Ryan Stewart

1
@RyanStewart ไม่สามารถแก้ไขการนำเข้าที่คลุมเครือแบบเดียวกับที่ Eclipse ทำ Eclipse จะแสดงข้อความเมื่อไม่ชัดเจน IntelliJ จะเพิกเฉย
Steve Kuo

9

นำทางไปยังไฟล์ที่คุณต้องการจัดระเบียบการนำเข้าหรือเพียงคลิกที่แพ็คเกจทั้งหมดหรือแม้แต่คลิกที่โครงการมากกว่ากดCTRL + ALT + O


1
คำตอบนี้มีอยู่แล้ว คุณสามารถลองเพิ่มข้อมูลเพิ่มเติม ("คุณสามารถคลิกที่แพ็คเกจทั้งหมดหรือคลิกที่โครงการมากกว่ากด CTRL + ALT + O") เพื่อแสดงความคิดเห็นต่อคำตอบนั้น
Zach Lysobey

9

ใน IntelliJ 14 เส้นทางไปยังการตั้งค่าสำหรับการนำเข้าอัตโนมัติได้เปลี่ยนไป เส้นทางคือ

IntelliJ IDEA-> Preferences-> Editor-> General-> Auto Import

จากนั้นทำตามคำแนะนำด้านบนคลิกเพิ่มการนำเข้าที่ชัดเจนในทันที

ฉันไม่สามารถจินตนาการได้ว่าทำไมค่าเริ่มต้นนี้จะไม่ถูกตั้งค่า


3

ทางลัดสำหรับ Mac: (ctrl + opt + o)


1
ไม่การควบคุม + ตัวเลือก + o
Deividi Cavarzan

จริงๆแล้วคำตอบนี้เป็นปุ่มเดียวกับที่โหวตมากที่สุดในคำถามนี้
Deividi Cavarzan

2

เพียงเลื่อนเมาส์ไปที่มุมมองที่หายไปและกดปุ่มบนหน้าต่าง ALT + ENTER


2

ALT + ENTER อยู่ไกลจากนิสัยคราสใน IDEA สำหรับฉันเม้าส์ไม่ทำงานดังนั้นในsetting>IDESetting>Keymap>Show intention actions and quick-fixesฉันเปลี่ยนมันเป็นเม้าส์คลิกซ้ายมันไม่รองรับเม้าส์! แต่การคลิกเมาส์ซ้ายก็โอเคและใกล้เคียงกับความตั้งใจของฉันมากที่สุด


2

ในที่สุดฉันก็สร้างวิธีแก้ไขปัญหาที่น่าผิดหวังนี้ ฉันไม่ได้มีความสุขกับวิธีแก้ปัญหาอย่างสมบูรณ์ แต่ก็ดีกว่าไม่มีอะไร

โดยทั่วไปหลังจากที่คุณวางซอร์สโค้ดและการนำเข้าที่แน่นอนได้รับการแก้ไขเพียงแค่กด F2เพื่อไฮไลต์ข้อผิดพลาดคอมไพเลอร์ต่อไป หากข้อผิดพลาดปัจจุบันเป็นข้อผิดพลาดที่ขาดหายไปในการนำเข้ากดAlt+Enterจากนั้นEnterเพื่อเลือกImportตัวเลือกจากนั้นเลือกการนำเข้าที่ถูกต้อง จากนั้นกดF2อีกครั้ง


1

ปลั๊กอินนั้นจะทำการกระทำโดยอัตโนมัติ "จัดการการนำเข้า" ในการบันทึกไฟล์: https://github.com/dubreuia/intellij-plugin-save-actions

วิธีติดตั้ง: "ไฟล์> การตั้งค่า> ปลั๊กอิน> เรียกดูที่เก็บ ... > ค้นหา 'บันทึกการกระทำ'> หมวดหมู่ 'เครื่องมือโค้ด'" จากนั้นเปิดใช้งานการดำเนินการบันทึก "จัดการการนำเข้า"


การตัดสินเครื่องมือหนึ่งคุณลักษณะ (ที่หายไป) อาจไม่ถือเป็นการพิจารณาที่รอบคอบ หากปลั๊กอินจะไม่ได้ทำงานไม่ลังเลที่จะเติมเต็มข้อผิดพลาดที่นั่นgithub.com/dubreuia/intellij-plugin-save-actions/issues
Alexandre DuBreuil

5
คุณพูดถูกมันไม่ใช่การตัดสินใจที่รอบคอบในสถานการณ์ปกติ มันคือ - อย่างไรก็ตาม - ความยุ่งยากในการใช้งานฟีเจอร์พื้นฐานที่ขาดหายไปอย่างน่าทึ่งจากเครื่องมือที่ดีที่สุด ฉันใช้เวลา 2 ชั่วโมงกับความเจ็บปวดที่พยายามทำให้คุณสมบัติที่จำเป็นและใช้งานง่ายนี้ไม่ประสบความสำเร็จ และสิ่งที่ทำให้แย่ลงแทนที่จะเป็นฟีเจอร์ที่มีอยู่แล้วภายใน (เช่นวิธีที่ Eclipse ทำอย่างสง่างาม) ปลั๊กอินที่จำเป็นต้องเขียนเพื่อให้บรรลุนั้น! มันเหมือนกับการสร้างความทันสมัยและเจ็ทจัมโบ้ที่ซับซ้อนที่สุด แต่ไม่มีเครื่องปรับอากาศแทนผู้โดยสารแต่ละคนจะได้รับกระดาษพัดลม! ใช้เวลา 1 วินาทีใน Eclipse
DhafirNz

1
ที่จริงแล้วการใช้ปลั๊กอินนี้เน้นปัญหาและจุดอ่อนใน IntelliJ ฉันต้องปิดการใช้งานปลั๊กอินนี้เพราะมันไฮแจ็ค IntelliJ ในทุกการบันทึกอัตโนมัติทำให้ไม่สามารถใช้งานได้และช้า นี่เป็นเพราะมันพยายามทำการบันทึกทั้งหมดที่ฉันพิมพ์บางอย่าง หากปิดการบันทึกอัตโนมัติอย่างใดปลั๊กอินนี้จะมีประโยชน์มาก
DhafirNz

0

หากคุณขาดการนำเข้าเพียงครั้งเดียว (ชื่อคลาสมีขีดเส้นใต้สีแดง) ให้คลิกและเลื่อนเมาส์ไปเหนือมันและคำสั่งการนำเข้าที่แนะนำสีน้ำเงินจะปรากฏขึ้น หากคุณกดปุ่ม Alt + Enterณ จุดนี้การนำเข้าจะรวมอยู่ในไฟล์และขีดเส้นใต้สีแดงจะหายไป


ค่อนข้างแน่ใจว่านี่เป็นคุณสมบัติที่มีหลายแพลตฟอร์ม
Zach Lysobey

0

ไปที่ความช่วยเหลือ -> ค้นหาการกระทำ (ทางลัดสำหรับสิ่งนี้คือ Cntl + Shift + A) และพิมพ์การเพิ่มประสิทธิภาพการนำเข้า (ทางลัดสำหรับสิ่งนี้คือ Cntl + Alt + O)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.