IntelliJ Tổ chức nhập khẩu


254

IntelliJ có tính năng Nhập khẩu tổ chức tương tự như trong Eclipse không? Những gì tôi có là một tệp Java có nhiều lớp thiếu nhập khẩu của chúng. Thí dụ:

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

Trong Eclipse tôi có thể sử dụng Nhập khẩu tổ chức và nó sẽ tự động nhập cả java.util.Mapjavax.swing.JTable. Trong IntelliJ tôi phải đi riêng từng lớp, chọn nó, sau đó nhấn Alt-Enter. Có một tính năng Tối ưu hóa Nhập khẩu nhưng tất cả những gì nó có vẻ là sắp xếp và mở rộng nhập khẩu hiện có .

Tôi đang sử dụng IntelliJ 10.5.


17
Tôi vẫn không thể tìm thấy một thay thế cho nhật thực của tổ hợp phím Ctrl + Shift + O
appbootup

16
Bạn đã thử Ctrl + Alt + O chưa? Nó tự động thêm bất kỳ lần nhập duy nhất nào và nhắc bạn chọn giữa các lần nhập tương tự bằng cách nhấn Alt + Enter. FYI, tôi đang sử dụng IntelliJ 12.
divesh Premdeep

6
Ngoại trừ Ctrl + Alt + O sẽ không trả lại một lần nhập mà nó không thể quyết định ... Ví dụ: nếu có nhiều nhập để chọn (mà tôi đang cố gắng tìm ra cách chọn chúng, vì tôi không có ký hiệu ký tự mà họ đề xuất trên bàn phím của tôi), sau đó nó sẽ nói: "Không tìm thấy nhập không sử dụng".
Azurespot

Câu trả lời:


356

Ctrl+ Alt+ O( Mã → Tối ưu hóa nhập khẩu ... ) là những gì bạn đang tìm kiếm, cả trên các bản đồ phím của Windows / Linux và macOS.

Nó nói "Tối ưu hóa", nhưng, nếu được cấu hình để làm như vậy, nó cũng sẽ:

  • tổ chức nhập khẩu hiện có
  • loại bỏ nhập khẩu không cần thiết
  • thêm hàng nhập khẩu theo yêu cầu mới
  • thêm nhập khẩu rõ ràng trên bay

Bạn có thể điều chỉnh cài đặt tự động nhập trong " Cài đặt → Trình chỉnh sửa → Chung → Nhập tự động " như được mô tả bởi Dave .

Bạn cũng có thể sửa đổi cách nhập tự động theo thứ tự trong " Cài đặt → Trình chỉnh sửa → Kiểu mã → Java → Nhập khẩu "


14
Tôi tiếp tục nhận được downvote tạm thời, có thể là do nhầm lẫn. Tôi đã cập nhật câu trả lời của tôi để giải thích cách này không đáp ứng các câu hỏi ban đầu.
Ryan Stewart

4
Nó không hoạt động khi tên gói trong một phụ thuộc đã thay đổi. Ngay cả khi nó vẫn không rõ ràng, tôi phải nhấp vào ClassName nhấn Alt + Enter và Enter, cho mỗi lớp bị ảnh hưởng ...
Superole

7
Trên Mac, đó là CTRL + ALT + O (ít nhất là trong Android Studio 1.0)
jlapoutre

9
Tôi thấy khá ngu ngốc khi tùy chọn "thêm nhập khẩu rõ ràng khi đang di chuyển" không được kiểm tra theo mặc định. Ai không thích làm điều này một mình, từng lớp?
toni07

3
Có nên Settings → Editor → General → Auto Import?
Steve Pitchers

100

Dưới "Settings -> Editor -> General -> Auto Import"có một số tùy chọn liên quan đến nhập khẩu tự động. Chỉ nhập tự động rõ ràng có thể được thêm tự động; đây là một trong những lựa chọn


Không đủ phiếu bầu cho câu trả lời này. Có, câu trả lời của @ ryan-stewart trả lời đầy đủ câu hỏi của OP, nhưng câu trả lời này cung cấp giải pháp cho câu hỏi mà OP không hỏi: làm thế nào để tôi khắc phục điều này mãi mãi, không chỉ là cách tôi sửa nó một lần.
Jonathan Landrum

7
Bây giờSetting > Editor -> General > Auto Import
May mắn

Tôi đã sửa lỗi thêm séc vàoclasses
Andrea Bergonzo

Nó không hoạt động ở cấp độ gói / thư mục / dự án, phải không? Tôi đã thực hiện 'ctrl + alt + o' trên dự án, src, java và đã thực hiện kiểm tra sạch mvn ... tôi vẫn nhận được 'biểu tượng không tìm thấy' cho bộ tái cấu trúc gần đây.
thầy tu

@ old-monk Nó hoạt động với những gì biên tập viên biết về; nhiều khả năng một cái gì đó trong bộ tái cấu trúc bị hỏng, nhưng không thể nói.
Dave Newton

44

Giải pháp đơn giản và ngắn gọn làm việc cho tôi.

Chuyển đến File-> Settings-> Editor-> Auto Import-> Java(bảng bên trái) và thực hiện các thao tác bên dưới: Chọn hộp kiểm cho " Add unambigious imports on the fly" và "Optimize imports on the fly "

Tham khảo điều này.

nhập mô tả hình ảnh ở đây


Nó không hoạt động ở cấp độ gói / thư mục / dự án, phải không? Tôi đã thực hiện 'ctrl + alt + o' trên dự án, src, java và đã thực hiện kiểm tra sạch mvn ... tôi vẫn nhận được 'biểu tượng không tìm thấy' cho bộ tái cấu trúc gần đây.
thầy tu

44

Ngoài Optimize ImportsAuto Import, được chỉ ra bởi @ dave-newton và @ ryan-stewart trong các câu trả lời trước đó, hãy truy cập:

  • Ý tưởng <= 13: File menu > Settings > Code Style > Java > Imports
  • IDEA> = 14: File menu > Settings > Editor > Code Style > Java > Imports(cảm ơn @ mathias-bader về gợi ý!) Hộp thoại cài đặt

Ở đó bạn có thể tinh chỉnh nhóm và đặt hàng hoặc nhập khẩu, " Class count to use import with '*'", v.v.

Lưu ý:
vì IDEA 13, bạn có thể định cấu hình cài đặt mặc định của dự án từ "trang bắt đầu" IDEA : Configure > Project defaults > Settings > .... Sau đó, mọi dự án mới sẽ có các cài đặt mặc định đó: nhập mô tả hình ảnh ở đây


7
Kể từ IntelliJ IDEA 14, điều này có thể được tìm thấy trongSettings > Editor > Code Style > Java > Imports
Mathias Bader

@ mathias-bader cảm ơn vì đã chỉ ra các trang "cài đặt" thay đổi
t0r0X

1
Kudos cho các ảnh chụp màn hình! Yêu nó. Một hình ảnh có giá trị 1.000 từ!
nguyên tử88

42

Tháng 7 năm 2015 - Tôi đã kết luận rằng IntelliJ không hỗ trợ tự động giải quyết nhập khẩu với một chức năng duy nhất. "Tổ chức nhập khẩu" chỉ đơn giản là loại bỏ nhập khẩu không sử dụng, nó không giải quyết các loại không quan trọng. Control-Space giải quyết một loại không quan trọng. Không tồn tại một hành động duy nhất để giải quyết nhập khẩu của tất cả các loại.


11
Đây đã từng là trải nghiệm của tôi. Bực bội.
ayahuasca

1
Điều này cũng làm tôi vấp ngã. Xem giải pháp của @ rohit bên dưới. Tệp -> Cài đặt -> Trình chỉnh sửa -> Chung -> Tự động nhập -> Java và kiểm tra tất cả ba tùy chọn mà anh ấy đã tô sáng. Điều này làm việc cho tôi.
Carl Rossman

1
Điều lạ là đây là câu trả lời được chấp nhận, vì nó rất không chính xác. Xem stackoverflow.com/a/8609200/839446 .
Ryan Stewart

1
@RyanStewart nó không giải quyết nhập khẩu mơ hồ giống như cách mà Eclipse thực hiện. Eclipse sẽ nhắc khi nó mơ hồ, IntelliJ chỉ cần bỏ qua nó.
Steve Kuo

9

điều hướng đến tệp mà bạn muốn tổ chức nhập hoặc chỉ cần nhấp vào toàn bộ gói hoặc thậm chí nhấp vào dự án hơn là nhấn CTRL + ALT + O


1
Câu trả lời này đã tồn tại . Bạn có thể xem xét thêm thông tin bổ sung ("bạn có thể nhấp vào toàn bộ gói hoặc thậm chí nhấp vào dự án hơn là nhấn CTRL + ALT + O") để nhận xét cho câu trả lời đó
Zach Lysobey

9

Trong IntelliJ 14, đường dẫn đến cài đặt cho Tự động nhập đã thay đổi. Con đường là

IntelliJ IDEA-> Preferences-> Editor-> General-> Auto Nhập

sau đó làm theo các hướng dẫn ở trên, nhấp vào Thêm nhập khẩu rõ ràng khi đang di chuyển

Tôi không thể tưởng tượng tại sao điều này sẽ không được đặt theo mặc định.



2

Chỉ cần di chuyển chuột qua chế độ xem bị thiếu và nhấn phím trên windows ALT + ENTER


2

ALT + ENTER khác xa với thói quen nhật thực, trong IDEA đối với tôi, chuột không hoạt động, vì vậy setting>IDESetting>Keymap>Show intention actions and quick-fixestôi đã thay đổi nó thành nhấp chuột trái, Nó không hỗ trợ chuột! nhưng nhấp chuột trái là OK và gần nhất với ý định của tôi.


2

Cuối cùng tôi đã tạo ra một cách giải quyết xung quanh vấn đề bực bội này. Tôi không hoàn toàn hài lòng với cách giải quyết, nhưng tốt hơn là không có gì.

Về cơ bản, sau khi bạn dán mã nguồn và nhập không rõ ràng, chỉ cần nhấn F2để tô sáng lỗi trình biên dịch tiếp theo. Nếu lỗi hiện tại là lỗi thiếu nhập, nhấn Alt+Enter, sau đó Enterchọn Importtùy chọn, sau đó chọn nhập đúng. Sau đó, nhấn F2một lần nữa.


1

Plugin đó sẽ tự động thực hiện hành động "tổ chức nhập" khi lưu tệp: https://github.com/dubreuia/intellij-plugin-save-ilities .

Để cài đặt: "Tệp> Cài đặt> Plugin> Duyệt qua kho lưu trữ ...> Tìm kiếm 'Lưu hành động'> Danh mục 'Công cụ mã'". Sau đó kích hoạt hành động lưu "tổ chức nhập".


Đánh giá một công cụ trên một tính năng (thiếu) có thể không được coi là một đánh giá chu đáo. Nếu plugin không hoạt động, đừng ngần ngại điền vào một lỗi ở đó: github.com/dubreuia/intellij-plugin-save-ilities/issues .
Alexandre DuBreuil

5
Bạn nói đúng, đó không phải là một đánh giá chu đáo trong các tình huống thông thường. Đó là - tuy nhiên - một sự thất vọng có lỗ thông hơi trên một tính năng cơ bản bị thiếu tuyệt vời từ một công cụ tối thượng. Tôi đã dành 2 giờ trong đau đớn khi cố gắng để có được tính năng đơn giản, cần thiết này để làm việc, nhưng không thành công. Và điều làm cho nó tồi tệ hơn, thay vì là một tính năng được tích hợp theo mặc định (như cách Eclipse thực hiện một cách tao nhã) một plugin thực sự cần thiết để được viết để đạt được điều đó! Nó giống như xây dựng một trạng thái của máy bay phản lực khổng lồ và phức tạp nhất nhưng không có điều hòa, thay vào đó, mỗi hành khách được tặng một chiếc quạt giấy! Tôi mất 1 giây trong Eclipse.
DhafirNz

1
Trên thực tế, việc sử dụng trình cắm này đã làm nổi bật một vấn đề và điểm yếu trong IntelliJ. Tôi đã phải vô hiệu hóa trình cắm này vì nó chiếm quyền điều khiển IntelliJ trên mỗi lần lưu tự động, khiến nó không thể sử dụng được và chậm. Điều này là do nó cố gắng thực hiện tất cả các hành động lưu mỗi khi tôi gõ một cái gì đó. Nếu tự động lưu có thể bị tắt bằng cách nào đó thì plugin này thực sự sẽ rất hữu ích.
DhafirNz

0

Nếu bạn chỉ thiếu một lần nhập (tên lớp có gạch dưới màu đỏ), hãy nhấp và di chuột qua nó và một câu lệnh nhập được đề xuất màu xanh sẽ xuất hiện. Nếu bạn nhấn, Alt + Enter tại thời điểm này, quá trình nhập sẽ được bao gồm trong tệp và phần gạch chân màu đỏ sẽ biến mất.


Khá chắc chắn đây là một tính năng đa nền tảng
Zach Lysobey

0

Trợ giúp về Goto -> Tìm hành động (Cắt ngắn cho đây là Cntl + Shift + A) và nhập Tối ưu hóa nhập khẩu (Cắt ngắn cho đây là Cntl + Alt + O)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.