Hal-hal yang mungkin di IntelliJ yang tidak mungkin di Eclipse?

365

Saya telah mendengar dari orang-orang yang telah beralih cara dan yang bersumpah dengan yang satu atau yang lain.

Menjadi penggemar Eclipse yang besar tetapi tidak memiliki waktu untuk mencoba IntelliJ, saya tertarik mendengar dari pengguna IntelliJ yang merupakan "mantan Eclipsi" beberapa hal spesifik yang dapat Anda lakukan dengan IntelliJ yang tidak dapat Anda lakukan dengan Eclipse.

Catatan : Ini bukan pertanyaan subjektif atau sama sekali tidak dimaksudkan untuk berubah menjadi perang suci IDE. Harap downvote jawaban flamebait .

Epaga
sumber
1
Saya beralih dari Eclipse ke Netbeans ke IntelliJ rubyMine dan masing-masing merupakan 'langkah maju' dari sebelumnya. Saya tidak dapat melihat apa yang spesifik (maka ini bukan jawaban) karena itu adalah waktu yang lama tetapi lompatan terbesar adalah rubyMine yang hanya lebih "terintegrasi" dan tampaknya memiliki lebih banyak fungsi dan menyajikan berbagai hal dengan lebih mudah untuk menggunakan cara. Itu juga tampaknya menangani masalah permata, dependensi dan sejenisnya lebih baik daripada yang lain.
Barang rongsokan
Saya ingin beralih dari intelliJ ke Eclipse (karena pengembangan android), oleh karena itu pertanyaan dan jawaban jenis ini sangat berguna.
chrome
8
@chrome Android sekarang beralih ke arah lain: developer.android.com/sdk/installing/studio.html
Daniel Alexiuc
1
Saya memiliki banyak posting ini yang saya bisa dan semua jawaban menunjuk ke hal-hal yang sebenarnya bisa dilakukan gerhana, kadang-kadang lebih mudah IMHO. Saya ingin merasa seperti saya mendapatkan $ saya dengan intellij tetapi satu-satunya alasan saya membelinya adalah Javascript autocomplete. Saya bisa saja membeli webstorm dengan harga lebih murah jika hanya ini yang saya dapat. Mungkin ada plugin gerhana yang melakukan hal yang sama juga. Terus terang saya pikir gerhana lebih konsisten dan saya merindukan fitur Perspektif.
dres

Jawaban:

185

Klik CTRL berfungsi di mana saja

CTRL-klik yang membawa Anda ke tempat objek diklik didefinisikan berfungsi di mana-mana - tidak hanya di kelas Java dan variabel dalam kode Java, tetapi dalam konfigurasi Spring (Anda dapat mengklik nama kelas, atau properti, atau nama kacang), di Hibernate (Anda dapat mengklik nama properti atau kelas, atau sumber daya yang disertakan), Anda dapat menavigasi dalam satu klik dari kelas Java ke tempat itu digunakan sebagai Spring atau Hibernate bean; mengklik JSP atau JSTL tag yang disertakan juga berfungsi, ctrl-klik pada variabel JavaScript atau fungsi membawa Anda ke tempat yang didefinisikan atau menampilkan menu jika ada lebih dari satu tempat, termasuk file .js lainnya dan kode JS dalam HTML atau JSP file.

Autocomplete untuk banyak bahasa

Hibernasi

Autocomplete dalam ekspresi HSQL, dalam konfigurasi Hibernate (termasuk kelas, properti, dan nama kolom DB), dalam konfigurasi Spring

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

dan itu akan menunjukkan kepada Anda daftar kacang-kacangan yang dapat Anda masukkan ke dalam properti itu.

Jawa

Autocomplete sangat pintar dalam kode Java:

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

dan itu menunjukkan Anda HANYA getName () , getAddress () dan toString () (hanya mereka yang kompatibel berdasarkan jenis) dan getName () adalah yang pertama dalam daftar karena memiliki nama yang lebih relevan. Versi terbaru 8 yang masih dalam EAP bahkan memiliki autocomplete yang lebih pintar.

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>

dan itu akan secara otomatis melengkapinya

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

Javascript

Pelengkapan otomatis cerdas dalam 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>;
}

dan itu menunjukkan HANYA getName () dan getAddress () , tidak peduli bagaimana mungkin mendapatkan * metode yang Anda miliki di objek JS lain di proyek Anda, dan ctrl-klik pada this.getName () membawa Anda ke tempat yang ini didefinisikan, bahkan jika ada beberapa fungsi getName () lainnya di proyek Anda.

HTML

Apakah saya menyebutkan lengkapi-otomatis dan mengklik-ctrl di path ke file, seperti <script src = "", <img src = "", dll?

Autocomplete dalam atribut tag HTML. Autocomplete dalam atribut style dari tag HTML, baik nama atribut maupun nilainya. Autocomplete di atribut kelas juga.
Ketik <div class = "<CTRL-SPACE> dan itu akan menunjukkan kepada Anda daftar kelas CSS yang ditentukan dalam proyek Anda. Pilih satu, ctrl-klik dan Anda akan diarahkan ke tempat itu didefinisikan.

Higlighting bahasa sendiri mudah

Versi terbaru memiliki suntikan bahasa, sehingga Anda dapat menyatakan bahwa tag JSTL khusus Anda biasanya berisi JavaScript dan akan menyorot JavaScript di dalamnya.

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

Pencarian yang diindeks di semua proyek.

Anda dapat menggunakan Temukan Penggunaan dari semua kelas atau metode Java dan itu akan menemukan di mana ia digunakan termasuk tidak hanya kelas Java tetapi Hibernate, Spring, JSP dan tempat-tempat lain. Ubah nama Metode refactoring mengganti nama metode tidak hanya di kelas Java tetapi di mana saja termasuk komentar (tidak dapat memastikan apakah string dalam komentar benar-benar nama metode sehingga ia akan bertanya). Dan itu hanya akan menemukan metode Anda bahkan jika ada metode kelas lain dengan nama yang sama. Integrasi kontrol sumber yang baik (apakah SVN mendukung daftar perubahan? IDEA mendukung mereka untuk setiap kontrol sumber), kemampuan untuk membuat patch dengan perubahan Anda sehingga Anda dapat mengirim perubahan Anda ke anggota tim lain tanpa melakukan itu.

Peningkatan debugger

Ketika saya melihat HashMap di jendela arloji debugger, saya melihat tampilan logis - kunci dan nilai, terakhir kali saya melakukannya di Eclipse menampilkan entri dengan hash dan bidang berikutnya - Saya tidak benar-benar men- debug HashMap , saya hanya ingin melihat isinya.

Validasi konfigurasi Spring & Hibernate

Ini memvalidasi konfigurasi Spring dan Hibernate tepat ketika Anda mengeditnya, jadi saya tidak perlu me-restart server untuk mengetahui bahwa saya salah mengeja nama kelas, atau menambahkan parameter konstruktor sehingga cfg Spring saya tidak valid.

Terakhir kali saya mencoba, saya tidak bisa menjalankan Eclipse di Windows XP x64.

dan itu akan menyarankan Anda person.name atau person.address . Ctrl-klik pada person.name dan itu akan menavigasi Anda ke getName () metode kelas Person .

Ketik Pattern.compile("");put \\ di sana, tekan CTRL-SPACE dan lihat petunjuk bermanfaat tentang apa yang dapat Anda masukkan ke dalam ekspresi reguler Anda. Anda juga dapat menggunakan injeksi bahasa di sini - tentukan metode Anda sendiri yang mengambil parameter string, nyatakan dalam dialog opsi IntelliLang bahwa parameter Anda adalah ekspresi reguler - dan itu akan memberi Anda lengkapi otomatis di sana. Tak perlu dikatakan itu menyoroti ekspresi reguler yang salah.

Fitur lainnya

Ada beberapa fitur yang saya tidak yakin ada di Eclipse atau tidak. Tetapi setidaknya setiap anggota tim kami yang menggunakan Eclipse, juga menggunakan beberapa alat penggabungan untuk menggabungkan perubahan lokal dengan perubahan dari kontrol sumber, biasanya WinMerge. Saya tidak pernah membutuhkannya - menggabungkan IDEA sudah cukup bagi saya. Dengan 3 klik saya dapat melihat daftar versi file dalam kontrol sumber, dengan 3 klik lagi saya dapat membandingkan versi sebelumnya, atau sebelumnya dan saat ini dan mungkin bergabung.

Hal ini memungkinkan untuk menentukan bahwa saya memerlukan semua. Jar di dalam WEB-INF\libfolder, tanpa memilih setiap file secara terpisah, jadi ketika seseorang melakukan .jar baru ke dalam folder itu mengambilnya secara otomatis.

Disebutkan di atas mungkin 10% dari apa yang dilakukannya. Saya tidak menggunakan Maven, Flex, Swing, EJB dan banyak hal lainnya, jadi saya tidak tahu bagaimana itu membantu mereka. Tapi itu benar.

Pavel Feldman
sumber
26
Dua contoh tentang pelengkapan otomatis kode java berfungsi secara identik dalam gerhana. Bisakah seseorang dengan rep lebih banyak menghapus hanya contoh java saja?
Craig P. Motlin
9
Sebagian besar contoh Anda tersedia di Eclipse, baik secara langsung atau melalui plugin pihak ke-3. Saya tahu tidak ada orang yang menggunakan alat eksternal untuk svn menggabungkan di Eclipse. Untuk editor spring / hibernate / javascript (dan autocomplete) ada plugin pihak ke-3. Adapun regex dan jsp EL, Anda mengalahkan saya :)
Yoni
1
Plugin Jboss Tools menambahkan autocomplete dari ekspresi Hibernate dan JSF.
Damo
4
Untuk tampilan debug gerhana ada opsi untuk menampilkan konten koleksi daripada rincian implementasi. Untuk daftar dan set, itu akan menampilkan kontennya. Untuk peta, ini akan menampilkan daftar pasangan nilai kunci. Anda juga dapat mengatur tampilan khusus.
deterb
1
Eclipse 3.7 (Indigo), juga melengkapi nama kelas secara otomatis dalam konfigurasi Spring.
stivlo
81

Hanya ada satu alasan saya menggunakan intellij dan tidak eclipse: Kegunaan

Baik itu debugging, refactoring, penyelesaian otomatis .. Intellij jauh lebih mudah digunakan dengan binding kunci yang konsisten, opsi yang tersedia di mana Anda mencarinya dll. Dari segi fitur, akan sulit bagi intellij untuk mengejar ketinggalan dengan Eclipse, karena yang terakhir memiliki lebih banyak plugin yang tersedia, dan mudah diperluas.

amit
sumber
10
Ini cerdas, dan sangat cepat. Ini menambah banyak fitur kegunaan. Beralih ke kelas subclass atau mengimplementasikan, find-in-path, temukan penggunaan, dll terjadi begitu cepat. Pelengkapan otomatis terjadi inline, cukup satu tab yang akan menyisipkannya. Pelengkap otomatis juga cerdas, hanya saran tidak murni tetapi IDE memikirkan nama dll untuk Anda.
Ravindranath Akila
Ada lebih dari satu alasan untuk menggunakan IntelliJ. Kegunaan bahkan bukan yang teratas dalam daftar. Ada lebih banyak fitur di IntelliJ daripada Eclipse. IntelliJ memiliki lebih sedikit plugin, tetapi lebih banyak plugin yang 'berkualitas'. Jadi, jawaban ini, terlepas dari perolehan suara, salah.
Insinyur Perangkat Lunak
2
@ EngineerDollery Saya tidak akan mengatakan itu "salah", karena amit mengatakan "Hanya ada satu alasan saya menggunakan intellij dan bukan gerhana", bukan "Hanya ada satu alasan untuk menggunakan intellij dan tidak gerhana".
Max Nanasy
54

Mungkin bukan masalah apa yang bisa / tidak bisa dilakukan, tetapi bagaimana .

Sebagai contoh, keduanya memiliki editor yang dikelilingi oleh panel dock untuk proyek, classpath, output, struktur, dll. Tetapi dalam Ide ketika saya mulai mengetik semua keruntuhan ini secara otomatis biarkan saya fokus pada kode itu sendiri; Dalam gerhana semua panel ini tetap terbuka meninggalkan area editor saya sangat berkurang, sekitar 1/5 dari total area yang dapat dilihat. Jadi saya harus mengambil mouse dan mengklik untuk memperkecil di panel itu. Melakukan ini sepanjang hari adalah pengalaman yang sangat membuat frustrasi dalam gerhana.

Hal sebaliknya terjadi dengan jendela tampilan keluaran. Pada Idea menjalankan suatu program, bawalah jendela keluaran / panel untuk melihat keluaran dari program tersebut walaupun itu seminimal mungkin diminimalkan. Dalam gerhana saya harus mengambil mouse saya lagi dan mencari tab output dan klik untuk melihat output program saya, karena jendela output / panel hanyalah satu lagi, seperti semua sisa jendela, tetapi dalam Ide itu dirawat di cara khusus: "Jika pengguna ingin menjalankan programnya, sangat mungkin ia ingin melihat output dari program itu!" Tampaknya sangat alami ketika saya menulisnya, tetapi gerhana gagal dalam konsep antarmuka pengguna dasar ini.

Mungkin ada jalan pintas untuk ini di eclipse (jendela keluaran autohide saat mengedit dan autoshow ketika menjalankan program), tetapi karena beberapa puluhan fitur lainnya jalan pintas harus diburu di forum, bantuan online dll sementara di Ide sedikit lebih " alam".

Ini dapat diulang untuk hampir semua fitur yang dimiliki, pelengkapan otomatis, bungkus kata, tampilan dokumentasi cepat, semuanya. Saya pikir pengalaman pengguna jauh lebih menyenangkan di Ide daripada di gerhana. Kemudian moto menjadi kenyataan "Berkembang dengan senang hati"

Eclipse menangani proyek-proyek besar yang lebih cepat (+300 guci dan +4000 kelas) dan saya pikir IntelliJ Idea 8 sedang mengerjakan ini.

Semua ini tentu saja subyektif. Bagaimana kita bisa mengukur pengalaman pengguna?

OscarRyz
sumber
18
dalam gerhana Anda dapat menekan control-m untuk memperkecil / mengedit jendela edit, atau klik dua kali tab editornya - ini sangat membantu
Scott Stanchfield
Wow ... terima kasih banyak. Akan sangat membantu jika gerhana punya cara saya tahu ini (selain membaca lembar hotkey cheat) Terima kasih banyak. Apakah ada cara Anda mengubah ke jendela output?
OscarRyz
ALT-SHIFT-Q menampilkan jendela Show View ... C untuk konsol ALT-SHIFT-Q, C adalah jalan pintas untuk menuju ke konsol.
Instantsoup
7
Ctrl + Shift + L menampilkan daftar hotkey yang tersedia dalam konteks saat ini.
Dan Berindei
3
Klik dua kali pada judul sub-jendela - sub-jendela APA PUN - dan sub-jendela Anda meledak ke layar penuh. Lakukan lagi untuk memulihkan. Minimalkan panel dengan konsol, dan kemudian ketika output terjadi, konsol muncul secara instan.
Ian
44

Idea 8.0 memiliki ctrl+shift+spacex yang indah yang melakukan pelengkapan otomatis berikut:

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

memutuskan untuk

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

melalui sejumlah tingkat getter / setter.

krosenvold
sumber
27
cukup keren meskipun ada lebih dari dua tingkat yang cukup bau kode ...;)
Epaga
33

Jangan lupa "bandingkan dengan clipboard".

Sesuatu yang saya gunakan sepanjang waktu di IntelliJ dan yang tidak ada padanannya di Eclipse.

Daniel Alexiuc
sumber
6
Juga, riwayat clipboard.
Kimball Robinson
3
Fitur ini dapat ditambahkan ke gerhana dalam bentuk plugin yang disebut AnyEditTools (ditemukan di pasar)
Yaniv
Bahkan tidak tahu tentang sejarah clipboard sampai membaca ini. Luar biasa!
NodeDad
Menyelamatkan saya beberapa kali
OscarRyz
31

Pintasan favorit saya di IntelliJ yang tidak memiliki padanan di Eclipse (yang saya temukan) disebut 'Pergi ke simbol'. CTRL-ALT-SHIFT-Nmemungkinkan Anda mulai mengetik dan membuat kelas, nama metode, nama variabel, dll, dari seluruh proyek.

Paul Morie
sumber
10
ctrl-shift-G di eclipse
dres
ctrl-shift-G bukan seperti yang dideskripsikan Paul .. lebih seperti "ctrl + O" tetapi untuk semua kelas, metode dan variabel pada proyek
Tano
27

Saya mencoba beralih ke IntelliJ karena Android Studio baru. Tapi saya sangat kecewa sekarang. Saya menggunakan Eclipse dengan Plugin Code Recommanders . Berikut adalah contoh sederhana mengapa Eclipse sangat mengagumkan:

Saya ingin membuat yang baru SimpleTimeZone. SimpleTimeZonetidak memiliki Konstruktor dengan argumen nol.

Ctrl + Space dalam Eclipse

masukkan deskripsi gambar di sini

Ctrl + Space dalam IntelliJ

masukkan deskripsi gambar di sini

Di IntelliJ saya tidak mendapat informasi apa jenis konstruktor SimpleTimeZone.

Setelah Enterdi Eclipse

masukkan deskripsi gambar di sini

Saya mendapatkan konstruktor yang dipilih sebelumnya diisi dengan nama variabel yang telah ditentukan. Dan saya bisa melihat tipe dari setiap argumen. Dengan Code Recommanders Eclipse menebak konstruktor yang tepat dengan tipe variabel yang didefinisikan sebelumnya dalam lingkup saat ini dan mengisi konstruktor dengan vars ini.

Setelah Enterdi IntelliJ tidak ada yang terjadi. Saya mendapatkan konstruktor kosong. Saya harus menekan Ctrl + Puntuk melihat argumen yang diharapkan.

masukkan deskripsi gambar di sini

passsy
sumber
25

Jika Anda memiliki kursor pada suatu metode maka CTRL+SHIFT+Iakan muncul implementasi metode tersebut. Jika metode ini adalah interfacemetode, maka Anda dapat menggunakan panah naik dan turun untuk menggilir implementasi:

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

Dimana | adalah (misalnya) di mana kursor Anda berada.

oxbow_lakes
sumber
4
Sebenarnya di Eclipse (setidaknya versi yang saya gunakan), ketika Anda meletakkan kursor Anda pada nama metode dan tekan CTRL + T Anda mendapatkan seluruh hierarki pohon, dari antarmuka paling atas ke implementasi daun, dan dapat melompat untuk salah satu dari mereka.
Yuval
2
Di Eclipse Anda juga dapat Ctrl + Klik nama metode untuk melompat ke definisi metode / implementasi (tergantung pada konteks)
qualidafial
8
Intinya adalah Anda tidak benar-benar menavigasi ke implementasi. Hal ini hanya ditampilkan popup, seperti javadoc dll
kelinci
1
Di Eclipse Anda hanya mengarahkan nama metode dengan Shift untuk membuka sembulan dengan implementasinya
Victor
24

IntelliJ memiliki beberapa inspeksi kode yang cukup canggih (sebanding tetapi berbeda dengan FindBugs).

Meskipun saya sangat merindukan plugin FindBugs saat menggunakan IntelliJ (Integrasi Eclipse / FindBugs cukup keren).

Ini daftar resmi CodeInspections yang didukung oleh IntelliJ

EDIT: Akhirnya, ada plugin findbugs untuk IntelliJ. Ini masih sedikit beta tetapi kombinasi dari Code Inspections dan FindBugs hanya luar biasa!

Mo.
sumber
ya findbugs adalah salah satu dari sedikit penganalisa kode statis yang benar-benar benar-benar menemukan bug praktis untuk kebaikan. :)
Epaga
Apakah Anda memiliki contoh spesifik dari inspeksi kodenya? Barang apa yang bisa dideteksinya?
Epaga
Tautan lain tentang inspeksi: hamletdarcy.blogspot.com/2008/04/…
Mo.
8
Saya menemukan inspeksi kode IntelliJ menemukan lebih banyak bug, memiliki perbaikan cepat yang bermanfaat, dapat memberikan peringatan dan memperbaiki garis saat Anda mengetiknya. (Anda tidak harus menyimpan file dan tidak harus mengkompilasi) Perbuatan ini membuatnya lebih praktis untuk memperbaiki bug sesegera mungkin.
Peter Lawrey
16

Jauh, jauh, jauh lebih banyak refactor.

Tom
sumber
15

Satu hal yang saya gunakan secara teratur adalah menetapkan breakpoint, tetapi kemudian mengontrol apa yang dilakukannya. (Pada pekerjaan terakhir saya, kebanyakan orang menggunakan Eclipse ... Saya ingat terkejut bahwa tidak ada yang bisa menemukan cara melakukan ini di Eclipse.)

Misalnya, dapat membuat breakpoint tidak benar-benar berhenti, tetapi hanya login pesan ke konsol Yang berarti, saya tidak perlu membuang kode saya dengan "System.out.println (...)" dan kemudian mengkompilasi ulang.

jgindin
sumber
2
Anda dapat melakukan ini dengan breakpoint bersyarat dalam gerhana tetapi agak kurang ajar. true
HaveAGuess
Saya pikir intelliJ memungkinkan Anda mengatur jumlah hit yang lebih kompleks, bukan?
Kimball Robinson
3
Lebih mudah untuk menemukan sekarang di gerhana - ini menampilkan kondisi dalam tampilan breakpoints sekarang (sehingga Anda tahu mereka tersedia). Anda dapat memecahkan hitungan, memasukkan kode arbitrer, suka System.out.println("here"); falsemencetak tetapi tidak merusak (pernyataan terakhir adalah ekspresi boolean yang menentukan apakah kita harus istirahat)
Scott Stanchfield
15

Ada banyak hal yang diselesaikan dengan cara yang lebih sederhana, atau tidak ada padanannya:

  • Tindakan autocomplete: Melakukan ctrl+shift+aAnda dapat memanggil tindakan ide apa pun dari keyboard tanpa mengingat kombinasi kuncinya ... Pikirkan tentang gnome-do atau launchy di windows, dan Anda mendapatkan ide! Juga, fitur ini mendukung singkatan CamelCasing;)

  • Rak: Memungkinkan Anda menyimpan beberapa kode dengan mudah, dan kemudian memeriksanya melalui penampil berbeda.

  • Sejarah lokal: Ini jauh lebih baik dikelola, dan lebih sederhana.

  • Anotasi dan riwayat SVN: lebih mudah diinspeksi, dan Anda juga dapat dengan mudah melihat riwayat hanya untuk bagian file sumber secara keseluruhan.

  • Autocomplete di mana-mana, seperti evaluasi ekspresi dan kondisi breakpoint windows.

  • Integrasi Maven ... jauh, lebih sederhana, dan terintegrasi dengan baik.

  • Refactor jauh lebih dekat ke tangan, seperti penyisipan loop, pembungkus / casting, penggantian nama, dan penambahan variabel.

  • Temukan jauh lebih kuat dan terorganisir dengan baik. Bahkan dalam proyek besar

  • Jauh lebih stabil untuk bekerja dengan beberapa cabang proyek besar pada saat yang sama (sebagai mantan bugfixer 1.5Gb oleh sumber cabang, dan kebutuhan untuk bekerja di dalamnya secara bersamaan, ide menunjukkan kemampuannya yang kuat)

  • Antarmuka yang lebih bersih dan sederhana ...

  • Dan, lebih mudah digunakan hanya dengan keyboard, memisahkan kebutuhan menggunakan mouse untuk banyak pengambilan sederhana, menghemat waktu Anda dan memberi Anda lebih fokus pada kode ... di mana itu penting!

Dan sekarang, menjadi sumber terbuka ... basis pengguna Ide akan tumbuh secara eksponensial.

Serginho
sumber
2
Tindakan Autocomplete = akses cepat di eclipse; Saya tidak melihat bagaimana sejarah lokal bisa lebih mudah daripada di gerhana ...
Scott Stanchfield
Seperti yang ditunjukkan Scott, itu Ctrl + 3. Bantuan konten juga tersedia ketika ekspresi evaluasi dan pengaturan breakpoint bersyarat. Saya tidak yakin seberapa jauh lebih dekat untuk menyerahkan refactoring yang disebutkan daripada apa yang diusulkan oleh Ctrl + 1 dan Ctrl + 2. Sebagian besar sisanya terdengar subyektif.
nitind
14

Cari dan ganti struktural.

Misalnya, cari sesuatu seperti:

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

Di mana $ string $ adalah literal, dan $ expr $ adalah ekspresi dari ketik my.package.and.Class, lalu ganti dengan:

  $expr$.inspect($string$);
Darron
sumber
1
Sebenarnya Anda dapat mencari tipe cast / () - operator / dalam kode Anda, hampir tidak mungkin dengan pencarian teks biasa
Karl
13

Pengaturan waktu saya mungkin sedikit berbeda dalam hal utas ini, tetapi saya hanya harus merespons.

Saya penggemar gerhana besar - menggunakannya sejak penampilan pertama. Seorang teman memberi tahu saya (10+ tahun yang lalu) bahwa itu akan menjadi pemain. Dia benar.

Namun! Saya baru saja mulai menggunakan IntelliJ dan jika Anda belum melihat atau menggunakan daftar perubahan - Anda kehilangan surga pemrograman.

Kemampuan untuk melacak file saya yang diubah (pada cabang pengembangan ala clearcase) adalah sesuatu yang saya cari dalam sebuah plugin untuk gerhana. Intellij melacak semua perubahan Anda untuk satu komit, sangat mudah. Anda dapat mengisolasi file yang diubah dengan daftar khusus. Saya menggunakannya untuk file konfigurasi yang harus unik secara lokal, tetapi terus-menerus ditandai ketika saya menyinkronkan atau membandingkan dengan repositori - daftar mereka di bawah daftar perubahan, saya dapat memonitor mereka, tetapi dengan rapi menyelipkannya sehingga saya dapat fokus pada penambahan nyata Saya sedang membuat.

Juga, ada plugin Log Komit yang menampilkan teks dari semua perubahan untuk SCCS yang tidak terintegrasi dengan perangkat lunak pelacakan bug Anda. Menempelkan log ke riwayat pekerjaan tiket menangkap file, versinya, tanggal / waktu, dan cabang / tag. Keren sekali.

Semua ini dapat didukung melalui plugin (atau perangkat tambahan di masa depan) dalam gerhana, saya bertaruh; namun, Intellij membuat ini mudah.

Akhirnya, saya benar-benar bersemangat tentang cinta arus utama untuk produk ini - penekanan tombol, jadi itu menyakitkan, tetapi menyenangkan.

G Craig
sumber
Saya sangat suka fitur daftar perubahan. Ini mirip dengan set tambalan / rak independen VCS yang dapat Anda kerjakan secara independen dan yang dapat dikaitkan dengannya juga dapat dikaitkan dengan pelacak masalah Anda. Anda memiliki riwayat lokal (seperti VCS mini) yang melacak perubahan Anda saat Anda bekerja di hampir semua detail level garis sehingga Anda dapat kembali ke hampir semua titik waktu jika perlu. Juga, ketika Anda berganti tugas, semua IDEA mengingat keadaan IDE untuk tugas baru dan mengembalikan file yang terbuka, posisi jendela, dll.
sylvanaar
Daftar perubahan sebenarnya adalah fitur SVN. IntelliJ hanya memungkinkan Anda untuk melihat dan mengelolanya di tempat yang tidak dimiliki plugin Eclipse SVN.
Neil Traft
12

IntelliJ debugger memiliki fitur yang sangat berguna yang disebut "Evaluate Expression", yang jauh lebih baik daripada liontin gerhana. Ini memiliki penyelesaian kode lengkap dan saya anggap secara umum "lebih bermanfaat".

Mo.
sumber
8
Eclipse juga memiliki evaluator ekspresi yang menawarkan penyelesaian kode. Pergi ke Window -> Show View -> Debug -> Display Ketika berhenti pada breakpoint di debugger Anda dapat mengevaluasi ekspresi sewenang-wenang dalam Tampilan Tampilan itu.
laz
11

Bagi saya itu seribu hal kecil. Beberapa makro, tata letak GUI secara umum di Eclipse saya temukan mengerikan. Saya tidak dapat membuka banyak proyek di berbagai jendela di Eclipse. Saya dapat membuka banyak proyek, tetapi kemudian sistem berbasis tampilan ini menukar banyak hal di sekitar saya ketika saya berganti file. Inspeksi kode IntelliJ tampak lebih baik. Pembantu popupnya untuk memperbaiki masalah umum itu bagus. Banyak hal kegunaan sederhana seperti bilah samping tempat saya dapat mengarahkan kursor ke hot spot dan itu akan memberi tahu saya setiap subkelas penerapan metode atau metode yang saya implementasikan dan dari mana.

Setiap kali saya harus menggunakan, atau menonton seseorang menggunakan, Eclipse sepertinya mereka dapat melakukan sebagian besar hal yang dapat saya lakukan di IntelliJ, tetapi itu membutuhkan waktu lebih lama dan lebih clunkier.

Chris Kessel
sumber
9

Perkenalkan variabel. ( Ctrl+Alt+Vdi Windows, Cmd+Alt+Vdi OSX)

Katakanlah Anda memanggil metode, service.listAllPersons() Hit Ctrl+Alt+Vdan Enter, dan variabel untuk nilai balik dari panggilan metode dimasukkan:

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

Menghemat Anda mengetik, dan Anda tidak perlu memeriksa jenis pengembalian metode yang Anda panggil. Sangat berguna saat menggunakan obat generik, mis

new ArrayList<String>()

[perkenalkan variabel]

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

(tentu saja Anda dapat dengan mudah mengubah nama variabel sebelum memukul Enter)

rlovtang
sumber
13
Ini adalah Ctrl + 2 L di Eclipse.
Micke
2
Bagus, saya tidak tahu, dan juga tidak ada pengguna Eclipse yang saya tanyakan. Apakah fitur ini sudah lama menjadi bagian dari Eclipse?
rlovtang
3
Cukup lama ... Jika Anda menggunakan perbaikan cepat, control+1(pengikatan kunci paling jelas di dunia, eh?), Ini menyarankan hal-hal yang dapat Anda lakukan di lokasi kursor saat ini, mirip dengan niat di IDEA. Ini daftar "menetapkan lokal", "menetapkan bidang" dan opsi lainnya, misalnya. control+2, Ladalah jalan pintas untuk itu.
Scott Stanchfield
Dalam gerhana, setelah Anda memilih ctrl+2, L, Anda masih dapat mengubah jenis variabel yang dibuat menjadi jenis sisi kanan (secara default), atau jenis apa pun: jenis variabel dapat dipilih dengan TAB.
Gaetan
8

IntelliJ memiliki dukungan intellisense dan refactoring dari kode ke dalam dokumen jspx.

krosenvold
sumber
Bisakah Anda mengklarifikasi apa yang Anda maksud dengan intellisense? Eclipse juga memiliki penyelesaian otomatis, tetapi apakah Anda bermaksud sesuatu yang lain?
Epaga
Eclipse tidak memiliki pelengkapan otomatis dalam dokumen jspx AFAIK. Dalam jsp biasa ya, jspx tidak.
krosenvold
3
Maksudnya adalah jika Anda memiliki JSP yang merujuk ke properti di POJO, dan Anda mengganti nama properti, JSP Anda diperbarui dengan benar. Dukungan JSP IntelliJ menendang Eclipse / WTP!
erickson
2
Saya tidak bisa mendapatkan pelengkapan otomatis Eclipse untuk berfungsi dalam ekspresi JSP EL, titik. JSP atau JSPX, tidak masalah, hanya tidak mengerti. IntelliJ menangani tagx dan jspx seperti yang Anda harapkan: seperti tag atau file jsp.
erickson
Sangat menyenangkan melihat bagaimana pengguna gerhana memilih hal-hal yang tidak mereka sukai. Jika pengamatan saya salah, harap balas dengan komentar. Katakan padaku bagaimana melakukan ini di gerhana!
krosenvold
7

Bagi saya, ini adalah dukungan pakar IDEA, terutama dalam versi 9 tidak ada duanya. Sinkronisasi on-the-fly proyek ke model pakar hanya fantastis dan membuat pengembangan menyenangkan.

mdma
sumber
6

Intellij memiliki plug-in SVN yang jauh lebih unggul daripada Subversif atau Subclipse dan berfungsi! Jumlah waktu yang kami buang untuk menggabungkan file sumber menggunakan Eclipse tidak tahan untuk dipikirkan. Ini bukan masalah dengan IntelliJ karena plugin membantu Anda lebih banyak.

Juga plugin Subclipse tidak dapat diandalkan - kami secara teratur memiliki contoh di mana plugin tidak berpikir ada kode yang diperiksa ke SVN oleh pengembang lain, tetapi ada - server CI telah memprosesnya!

Tony Ruddock
sumber
tepatnya, dukungan svn luar biasa dalam ide, sementara subclipse / subversif buggy, canggung dan tidak terlalu dapat diandalkan; Hal yang sama berlaku untuk git, sebenarnya saya tidak ingat intergrasi git yang masuk akal untuk gerhana dan intelliJ menanganinya dengan sangat baik
Kamil Mikolajczyk
Secara pribadi saya pikir Anda harus melakukan semua kontrol versi Anda pada baris perintah, bahkan jika IDE Anda dapat melakukannya. Ketika Anda melakukan itu di baris perintah, maka Anda akan tahu bagaimana mem-bash script itu nanti, yang benar-benar bisa mempercepat pengembangan Anda. Terkadang rekan kerja saya meminta bantuan dengan subclipse atau git's eclipse plugin, saya hanya memberitahu mereka untuk berhenti menggunakannya dan melakukannya di baris perintah.
msknapp
4

VIM Emulator. Plugin ini menyediakan emulasi vi / vim / gvim yang hampir lengkap saat mengedit file dalam IDEA. Fungsionalitas berikut didukung:

  • Tombol gerak
  • Penghapusan / Pengubahan
  • Sisipkan perintah mode
  • Tanda
  • Daftar
  • VIM undo / redo
  • Perintah mode visual
  • Beberapa perintah Ex
  • Beberapa: mengatur opsi
  • Ekspresi reguler VIM lengkap untuk pencarian dan pencarian / ganti
  • Makro
  • Diagraf
  • Sejarah baris perintah
  • Sejarah pencarian
  • Jumplists
  • Bantuan VIM

beberapa komentar tentang plugin ini dari http://plugins.jetbrains.net/plugin/?id=164

Saya tidak bisa melihat kembali ke ide lain karena plugin ini .. Terbaik dari kedua dunia ... Keren !. itulah yang kurang dalam semua IDE.
Maciek Kreft
sumber
Saya setuju, saya tidak bisa hidup tanpa plugin IdeaVim saya, namun untuk bersikap adil ada plugin Vim untuk Eclipse, tepat bernama VimPlugin ( vimplugin.org )
Keith
3
Vwrapper adalah plugin Vim Eclipse lainnya. Dan itu bekerja lebih baik daripada plugin Idea Vim (tombol repeat berfungsi). Vwrapper tidak menangani pencarian dan penggantian dari command-line, meskipun (meskipun pencarian berfungsi dengan baik), juga tidak memungkinkan mendefinisikan macro secara interaktif. Setuju bahwa dukungan Vim sangat penting dalam IDE. Tidak akan menggunakan Eclipse atau Ide tanpanya!
Brent Faust
1
The viableplugin.com sangat baik untuk gerhana. Saya menggunakan intellij juga dan saya menemukan bahwa intellij kadang-kadang terputus di editor dalam beberapa keadaan dan tidak menanggapi perintah.
John Lemp
3

Beberapa hal lain:

  • menyebarkan parameter / pengecualian saat mengubah tanda tangan metode, sangat berguna untuk memperbarui metode jauh di dalam tumpukan panggilan
  • Validasi kode SQL dalam string diteruskan sebagai argumen untuk panggilan jdbc (dan semua hal injeksi bahasa yang baru dipaketkan)
  • diimplementasikan dalam / ditimpa dalam ikon untuk antarmuka & kelas (dan metode mereka) dan navigasi implementasi cerdas (Ctrl + Alt + Klik atau Ctrl + Alt + B)
  • menghubungkan antara antarmuka EJB 2.1 dan kelas-kelas kacang (termasuk dukungan refactoring); yang lama, tetapi masih sangat berharga ketika mengerjakan proyek yang lebih tua
Andrei
sumber
2

Dua hal yang dilakukan IntelliJ terhadap Eclipse tidak begitu berharga bagi saya:

Pemisah metode: garis abu-abu samar di antara metode menghasilkan banyak kode lebih mudah dibaca

Teks anti-aliasing: membuat kode terlihat bagus di IDE

yalestar
sumber
2
Saya benar-benar menemukan IntelliJ anti-aliasing jauh lebih buruk daripada Eclipse. Namun ini adalah beberapa versi IntelliJ yang lalu. Apakah sudah diperbaiki?
laz
Saya menggunakan font proporsional Verdana yang menurut saya terlihat lebih bagus daripada menggunakan anti-aliasing.
Peter Lawrey
2

Salah satu fitur yang sangat berguna adalah kemampuan untuk membangun sebagian proyek reaktor Maven sehingga hanya bagian-bagian yang Anda butuhkan yang disertakan.

Untuk membuat ini sedikit lebih jelas, pertimbangkan kasus kumpulan file WAR dengan banyak sumber daya umum (misalnya JavaScript, file konfigurasi Spring dll.) Dibagikan di antara mereka menggunakan teknik overlay. Jika Anda bekerja pada beberapa halaman web (berjalan di Jetty) dan ingin mengubah beberapa kode overlay yang disimpan dalam modul terpisah maka biasanya Anda harus berhenti Jetty, jalankan build Maven, mulai Jetty lagi dan mulai terus. Ini adalah kasus dengan Eclipse dan hampir setiap IDE lain yang pernah saya kerjakan. Tidak demikian halnya dengan IntelliJ. Dengan menggunakan pengaturan proyek, Anda dapat menentukan bagian mana dari modul mana yang ingin Anda sertakan dalam pembuatan latar belakang. Akibatnya, Anda berakhir dengan proses yang tampak mulus. Anda membuat perubahan ke hampir semua kode dalam proyek dan langsung tersedia setelah Anda menyegarkan browser.

Sangat rapi, dan sangat cepat.

Saya tidak bisa membayangkan coding front end dalam sesuatu seperti YUI mendukung DWR / SpringMVC tanpa itu.

Gary Rowe
sumber
2

Pembukaan jawaban saya: Penggunaan Eclipse saya terbatas. Kami membutuhkan Java IDE untuk bekerja pada Windows dan Mac dan port Mac melambat hari demi hari. Ini bertahun-tahun yang lalu dan saya yakin tidak apa-apa sekarang. Tapi itulah yang membuat kami beralih ke IntelliJ dan kami senang dengan itu.

Sekarang untuk jawaban saya: Satu perbedaan besar yang belum saya lihat disebutkan adalah dukungan teknis lebih baik dengan IntelliJ / Jet Brains. Kami mengirim e-mail ke JetBrains dan mendapatkan jawaban yang pasti dalam waktu kurang dari satu jam. Mencari jawaban untuk masalah Eclipse menghasilkan jawaban yang biasa, "Kamu idiot" (biasanya sejumlah kecil balasan) bersama dengan jumlah yang jauh lebih besar dari jawaban yang bermanfaat dan bermanfaat. Tapi butuh beberapa penyortiran untuk mendapatkan jawaban yang sebenarnya.

Jim Dodd
sumber
Eclipse adalah open source. Tidak ada yang dibayar untuk menjawab pertanyaan atau memperbaiki bug. Beli IDE berbasis Eclipse komersial misalnya MyEclipse dan dapatkan dukungan untuk uang Anda. Statistik cepat: Saya telah melaporkan ke JetBrains 56 bug, 23 di antaranya ditutup; dari 65 bug yang dilaporkan ke Eclipse 33 ditutup. Satu-satunya perbedaan adalah bahwa JetBrains memperbaiki bug sedikit lebih cepat daripada Eclipse.
Victor
2

Sesuatu yang saya gunakan di IntelliJ sepanjang waktu adalah refactoring saat saya mengetik. Saya telah menulis ulang kelas dari cetakan (awalnya ditulis dalam gerhana) menggunakan kedua IDE dan saya menggunakan sekitar 40% lebih sedikit penekanan tombol / klik mouse untuk menulis kelas yang sama di IntelliJ daripada gerhana.

Saya tidak ingin menggunakan Eclipse sampai mereka mendukung sebanyak mungkin refactoring dengan potongan kode yang tidak lengkap.

Berikut adalah daftar fitur yang lebih panjang di IntelliJ 8.0 / 8.1 [ http://www.jetbrains.com/idea/features/index.html]

Peter Lawrey
sumber
2

Ada satu hal yang dilakukan IntelliJ jauh lebih baik daripada Eclipse dan itu mengosongkan kantong Anda!

Namun saya lebih suka menggunakannya dan satu keuntungan besar yang dimiliki Eclipce adalah cara sinkronisasi dengan sistem file, untuk proyek-proyek besar dan komputer yang lambat (ya dalam lingkungan kerja PC jauh lebih lambat daripada yang kita miliki di rumah) Eclipse tampaknya berjuang di mana IntelliJ tampaknya lebih cepat meskipun dengan waktu pengindeksan awal yang lebih lambat.

Edisi IntelliJ Community jelas membuat penggunaannya gratis tetapi Anda segera ingin itu refactoring tambahan dan barang-barang kecil yang bagus tidak termasuk dalam edisi CC.

Menurut pendapat saya, ini umumnya pengalaman pengguna yang lebih baik tetapi apakah sepadan dengan biayanya adalah pertanyaan bagi setiap pengembang untuk menjawab sendiri.

Tapi mari kita bersyukur kita memiliki tiga IDE hebat untuk Java saat ini dengan NetBeans yang semakin baik setiap saat.

Shawn Vader
sumber
3
IntelliJ Ultimate Edition memang tidak gratis, tetapi sebagai pengembang, saya menggunakan IDE saya sekitar 8 hingga 10 jam sehari. Jadi saya tidak melihat harganya yang masuk akal sebagai cacat !!
Romain Linsolas
2

Analisis aliran data : analisis aliran balik antar-prosedural dan analisis aliran maju, seperti dijelaskan di sini . Pengalaman saya didasarkan pada Edisi Komunitas, yang melakukan analisis aliran data dengan cukup baik. Itu gagal (menolak untuk melakukan apa pun) dalam beberapa kasus ketika kode sangat kompleks.

Ville Laitila
sumber
2

Pertama-tama saya suka intellij. Setidaknya ada seratus fitur yang kurang dari gerhana itu. Saya berbicara tentang keandalan dan kecerdasan yang tidak dapat dijelaskan oleh hiperbola dalam hal refactoring, penggantian nama, pemindahan, dan lainnya yang telah disebutkan.

TETAPI, ada satu hal yang tidak diizinkan oleh Intellij. Itu tidak memungkinkan menjalankan beberapa proyek sekaligus di bawah vm yang sama.

Ketika Anda memiliki proyek terpisah untuk depan, tengah, inti, agen..etc, di mana mereka semua harus berinteraksi satu sama lain, Anda tidak dapat dengan cepat memodifikasi dan men-debug pada saat yang sama, afaik. Satu-satunya cara saya saat ini mengatasi ini adalah dengan menggunakan skrip semut untuk menyebarkan dan memperbarui guci di proyek-proyek tergantung, atau menggunakan pakar.

Eclipse memungkinkan beberapa proyek untuk didebug dalam satu contoh ide vm.

blicket
sumber
4
Ini seharusnya sudah diposting di Hal Eclipse bisa melakukan itu IntelliJ Tidak bisa , bukan sebaliknya.
Neil Traft
IntelliJ melakukan ini tanpa masalah sama sekali. Jawaban ini benar-benar salah.
Insinyur Perangkat Lunak