Những điều có thể có trong IntelliJ mà không thể có trong Eclipse?


365

Tôi đã nghe từ những người đã chuyển đổi bằng cách này và người khác thề với người này hay người kia.

Là một người hâm mộ Eclipse khổng lồ nhưng chưa có thời gian dùng thử IntelliJ, tôi rất muốn nghe từ những người dùng IntelliJ là "ex-Eclipsians" một số điều cụ thể mà bạn có thể làm với IntelliJ mà bạn không thể làm với Eclipse.

Lưu ý : Đây không phải là một câu hỏi chủ quan cũng không có nghĩa là biến thành một cuộc chiến thần thánh IDE. Xin vui lòng downvote bất kỳ câu trả lời flamebait .



1
Tôi đã đi từ Eclipse đến Netbeans đến IntelliJ rubyMine và mỗi người là một 'bước tiến' so với trước đây. Tôi không thể thấy điều gì cụ thể (vì đây không phải là câu trả lời) vì đã có lúc nhưng bước nhảy lớn nhất là rubyMine vốn "tích hợp" hơn và dường như có nhiều chức năng hơn và trình bày mọi thứ dễ dàng hơn để sử dụng cách. Nó dường như cũng xử lý các vấn đề đá quý, phụ thuộc và tương tự tốt hơn so với những người khác.
junky

Tôi muốn chuyển từ intelliJ sang Eclipse (vì phát triển Android), do đó loại câu hỏi và câu trả lời này rất hữu ích.
chrome

8
@chrom Android hiện đang chuyển đổi theo cách khác: developer.android.com/sdk/installing/studio.html
Daniel Alexiuc

1
Tôi có càng nhiều bài đăng này càng tốt và tất cả các câu trả lời đều chỉ ra những điều thực sự có thể được thực hiện nhật thực, đôi khi dễ dàng hơn IMHO. Tôi muốn cảm thấy như tôi đã nhận được giá trị $ của mình với intellij nhưng lý do duy nhất tôi mua nó là tự động hoàn thành Javascript. Tôi có thể vừa mua webstorm với giá rẻ hơn nếu đây là tất cả những gì tôi nhận được. Có lẽ có một plugin nhật thực cũng làm điều tương tự. Thành thật mà nói tôi nghĩ nhật thực phù hợp hơn và tôi bỏ lỡ tính năng Viễn cảnh.
Dres

Câu trả lời:


185

CTRL-click hoạt động ở mọi nơi

Nhấp chuột CTRL đưa bạn đến nơi đối tượng được nhấp được xác định hoạt động ở mọi nơi - không chỉ trong các lớp và biến Java trong mã Java, mà trong cấu hình Spring (bạn có thể nhấp vào tên lớp, hoặc thuộc tính hoặc tên bean), trong Hibernate (bạn có thể nhấp vào tên thuộc tính hoặc lớp hoặc tài nguyên được bao gồm), bạn có thể điều hướng trong một lần nhấp từ lớp Java đến nơi nó được sử dụng như là Spring hoặc Hibernate bean; nhấp vào thẻ JSP hoặc JSTL đi kèm cũng hoạt động, nhấp chuột ctrl vào biến hoặc hàm JavaScript sẽ đưa bạn đến vị trí được xác định hoặc hiển thị menu nếu có nhiều hơn một vị trí, bao gồm các tệp .js khác và mã JS trong HTML hoặc JSP các tập tin.

Tự động hoàn thành cho nhiều ngôn ngữ

Ngủ đông

Tự động hoàn thành các biểu thức HSQL, trong cấu hình Hibernate (bao gồm các tên cột lớp, thuộc tính và DB), trong cấu hình Spring

<property name="propName" ref="<hit CTRL-SPACE>"

và nó sẽ hiển thị cho bạn danh sách những loại đậu mà bạn có thể tiêm vào tài sản đó.

Java

Tự động hoàn thành rất thông minh trong mã Java:

interface Person {
    String getName();
    String getAddress();
    int getAge();
}
//---
Person p;
String name = p.<CTRL-SHIFT-SPACE>

và nó hiển thị cho bạn CHỈ getName () , getAddress ()toString () (chỉ chúng tương thích theo loại) và getName () là đầu tiên trong danh sách vì nó có tên phù hợp hơn. Phiên bản 8 mới nhất vẫn còn trong EAP thậm chí còn tự động hoàn thành thông minh hơn.

interface Country{
}
interface Address {
    String getStreetAddress();
    String getZipCode();
    Country getCountry();
}
interface Person {
    String getName();
    Address getAddress();
    int getAge();
}
//--- 
Person p;
Country c = p.<CTRL-SHIFT-SPACE>

và nó sẽ âm thầm tự động hoàn thành

Country c = p.getAddress().getCountry();

Javascript

Tự động hoàn thành thông minh trong JavaScript.

function Person(name,address) {
    this.getName = function() { return name };
    this.getAddress = function() { return address };
}

Person.prototype.hello = function() {
    return "I'm " + this.getName() + " from " + this.get<CTRL-SPACE>;
}

và nó hiển thị CHỈ getName ()getAddress () , bất kể bạn có phương thức * nào trong các đối tượng JS khác trong dự án của bạn và ctrl-click vào this.getName () đưa bạn đến nơi mà phương thức này được xác định, ngay cả khi có một số hàm getName () khác trong dự án của bạn.

HTML

Tôi đã đề cập đến tự động hoàn tất và nhấp vào ctrl trong đường dẫn đến tệp, như <script src = "", <img src = "", v.v?

Tự động hoàn thành trong các thuộc tính thẻ HTML. Tự động hoàn thành thuộc tính kiểu của thẻ HTML, cả tên và giá trị thuộc tính. Tự động hoàn thành trong các thuộc tính lớp là tốt.
Nhập <div class = "<CTRL-SPACE> và nó sẽ hiển thị cho bạn danh sách các lớp CSS được xác định trong dự án của bạn. Chọn một, nhấp vào ctrl và bạn sẽ được chuyển hướng đến nơi được xác định.

Ngôn ngữ riêng dễ dàng

Phiên bản mới nhất có ngôn ngữ tiêm, vì vậy bạn có thể tuyên bố rằng thẻ JSTL tùy chỉnh của bạn thường chứa JavaScript và nó sẽ làm nổi bật JavaScript bên trong nó.

<ui:obfuscateJavaScript>function something(){...}</ui:obfuscateJavaScript>

Tìm kiếm được lập chỉ mục trên tất cả các dự án.

Bạn có thể sử dụng Find Usages của bất kỳ lớp hoặc phương thức Java nào và nó sẽ tìm thấy nơi nó được sử dụng bao gồm không chỉ các lớp Java mà cả Hibernate, Spring, JSP và các nơi khác. Đổi tên Phương thức tái cấu trúc đổi tên phương thức không chỉ trong các lớp Java mà bất kỳ nơi nào bao gồm cả các nhận xét (không thể chắc chắn nếu chuỗi trong các bình luận có thực sự là tên phương thức hay không nên nó sẽ hỏi). Và nó sẽ chỉ tìm thấy phương thức của bạn ngay cả khi có các phương thức của một lớp khác có cùng tên. Tích hợp kiểm soát nguồn tốt (SVN có hỗ trợ người thay đổi không? IDEA hỗ trợ họ cho mọi kiểm soát nguồn), khả năng tạo một bản vá với các thay đổi của bạn để bạn có thể gửi các thay đổi của mình cho thành viên khác trong nhóm mà không cần cam kết.

Cải thiện trình gỡ lỗi

Khi tôi nhìn vào HashMap trong cửa sổ theo dõi của trình gỡ lỗi, tôi thấy khung nhìn logic - các khóa và giá trị, lần trước tôi đã làm nó trong Eclipse, nó đang hiển thị các mục với hàm băm và các trường tiếp theo - Tôi không thực sự gỡ lỗi HashMap , tôi chỉ muốn nhìn vào nó nội dung.

Xác thực cấu hình Spring & Hibernate

Nó xác nhận cấu hình Spring và Hibernate ngay khi bạn chỉnh sửa nó, vì vậy tôi không cần phải khởi động lại máy chủ để biết rằng tôi đã viết sai tên lớp hoặc thêm tham số hàm tạo để Spring cfg của tôi không hợp lệ.

Lần trước tôi đã thử, tôi không thể chạy Eclipse trên Windows XP x64.

và nó sẽ gợi ý cho bạn person.name hoặc person.address . Ctrl-click vào person.name và nó sẽ điều hướng bạn đến phương thức getName () của lớp Person .

Nhập Pattern.compile("");put \\ vào đó, nhấn CTRL-SPACE và xem gợi ý hữu ích về những gì bạn có thể đưa vào biểu thức thông thường của mình. Bạn cũng có thể sử dụng ngôn ngữ tiêm tại đây - xác định phương thức của riêng bạn có tham số chuỗi, khai báo trong hộp thoại tùy chọn IntelliLang rằng tham số của bạn là biểu thức chính quy - và nó cũng sẽ cung cấp cho bạn tự động hoàn thành ở đó. Không cần phải nói nó làm nổi bật các biểu thức chính quy không chính xác.

Các tính năng khác

Có một vài tính năng mà tôi không chắc có mặt trong Eclipse hay không. Nhưng ít nhất mỗi thành viên trong nhóm của chúng tôi sử dụng Eclipse, cũng sử dụng một số công cụ hợp nhất để hợp nhất các thay đổi cục bộ với các thay đổi từ kiểm soát nguồn, thường là WinMerge. Tôi không bao giờ cần nó - hợp nhất trong IDEA là đủ cho tôi. Bằng 3 lần nhấp, tôi có thể thấy danh sách các phiên bản tệp trong kiểm soát nguồn, bằng 3 lần nhấp nữa tôi có thể so sánh các phiên bản trước hoặc phiên bản trước và hiện tại và có thể hợp nhất.

Nó cho phép chỉ định rằng tôi cần tất cả .jars trong WEB-INF\libthư mục, mà không chọn từng tệp riêng biệt, vì vậy khi ai đó cam kết mới .jar vào thư mục đó, nó sẽ tự động lấy nó.

Đề cập ở trên có lẽ là 10% những gì nó làm. Tôi không sử dụng Maven, Flex, Swing, EJB và nhiều thứ khác, vì vậy tôi không thể biết nó giúp ích cho họ như thế nào. Nhưng nó làm.


26
Hai ví dụ về tự động hoàn thành mã java hoạt động giống hệt nhau trong nhật thực. Ai đó có nhiều đại diện có thể xóa chỉ các ví dụ java xin vui lòng?
Craig P. Motlin

9
Hầu hết các ví dụ của bạn đều có sẵn trong Eclipse, trực tiếp hoặc thông qua các trình cắm của bên thứ 3. Tôi biết không có ai sử dụng một công cụ bên ngoài để hợp nhất svn trong Eclipse. Đối với các trình soạn thảo spring / hibernate / javascript (và tự động hoàn thành), có các plugin của bên thứ 3. Đối với regex và jsp EL, bạn đã đánh bại tôi :)
Yoni

1
Plugin Jboss Tools thêm tự động hoàn thành các biểu thức Hibernate và JSF.
Damo

4
Đối với chế độ xem gỡ lỗi nhật thực, có một tùy chọn để hiển thị nội dung của các bộ sưu tập thay vì chi tiết triển khai. Đối với danh sách và bộ, nó sẽ hiển thị nội dung của họ. Đối với bản đồ, nó sẽ hiển thị danh sách các cặp khóa-giá trị. Cũng có thể thiết lập màn hình tùy chỉnh lên.
răn đe

1
Eclipse 3.7 (Indigo), cũng tự động hoàn thành các tên lớp trong cấu hình Spring.
stivlo

81

Chỉ có một lý do tôi sử dụng intellij và không nhật thực: Tính khả dụng

Cho dù đó là gỡ lỗi, tái cấu trúc, tự động hoàn thành .. Intellij dễ sử dụng hơn với các ràng buộc khóa nhất quán, các tùy chọn có sẵn khi bạn tìm chúng, v.v. Tính năng khôn ngoan, sẽ rất khó để intellij bắt kịp với Eclipse, vì sau này có nhiều plugin có sẵn hơn intellij và có thể dễ dàng mở rộng.


10
Nó thông minh, và nhanh chết tiệt. Điều này thêm vào rất nhiều tính năng sử dụng. Chuyển qua một lớp con hoặc lớp thực hiện, tìm đường dẫn, tìm tập quán, v.v ... xảy ra quá nhanh. Tự động hoàn thành xảy ra nội tuyến, chỉ cần một tab sẽ chèn nó. Tự động hoàn thành cũng rất thông minh, chỉ là những đề xuất không thuần túy nhưng IDE nghĩ về những cái tên, vv cho bạn.
Ravindranath Akila

Có nhiều hơn một lý do để sử dụng IntelliJ. Tính khả dụng thậm chí không đứng đầu danh sách. Có nhiều tính năng trong IntelliJ hơn Eclipse. IntelliJ có tổng số plugin ít hơn, nhưng các plugin 'chất lượng' hơn. Vì vậy, câu trả lời này, mặc dù số phiếu tăng, là sai.
Kỹ sư phần mềm

2
@EngineerDollery Tôi sẽ không nói là "sai", vì amit đã nói "Chỉ có một lý do tôi sử dụng intellij và không nhật thực", không phải "Chỉ có một lý do để sử dụng intellij và không nhật thực".
Max Nanasy

54

Có lẽ không phải là một vấn đề của những gì có thể / không thể được thực hiện, nhưng như thế nào .

Ví dụ, cả hai đều có trình soạn thảo được bao quanh với các bảng dock cho dự án, classpath, đầu ra, cấu trúc, v.v. Nhưng trong Idea khi tôi bắt đầu gõ tất cả các sự sụp đổ này sẽ tự động cho tôi tập trung vào mã tự nó; Trong nhật thực, tất cả các bảng này tiếp tục mở khiến diện tích biên tập của tôi giảm đi rất nhiều, khoảng 1/5 tổng diện tích có thể xem được. Vì vậy, tôi phải lấy chuột và nhấp để thu nhỏ trong các bảng đó. Làm điều này cả ngày là một kinh nghiệm rất bực bội trong nhật thực.

Điều ngược lại chính xác xảy ra với cửa sổ đầu ra xem. Trong Idea chạy một chương trình mang đến cửa sổ / bảng điều khiển đầu ra để xem đầu ra của chương trình ngay cả khi nó được thu nhỏ một cách đáng kể. Trong nhật thực, tôi phải lấy chuột một lần nữa và tìm tab đầu ra và nhấp vào nó để xem đầu ra chương trình của mình, bởi vì cửa sổ / bảng điều khiển đầu ra chỉ là một cái khác, giống như tất cả các cửa sổ còn lại, nhưng trong Idea nó được xử lý trong một cách đặc biệt: "Nếu người dùng muốn chạy chương trình của anh ta, rất có khả năng anh ta muốn xem đầu ra của chương trình đó!" Có vẻ rất tự nhiên khi tôi viết nó, nhưng nhật thực thất bại trong khái niệm giao diện người dùng cơ bản này.

Có lẽ có một lối tắt cho điều này trong nhật thực (cửa sổ đầu ra tự động trong khi chỉnh sửa và tự động bật nó khi chạy chương trình), nhưng vì một số tính năng khác, lối tắt phải được săn lùng trong các diễn đàn, trợ giúp trực tuyến, v.v. tự nhiên".

Điều này có thể được lặp đi lặp lại cho hầu hết tất cả các tính năng cả có, tự động hoàn thành, gói từ, xem tài liệu nhanh, mọi thứ. Tôi nghĩ rằng trải nghiệm người dùng trong Idea dễ chịu hơn nhiều so với nhật thực. Sau đó phương châm trở thành sự thật "Phát triển với niềm vui"

Eclipse xử lý các dự án lớn hơn nhanh hơn (+300 lọ và +4000 lớp) và tôi nghĩ IntelliJ Idea 8 đang làm việc này.

Tất cả điều này tất nhiên là chủ quan. Làm thế nào chúng ta có thể đo lường trải nghiệm người dùng?


18
trong nhật thực, bạn có thể nhấn control-m để min / max cửa sổ chỉnh sửa hoặc nhấp đúp vào tab trình chỉnh sửa của nó - điều này giúp ích rất nhiều
Scott Stanchfield

Wow ... cảm ơn rất nhiều. Sẽ rất hữu ích nếu nhật thực có một cách mà tôi biết điều này (bên cạnh việc đọc bảng cheat hotkey) Cảm ơn rất nhiều. Có cách nào để bạn thay đổi cửa sổ đầu ra không?
OscarRyz

ALT-SHIFT-Q hiển thị cửa sổ Show View ... C dành cho bảng điều khiển ALT-SHIFT-Q, C là phím tắt để đi tới bảng điều khiển.
Instantsoup

7
Ctrl + Shift + L hiển thị cho bạn danh sách các phím nóng khả dụng trong ngữ cảnh hiện tại.
Dan Berindei

3
Nhấp đúp vào tiêu đề cửa sổ phụ - BẤT K window cửa sổ phụ - và cửa sổ phụ của bạn sẽ hiển thị toàn màn hình. Làm lại để khôi phục. Thu nhỏ bảng điều khiển với bàn điều khiển, và sau đó khi đầu ra xảy ra, bàn điều khiển bật lên ngay lập tức.
Ian

44

Idea 8.0 có ctrl+shift+spacex 2 đáng yêu thực hiện tự động hoàn thành sau:

 City city = customer.<ctrl-shift-space twice>

quyết tâm

 City city = customer.getAddress().getCity();

thông qua bất kỳ số lượng cấp độ của getters / setters.


27
khá tuyệt mặc dù mọi thứ nhiều hơn hai cấp đều có mùi mã ...;)
Epaga

33

Đừng quên "so sánh với clipboard".

Một cái gì đó mà tôi sử dụng tất cả thời gian trong IntelliJ và không có tương đương trong Eclipse.


6
Ngoài ra, lịch sử clipboard.
Kimball Robinson

3
Tính năng này có thể được thêm vào nhật thực dưới dạng một plugin có tên AnyEditTools (tìm thấy trên thị trường)
Yaniv

Thậm chí không biết về lịch sử clipboard cho đến khi đọc nó. Thông minh!
NodeDad

Đã cứu tôi nhiều lần
OscarRyz

31

Phím tắt yêu thích của tôi trong IntelliJ không có tương đương trong Eclipse (mà tôi đã tìm thấy) được gọi là 'Chuyển đến biểu tượng'. CTRL-ALT-SHIFT-Ncho phép bạn bắt đầu nhập và toàn cầu hóa các lớp, tên phương thức, tên biến, v.v., từ toàn bộ dự án.


10
ctrl-shift-G trong nhật thực
Dres

ctrl-shift-G không phải là những gì Paul mô tả .. giống như "ctrl + O" hơn nhưng đối với tất cả các lớp, phương thức và biến trong dự án
Tano

27

Tôi đã cố gắng chuyển sang IntelliJ vì Android Studio mới. Nhưng tôi rất thất vọng bây giờ. Tôi đang sử dụng Eclipse với Plugin Code recommanders . Đây là một ví dụ đơn giản tại sao Eclipse rất tuyệt vời:

Tôi muốn tạo một cái mới SimpleTimeZone. SimpleTimeZonekhông có Con Contortor với zero argument.

Ctrl + Space trong Nhật thực

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

Ctrl + Space trong IntelliJ

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

Trong IntelliJ tôi không nhận được thông tin về loại nhà xây dựng SimpleTimeZonenào.

Sau khi Enterở trong Eclipse

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

Tôi nhận được hàm tạo được chọn trước đó chứa đầy các tên biến được xác định trước. Và tôi có thể thấy kiểu của mọi đối số. Với Code recommanders, Eclipse đoán đúng hàm tạo bởi các kiểu biến được xác định trước đó trong phạm vi hiện tại và điền vào hàm tạo với các vars này.

Sau khi Enterở IntelliJ không có gì xảy ra. Tôi nhận được một constructor trống. Tôi phải nhấn Ctrl + Pđể xem các đối số dự kiến.

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


25

Nếu bạn có con trỏ trên một phương thức thì CTRL+SHIFT+Isẽ hiện ra phương thức thực hiện. Nếu phương thức là một interfacephương thức, thì bạn có thể sử dụng mũi tên lên và xuống để xoay vòng qua các triển khai:

Map<String, Integer> m = ...
m.contains|Key("Wibble");

Ở đâu | là (ví dụ) nơi con trỏ của bạn là.


4
Thực tế trong Eclipse (ít nhất là phiên bản tôi đang sử dụng), khi bạn đặt con trỏ vào tên của một phương thức và nhấn CTRL + T, bạn sẽ có được toàn bộ cây phân cấp, từ giao diện trên cùng xuống đến các triển khai lá và có thể nhảy cho bất kỳ ai trong số họ.
Yuval

2
Trong Eclipse, bạn cũng có thể Ctrl + Nhấp vào tên phương thức để chuyển đến định nghĩa / triển khai phương thức (tùy theo ngữ cảnh)
Qualidafial

8
Vấn đề là bạn không thực sự điều hướng đến việc thực hiện. Nó chỉ được hiển thị cửa sổ bật lên, giống như javadoc, v.v.
jackrabbit

1
Trong Eclipse, bạn chỉ cần di chuột tên phương thức với Shift để mở cửa sổ bật lên với triển khai của nó
Victor

24

IntelliJ có một số kiểm tra mã khá tiên tiến (có thể so sánh nhưng khác với FindBugs).

Mặc dù tôi thực sự bỏ lỡ một plugin FindBugs khi sử dụng IntelliJ (Tích hợp Eclipse / FindBugs khá tuyệt).

Dưới đây là danh sách chính thức của CodeInspections được IntelliJ hỗ trợ

EDIT: Cuối cùng, có một plugin tìm kiếm cho IntelliJ. Nó vẫn là một chút beta nhưng sự kết hợp giữa Kiểm tra mã và FindBugs thật tuyệt vời!


yeah findbugs là một trong số ít các máy phân tích mã tĩnh thực sự tìm thấy các lỗi trung thực thực tế. :)
Epaga

Bạn có một ví dụ cụ thể về kiểm tra mã của nó? Những loại công cụ nó có thể phát hiện?
Epaga

Một liên kết khác về kiểm tra: hamletdarcy.blogspot.com/2008/04/ từ
Mo.

8
Tôi thấy việc kiểm tra mã của IntelliJ tìm thấy nhiều lỗi hơn, có các bản sửa lỗi nhanh hữu ích, nó có thể đưa ra các cảnh báo và sửa các dòng khi bạn nhập chúng. (Bạn không phải lưu tệp và nó không phải biên dịch) Những tính năng này giúp việc sửa lỗi càng sớm càng tốt.
Peter Lawrey


15

Một điều tôi sử dụng thường xuyên là thiết lập một điểm dừng, nhưng sau đó kiểm soát những gì nó làm. (Ở công việc cuối cùng của tôi, hầu hết mọi người khác đã sử dụng Eclipse ... Tôi nhớ là đã ngạc nhiên khi không ai có thể tìm thấy cách làm điều này trong Eclipse.)

Ví dụ, có thể có điểm dừng không thực sự dừng, nhưng chỉ cần đăng nhập một thông báo đến bàn điều khiển. Điều đó có nghĩa là, tôi không phải vứt mã của mình bằng "System.out.println (...)" và sau đó biên dịch lại.


2
Bạn có thể làm điều này với các điểm dừng có điều kiện trong nhật thực nhưng nó hơi táo tợn .eg. đúng
HaveAGuess

Tôi nghĩ intelliJ cho phép bạn thiết lập số lần truy cập phức tạp hơn, phải không?
Kimball Robinson

3
Bây giờ đơn giản hơn để tìm thấy trong nhật thực - nó hiển thị các điều kiện trong chế độ xem điểm dừng ngay bây giờ (để bạn biết rằng chúng có sẵn). Bạn có thể ngắt số đếm, nhập mã tùy ý, muốn System.out.println("here"); falsein nhưng không ngắt (câu lệnh cuối là biểu thức boolean xác định xem chúng ta có nên ngắt không)
Scott Stanchfield

15

Có nhiều điều mà ý tưởng giải quyết theo cách đơn giản hơn nhiều, hoặc không có gì tương đương:

  • Hành động tự động hoàn thành: ctrl+shift+aBạn có thể gọi bất kỳ hành động ý tưởng nào từ bàn phím mà không cần nhớ tổ hợp phím của nó ... Hãy nghĩ về gnome-do hoặc launchy trong windows và bạn đã có ý tưởng! Ngoài ra, tính năng này hỗ trợ viết tắt CamelCasing;)

  • Kệ: Cho phép bạn dễ dàng tách một số đoạn mã, sau đó xem lại chúng thông qua trình xem khác.

  • Lịch sử địa phương: Nó được quản lý tốt hơn và đơn giản hơn.

  • Chú thích và lịch sử SVN: đơn giản hơn để kiểm tra và bạn cũng có thể dễ dàng xem lịch sử chỉ với một phần của toàn bộ tệp nguồn.

  • Tự động hoàn tất ở mọi nơi, chẳng hạn như biểu thức đánh giá và cửa sổ điều kiện điểm dừng.

  • Tích hợp Maven ... nhiều, đơn giản hơn nhiều và tích hợp tốt.

  • Các bộ tái cấu trúc gần với tay hơn, chẳng hạn như chèn vòng, gói / đúc, đổi tên và thêm biến.

  • Tìm nhiều mạnh mẽ và tổ chức tốt. Ngay cả trong các dự án lớn

  • Rất ổn định để làm việc với một số chi nhánh của một dự án lớn cùng một lúc (như một lỗi cũ của 1,5Gb theo các nguồn chi nhánh và nhu cầu làm việc trong chúng đồng thời, ý tưởng cho thấy khả năng vững chắc của nó)

  • Giao diện sạch hơn và đơn giản hơn ...

  • Và, đơn giản hơn khi chỉ sử dụng với bàn phím, loại bỏ nhu cầu sử dụng chuột cho nhiều thao tác đơn giản, tiết kiệm thời gian và giúp bạn tập trung hơn vào mã ... nơi nó quan trọng!

Và bây giờ, là nguồn mở ... cơ sở người dùng Idea sẽ tăng theo cấp số nhân.


2
Hành động tự động hoàn thành = truy cập nhanh trong nhật thực; Tôi không thấy lịch sử địa phương có thể dễ dàng hơn nhật thực như thế nào ...
Scott Stanchfield

Như Scott đã chỉ ra, đó là Ctrl + 3. Hỗ trợ nội dung cũng có sẵn khi đánh giá biểu thức và thiết lập các điểm dừng có điều kiện. Tôi không chắc chắn việc tái cấu trúc được đề cập gần hơn bao nhiêu so với những gì được đề xuất bởi Ctrl + 1 và Ctrl + 2. Phần lớn phần còn lại nghe có vẻ chủ quan.
nitind

14

Kết cấu tìm kiếm và thay thế.

Ví dụ: tìm kiếm một cái gì đó như:

  System.out.println($string$ + $expr$);

Trong đó $ string $ là một chữ và $ expr $ là biểu thức của kiểu my.package.and.Class, sau đó thay thế bằng:

  $expr$.inspect($string$);

1
Trên thực tế, bạn có thể tìm kiếm các kiểu phôi / () - toán tử / trong mã của bạn, hầu như không thể với tìm kiếm văn bản đơn giản
Karl

13

Thời gian của tôi có thể là một chút về chủ đề này, nhưng tôi chỉ cần trả lời.

Tôi là một người hâm mộ nhật thực khổng lồ - sử dụng nó kể từ lần đầu tiên xuất hiện. Một người bạn đã nói với tôi sau đó (hơn 10 năm trước) rằng đó sẽ là một người chơi. Anh ấy đã đúng.

Tuy nhiên! Tôi mới bắt đầu sử dụng IntelliJ và nếu bạn chưa thấy hoặc sử dụng những người thay đổi - bạn đang bỏ lỡ thiên đường lập trình.

Khả năng theo dõi các tập tin đã thay đổi của tôi (trên nhánh phát triển ala Clearcase) là thứ tôi đang tìm kiếm trong một plugin cho nhật thực. Intellij theo dõi tất cả các thay đổi của bạn cho một cam kết duy nhất, cực kỳ dễ dàng. Bạn có thể cô lập các tập tin thay đổi với danh sách tùy chỉnh. Tôi sử dụng tệp đó cho các tệp cấu hình phải là duy nhất cục bộ, nhưng liên tục bị gắn cờ khi tôi đồng bộ hóa hoặc so sánh với kho lưu trữ - liệt kê chúng dưới danh sách thay đổi, tôi có thể theo dõi chúng, nhưng gọn gàng chúng để tôi có thể tập trung vào các bổ sung thực Tôi đang làm.

Ngoài ra, có một plugin Commit Log tạo ra văn bản của tất cả các thay đổi cho những SCCS không được tích hợp với phần mềm theo dõi lỗi của bạn. Dán nhật ký vào lịch sử công việc của vé sẽ ghi lại các tệp, phiên bản, ngày / giờ của chúng và chi nhánh / thẻ. Thật tuyệt như địa ngục.

Tất cả điều này có thể được hỗ trợ thông qua các plugin (hoặc cải tiến trong tương lai) trong nhật thực, tôi cá cược; Tuy nhiên, Intellij làm cho điều này một cách dễ dàng.

Cuối cùng, tôi thực sự hào hứng với tình yêu chủ đạo dành cho sản phẩm này - tổ hợp phím, vì vậy thật đau đớn, nhưng thú vị.


Tôi thực sự thích tính năng thay đổi. Nó tương tự như một bộ miếng vá / kệ độc lập VCS mà bạn có thể làm việc độc lập và có thể được liên kết với chúng cũng có thể được liên kết với trình theo dõi vấn đề của bạn. Bạn có lịch sử địa phương (như một VCS nhỏ) theo dõi các thay đổi của bạn trong khi bạn làm việc ở hầu hết các chi tiết ở cấp độ dòng để bạn có thể quay lại gần như bất kỳ thời điểm nào nếu bạn cần. Ngoài ra, khi bạn chuyển đổi tác vụ, tất cả IDEA đều nhớ trạng thái của IDE cho tác vụ mới và khôi phục các tệp đang mở, vị trí cửa sổ, v.v.
sylvanaar

Changelists thực sự là một tính năng của SVN. IntelliJ chỉ cho phép bạn xem và quản lý chúng ở nơi mà các plugin SVN của Eclipse không có.
Neil Traft

12

Trình gỡ lỗi IntelliJ có một tính năng rất tiện dụng gọi là "Đánh giá biểu hiện", tốt hơn nhiều so với mặt dây chuyền lu mờ. Nó có đầy đủ mã hoàn thành và tôi đồng ý rằng nó thường "hữu ích hơn".


8
Eclipse cũng có một trình đánh giá biểu thức cung cấp hoàn thành mã. Chuyển đến Cửa sổ -> Hiển thị Chế độ xem -> Gỡ lỗi -> Hiển thị Khi dừng tại điểm dừng trong trình gỡ lỗi, bạn có thể đánh giá các biểu thức tùy ý trong Chế độ hiển thị đó.
laz

11

Đối với tôi, đó là một ngàn điều nhỏ nhặt. Một số macro, bố cục GUI nói chung trong Eclipse tôi thấy khủng khiếp. Tôi không thể mở nhiều dự án trong các cửa sổ khác nhau trong Eclipse. Tôi có thể mở nhiều dự án, nhưng sau đó hệ thống dựa trên chế độ xem sẽ hoán đổi rất nhiều thứ xung quanh tôi khi tôi chuyển đổi tệp. Kiểm tra mã của IntelliJ có vẻ tốt hơn. Trình trợ giúp bật lên của nó để khắc phục các vấn đề phổ biến là tốt đẹp. Rất nhiều thứ có thể sử dụng đơn giản như thanh bên, nơi tôi có thể di chuột qua một điểm nóng và nó sẽ cho tôi biết mọi lớp con thực hiện của một phương thức hoặc phương thức tôi đang thực hiện và từ đâu.

Bất cứ khi nào tôi phải sử dụng hoặc xem ai đó sử dụng, Eclipse có vẻ như họ có thể làm hầu hết những điều tôi có thể làm trong IntelliJ, nhưng phải mất nhiều thời gian hơn và nó sẽ vụng về hơn.


9

Giới thiệu biến. ( Ctrl+Alt+Vtrên Windows, Cmd+Alt+Vtrên OSX)

Hãy nói rằng bạn gọi một phương thức, service.listAllPersons() Lượt Ctrl+Alt+VEntervà biến cho giá trị trả về từ lệnh gọi phương thức được chèn:

List<Person> list = service.listAllPersons();

Lưu bạn nhập và bạn không phải kiểm tra kiểu trả về của phương thức bạn đang gọi. Đặc biệt hữu ích khi sử dụng thuốc generic, vd

new ArrayList<String>()

[giới thiệu biến]

ArrayList<String> stringArrayList = new ArrayList<String>();

(tất nhiên bạn có thể dễ dàng thay đổi tên của biến trước khi nhấn Enter)


13
Đây là Ctrl + 2 L trong Eclipse.
Micke

2
Thật tuyệt, tôi không biết, và bất kỳ người dùng Eclipse nào tôi đã hỏi. Tính năng này đã là một phần của Eclipse trong một thời gian dài?
rlovtang

3
Khá lâu ... Nếu bạn sử dụng quickfix, control+1(ràng buộc khóa rõ ràng nhất trên thế giới, eh?), Nó gợi ý những điều bạn có thể làm tại vị trí con trỏ hiện tại, tương tự như ý định trong IDEA. Ví dụ, nó liệt kê "gán cục bộ", "gán trường" và các tùy chọn khác. control+2, Llà lối tắt cho nó.
Scott Stanchfield

Trong nhật thực, một khi bạn đã chọn ctrl+2, L, bạn vẫn có thể thay đổi loại biến được tạo thành loại bên phải (theo mặc định) hoặc bất kỳ siêu kiểu nào: loại biến có thể chọn bằng TAB.
Gaetan

8

IntelliJ có hỗ trợ intellisense và tái cấu trúc từ mã vào các tài liệu jspx.


Bạn có thể làm rõ những gì bạn có nghĩa là bằng intellisense? Eclipse cũng tự động hoàn thành, nhưng bạn có ý gì khác không?
Epaga

Eclipse không có tự động hoàn thành trong các tài liệu jspx AFAIK. Trong jsp thông thường có, jspx không.
krosenvold

3
Anh ta có nghĩa là nếu bạn có một tệp JSP đề cập đến một thuộc tính trên POJO và bạn đổi tên thuộc tính đó, thì tệp JSP của bạn được cập nhật chính xác. Hỗ trợ JSP của IntelliJ khởi động Eclipse / WTP!
erickson

2
Tôi không thể hoàn thành tự động của Eclipse để làm việc trong các biểu thức, giai đoạn của EL EL. JSP hoặc JSPX, không thành vấn đề, nó chỉ là không biết gì cả. IntelliJ xử lý tagx và jspx như bạn mong đợi: như tệp thẻ hoặc tệp jsp.
erickson

Thật tuyệt khi thấy người dùng nhật thực bỏ phiếu những điều họ không thích. Nếu quan sát của tôi là sai, xin vui lòng trả lời với một bình luận. Hãy cho tôi biết làm thế nào để làm điều này trong nhật thực!
krosenvold

7

Đối với tôi, đó là hỗ trợ maven của IDEA, đặc biệt là trong phiên bản 9 là không ai sánh kịp. Việc đồng bộ hóa nhanh chóng của dự án với mô hình maven thật tuyệt vời và làm cho sự phát triển trở nên dễ chịu.


6

Intellij có một trình cắm SVN vượt trội hơn nhiều so với Subversive hoặc Subclipse và nó hoạt động! Lượng thời gian chúng ta đã lãng phí khi hợp nhất các tệp nguồn bằng cách sử dụng Eclipse không phải suy nghĩ. Đây không phải là vấn đề với IntelliJ vì plugin giúp bạn nhiều hơn thế.

Ngoài ra, plugin Subclipse không đáng tin cậy - chúng tôi thường xuyên có các trường hợp plugin không nghĩ rằng đã có bất kỳ mã nào được đăng ký vào SVN bởi các nhà phát triển khác, nhưng có - máy chủ CI đã xử lý chúng!


chính xác, hỗ trợ svn là ý tưởng tuyệt vời, trong khi subclipse / lật đổ là lỗi, vụng về và không đáng tin cậy lắm; Tương tự như vậy đối với git, thực sự tôi không nhớ bất kỳ sự xen kẽ git hợp lý nào cho nhật thực và intelliJ xử lý nó rất tốt
Kamil Mikolajchot

Cá nhân tôi nghĩ rằng bạn nên thực hiện tất cả các điều khiển phiên bản của mình trên dòng lệnh, ngay cả khi IDE của bạn có thể làm điều đó. Khi bạn làm điều đó trên dòng lệnh, sau đó bạn sẽ biết cách bash script sau đó, điều này thực sự có thể tăng tốc độ phát triển của bạn. Đôi khi các đồng nghiệp của tôi yêu cầu tôi giúp đỡ với plugin nhật thực của subclipse hoặc git, tôi chỉ bảo họ ngừng sử dụng nó và thực hiện nó trên dòng lệnh.
msknapp

4

Trình giả lập VIM . Plugin này cung cấp mô phỏng vi / vim / gvim gần như hoàn chỉnh trong khi chỉnh sửa các tệp trong IDEA. Các chức năng sau được hỗ trợ:

  • Phím chuyển động
  • Xóa / Thay đổi
  • Chèn lệnh chế độ
  • Điểm
  • Đăng ký
  • VIM hoàn tác / làm lại
  • Lệnh chế độ trực quan
  • Một số lệnh Ex
  • Một số: thiết lập tùy chọn
  • Biểu thức chính quy VIM đầy đủ cho tìm kiếm và tìm kiếm / thay thế
  • Macro
  • Sơ đồ
  • Lịch sử dòng lệnh
  • Lịch sử tìm kiếm
  • Jumplists
  • Trợ giúp VIM

một số nhận xét về plugin này từ http://plugins.jetbrains.net/plugin/?id=164

Tôi không thể thấy trở lại bất kỳ ide nào khác vì plugin này .. Tốt nhất của cả hai thế giới ... Tuyệt vời!. đó là những gì tôi đã thiếu trong tất cả các IDE.

Tôi đồng ý, tôi không thể sống mà không có plugin IdeaVim, tuy nhiên công bằng mà nói, có một plugin Vim cho Eclipse, có tên là VimPlugin ( vimplugin.org )
Keith

3
Vwrapper là một plugin Vim Eclipse khác. Và nó hoạt động thậm chí còn tốt hơn plugin Idea Vim (phím lặp lại hoạt động). Vwrapper không xử lý tìm kiếm và thay thế từ dòng lệnh, mặc dù (mặc dù tìm kiếm hoạt động rất tốt), cũng không cho phép xác định các macro tương tác. Đồng ý rằng hỗ trợ Vim là điều cần thiết trong IDE. Sẽ không sử dụng Eclipse hoặc Idea mà không có nó!
Brent Faust

1
Các vibleplugin.com là rất tốt cho nhật thực. Tôi cũng đang sử dụng intellij và tôi thấy rằng intellij thỉnh thoảng bị treo trong trình chỉnh sửa trong một số trường hợp và không đáp ứng với các lệnh.
John Lemp


3

Một vài điều khác:

  • tuyên truyền các tham số / ngoại lệ khi thay đổi chữ ký phương thức, rất thuận tiện để cập nhật các phương thức sâu bên trong ngăn xếp cuộc gọi
  • Xác thực mã SQL trong các chuỗi được truyền dưới dạng đối số cho các lệnh gọi jdbc (và toàn bộ nội dung tiêm ngôn ngữ mới được gói)
  • được triển khai trong / ghi đè trong các biểu tượng cho giao diện & lớp (và phương thức của chúng) và điều hướng triển khai thông minh (Ctrl + Alt + Nhấp hoặc Ctrl + Alt + B)
  • liên kết giữa các giao diện EJB 2.1 và các lớp bean (bao gồm hỗ trợ tái cấu trúc); cũ, nhưng vẫn có giá trị vô cùng khi làm việc trong các dự án cũ

2

Hai điều mà IntelliJ thực hiện mà Eclipse không có giá trị đối với tôi:

Phương pháp tách: những dòng màu xám mờ nhạt giữa các phương pháp làm cho mã nhiều hơn có thể đọc được

Văn bản chống răng cưa: làm cho mã trông rất đẹp trong IDE


2
Tôi thực sự thấy việc khử răng cưa của IntelliJ còn tệ hơn nhiều so với Eclipse. Đây là một vài phiên bản của IntelliJ trước đây. Nó đã được cải thiện?
laz

Tôi sử dụng phông chữ tỷ lệ Verdana mà tôi nghĩ trông đẹp hơn so với sử dụng khử răng cưa.
Peter Lawrey

2

Một tính năng rất hữu ích là khả năng xây dựng một phần dự án lò phản ứng Maven để chỉ bao gồm các phần bạn cần.

Để làm cho điều này rõ ràng hơn một chút, hãy xem xét trường hợp tập hợp các tệp WAR có nhiều tài nguyên chung (ví dụ: JavaScript, tệp cấu hình Spring, v.v.) được chia sẻ giữa chúng bằng kỹ thuật lớp phủ. Nếu bạn đang làm việc trên một số trang web (đang chạy trong Jetty) và muốn thay đổi một số mã lớp phủ được giữ trong một mô-đun riêng thì bạn thường phải dừng Jetty, chạy bản dựng Maven, khởi động lại Jetty và tiếp tục. Đây là trường hợp với Eclipse và gần như mọi IDE khác mà tôi đã làm việc cùng. Không như vậy trong IntelliJ. Sử dụng các cài đặt dự án, bạn có thể xác định khía cạnh nào của mô-đun mà bạn muốn được đưa vào một bản dựng nền. Do đó, bạn kết thúc với một quá trình xuất hiện liền mạch. Bạn thực hiện một thay đổi đối với khá nhiều mã trong dự án và ngay lập tức nó có sẵn sau khi bạn làm mới trình duyệt.

Rất gọn gàng, và rất nhanh.

Tôi không thể tưởng tượng việc mã hóa một giao diện người dùng trong một cái gì đó như YUI sao lưu vào DWR / SpringMVC mà không có nó.


2

Mở đầu cho câu trả lời của tôi: Việc sử dụng Eclipse của tôi bị hạn chế. Chúng tôi cần một Java IDE để hoạt động trên cả Windows và Mac và cổng Mac bị chậm lại từng ngày. Điều này đã được nhiều năm trước và tôi chắc chắn bây giờ nó ổn. Nhưng đó là những gì khiến chúng tôi chuyển sang IntelliJ và chúng tôi hài lòng với nó.

Bây giờ cho câu trả lời của tôi: Một sự khác biệt lớn mà tôi chưa thấy đề cập đến là hỗ trợ công nghệ tốt hơn với IntelliJ / Jet Brains. Chúng tôi gửi e-mail đến JetBrains và nhận được câu trả lời dứt khoát sau chưa đầy một giờ. Tìm kiếm câu trả lời cho các vấn đề của Eclipse dẫn đến các câu trả lời thông thường, "Bạn ngu ngốc" (thường là một số ít các câu trả lời) cùng với số lượng lớn hơn các câu trả lời sâu sắc, hữu ích. Nhưng phải mất một số sắp xếp để có được câu trả lời thực sự.


Nhật thực là nguồn mở. Không ai được trả tiền để trả lời các câu hỏi hoặc sửa lỗi. Mua IDE dựa trên Eclipse thương mại, ví dụ MyEclipse và nhận hỗ trợ về tiền của bạn. Số liệu thống kê nhanh: Tôi đã báo cáo với JetBrains 56 lỗi, 23 trong số đó đã bị đóng; từ 65 lỗi được báo cáo cho Eclipse 33 đã bị đóng. Sự khác biệt duy nhất là JetBrains sửa lỗi nhanh hơn một chút so với Eclipse.
Victor

2

Một cái gì đó mà tôi sử dụng trong IntelliJ mọi lúc là tái cấu trúc khi tôi gõ. Tôi đã viết lại các lớp từ một bản in (ban đầu được viết bằng nhật thực) bằng cả hai IDE và tôi đã sử dụng khoảng 40% các lần nhấn phím / nhấp chuột để viết cùng một lớp trong IntelliJ so với nhật thực.

Tôi sẽ không muốn sử dụng Eclipse cho đến khi họ hỗ trợ nhiều lần tái cấu trúc với các đoạn mã chưa hoàn chỉnh.

Dưới đây là danh sách dài hơn các tính năng trong IntelliJ 8.0 / 8.1 [ http://www.jetbrains.com/idea/features/index.html]


2

Có một điều mà IntelliJ làm tốt hơn nhiều so với Eclipse và đó là làm trống túi của bạn!

Tuy nhiên tôi thích sử dụng nó và một lợi thế lớn của nó đối với Eclipce là cách nó đồng bộ hóa với hệ thống tệp, cho các dự án lớn và máy tính chậm (vâng, trong môi trường làm việc, PC chậm hơn rất nhiều so với ở nhà của chúng tôi) cuộc đấu tranh trong đó IntelliJ dường như nhanh hơn mặc dù thời gian lập chỉ mục ban đầu chậm hơn.

Phiên bản Cộng đồng IntelliJ rõ ràng làm cho việc sử dụng nó miễn phí nhưng bạn sẽ sớm muốn những phép tái cấu trúc thêm đó và những món quà nhỏ xinh không có trong phiên bản CC.

Theo tôi, nhìn chung trải nghiệm của người dùng tốt hơn nhưng liệu giá trị của nó có phải là câu hỏi để mỗi nhà phát triển tự trả lời hay không.

Nhưng hãy biết ơn vì hiện tại chúng tôi có tới ba IDE tuyệt vời cho Java với NetBeans trở nên tốt hơn mọi lúc.


3
IntelliJ Ultimate Edition thực sự không miễn phí, nhưng là một nhà phát triển, tôi sử dụng IDE của mình khoảng 8 đến 10 giờ mỗi ngày. Vì vậy, tôi không thấy giá cả hợp lý của anh ấy là một lỗ hổng !!
Romain Linsolas


2

Trước hết tôi yêu intellij. Có ít nhất một trăm tính năng mà nhật thực thiếu. Tôi đang nói về tầm quan trọng tốt hơn về độ tin cậy và trí thông minh mà không một cường điệu nào có thể mô tả khi nói đến việc tái cấu trúc, đổi tên, di chuyển và những thứ khác đã được đề cập.

NHƯNG, có một điều mà intellij không cho phép nhật thực nào. Nó không cho phép chạy nhiều dự án cùng một lúc trong cùng một vm.

Khi bạn có các dự án riêng cho mặt trước, giữa, lõi, đại lý..vv, nơi tất cả chúng phải tương tác với nhau, bạn không thể nhanh chóng sửa đổi và gỡ lỗi cùng một lúc, afaik. Cách duy nhất hiện tại tôi đối phó với điều này là sử dụng các tập lệnh ant để triển khai và cập nhật các tệp trong các dự án phụ thuộc hoặc sử dụng maven.

Eclipse cho phép nhiều dự án được gỡ lỗi trong một cá thể ide vm.


4
Điều này nên được đăng trong Những điều mà Eclipse có thể làm mà IntelliJ không thể , không phải theo cách khác.
Neil Traft

IntelliJ làm điều này mà không có bất kỳ vấn đề nào cả. Câu trả lời này đơn giản là sai.
Kỹ sư phần mềm
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.