IntelliJ'de Eclipse'de mümkün olmayan şeyler mümkün mü?


365

Her iki yönden de geçiş yapan ve biri ya da diğeri tarafından küfür eden insanlardan duydum.

Büyük bir Eclipse hayranı olmak, ancak IntelliJ'i denemek için zamanım olmadı, Eclips ile yapamayacağınız IntelliJ ile yapabileceğiniz bazı özel şeyleri "eski Eclipsi" olan IntelliJ kullanıcılarından duymakla ilgileniyorum.

Not : Bu öznel bir soru değildir ya da hiç bir IDE kutsal savaşına dönüşmez. Lütfen herhangi bir flamebait cevabını küçümseyin .



1
Eclipse'den Netbeans'a IntelliJ rubyMine'e gittim ve her biri öncekinden bir 'adım yukarı' idi. Bir süredir olduğu gibi özel olarak ne olduğunu (dolayısıyla bu bir cevap değil) göremiyorum ama en büyük sıçrama, sadece daha "entegre" olan ve daha fazla işlevselliğe sahip olduğu ve daha kolay bir şeyler sunduğu görünen rubyMine oldu. yolu kullanmak. Ayrıca mücevher sorunları, bağımlılıklar ve benzeri diğerlerinden daha iyi ele gibiydi.
Junky

IntelliJ'den Eclipse'e (android geliştirme nedeniyle) geçmek istiyorum, bu nedenle bu tür soru ve cevaplar çok faydalıdır.
krom

8
@chrome Android şimdi başka bir şekilde geçiş yapıyor: developer.android.com/sdk/instal/studio.html
Daniel Alexiuc

1
Mümkün olduğunca bu gönderiler var ve tüm cevaplar aslında tutulma, bazen daha kolay IMHO yapılabilir şeyler işaret ediyor. Intellij ile benim $ değer var gibi hissediyorum ama bunu satın tek nedeni Javascript otomatik tamamlama oldu. Eğer tüm bu olsun, ben sadece ucuz için webstorm satın olabilir. Muhtemelen aynı şeyi yapan bir tutulma eklentisi de vardır. Açıkçası tutulmanın daha tutarlı olduğunu düşünüyorum ve Perspektifler özelliğini özlüyorum.
dres

Yanıtlar:


185

CTRL tıklama her yerde çalışır

Tıklanan nesnenin tanımlandığı yere götüren CTRL tıklama her yerde çalışır - yalnızca Java sınıflarında ve Java kodundaki değişkenlerde değil, Bahar yapılandırmasında (sınıf adını, özelliğini veya fasulye adını tıklatabilirsiniz), Hazırda Bekletme modunda (siz özellik adına veya sınıfına veya dahil edilen kaynağa tıklayabilir), Java sınıfından Bahar veya Hazırda Bekletme çekirdeği olarak kullanıldığı yere tek bir tıklamayla gidebilirsiniz; dahil edilen JSP veya JSTL etiketine tıklamak da çalışır, JavaScript değişkenine veya işlevine ctrl-click sizi tanımlandığı yere getirir veya HTML veya JSP'de diğer .js dosyaları ve JS kodu da dahil olmak üzere birden fazla yer varsa bir menü gösterir Dosyalar.

Birçok dil için otomatik tamamlama

Hazırda

Hazırda Yapılandırma'da (sınıf, özellik ve DB sütun adları dahil) HSQL ifadelerinde, Bahar yapılandırmasında otomatik tamamlama

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

ve size bu mülke enjekte edebileceğiniz çekirdeklerin listesini gösterecektir.

Java

Java kodunda çok akıllı otomatik tamamlama:

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

ve SADECE getName () , getAddress () ve toString () (yalnızca türe göre uyumludur) ve daha alakalı bir isme sahip olduğu için listenin başında getName () olduğunu gösterir. Halen EAP'de olan en son sürüm 8 daha da akıllı otomatik tamamlamaya sahiptir.

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>

ve sessizce otomatik olarak tamamlayacak

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

JavaScript

JavaScript'te akıllı otomatik tamamlama.

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>;
}

ve projenizdeki diğer JS nesnelerinde nasıl * yöntemler elde ederseniz edin SADECE getName () ve getAddress () öğelerini gösterir ve this.getName () üzerinde ctrl tuşuna basıldığında , bunun tanımlanmış olduğu yere projenizde başka getName () işlevleri de var.

HTML

<Script src = "", <img src = "" vb. Gibi dosyalara giden yollarda otomatik tamamlama ve ctrl tıklama işlemlerinden bahsetmiş miydim?

HTML etiketi özelliklerinde otomatik tamamlama. Hem özellik adları hem de değerler olan HTML etiketlerinin stil niteliğinde otomatik tamamlama. Sınıf özniteliklerinde de otomatik tamamlama.
<Div class = "<CTRL-SPACE> yazdığınızda, projenizde tanımlanan CSS sınıflarının listesini gösterecektir. Birini seçin, ctrl tuşuna basarak tıklayın ve tanımlandığı yere yönlendirileceksiniz.

Kendi dilinizde kolay aydınlatma

En son sürümde dil enjeksiyonu vardır, bu nedenle özel JSTL etiketinizin genellikle JavaScript içerdiğini ve içindeki JavaScript'i vurgulayacağını beyan edebilirsiniz.

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

Tüm projelerde endeksli arama.

Herhangi bir Java sınıfının veya yönteminin Kullanımlarını Bul özelliğini kullanabilirsiniz ve yalnızca Java sınıfları değil, Hazırda Bekletme, Bahar, JSP ve diğer yerler de dahil olmak üzere nerede kullanıldığını bulacaktır. Yeniden Adlandırma Yöntemi Yeniden Adlandırma yöntemini yalnızca Java sınıflarında değil, yorumların da dahil olduğu her yerde yeniden düzenleme (yorumlardaki dizenin gerçekten yöntem adı olup olmadığından emin olamaz, bu yüzden soracaktır). Ve aynı ada sahip başka bir sınıfın yöntemleri olsa bile sadece yönteminizi bulacaktır. İyi kaynak kontrolü entegrasyonu (SVN, changelistleri destekliyor mu? IDEA, her kaynak kontrolü için bunları destekliyor), değişikliklerinizi yama yapmadan başka ekip üyelerine gönderebilmeniz için değişikliklerinizle bir yama oluşturma yeteneği.

Geliştirilmiş hata ayıklayıcı

Hata ayıklayıcının izleme penceresinde HashMap'a baktığımda, mantıksal görünümü görüyorum - anahtarlar ve değerler, Eclipse'de son yaptığımda hash ve sonraki alanlarla girişleri gösteriyordu - HashMap'ta hata ayıklama değilim , sadece bakmak istiyorum içeriği.

İlkbahar ve Hazırda Bekleme yapılandırması doğrulaması

Düzenlediğinizde Spring ve Hibernate yapılandırmasını doğrular, bu nedenle sınıf adını yanlış yazdığımı veya Spring cfg'im geçersiz olacak şekilde yapıcı parametresini eklediğimi bilmek için sunucuyu yeniden başlatmam gerekmez.

Son denediğimde, Windows XP x64'te Eclipse'i çalıştıramadım.

ve size person.name veya person.address önerecektir . Person.name üzerinde Ctrl tuşunu basılı tuttuğunuzda sizi Person sınıfının getName () yöntemine yönlendirir .

Tür Pattern.compile("");, orada \\ koymak CTRL SPACE vurmak ve size düzenli ifade koymak ne hakkında yararlı ipucu görüyoruz. Burada dil enjeksiyonunu da kullanabilirsiniz - string parametresini alan kendi yönteminizi tanımlayın, IntelliLang seçenekleri iletişim kutusunda parametrenizin normal ifade olduğunu bildirin - ve orada da otomatik tamamlama verecektir. Söylemeye gerek yok, yanlış düzenli ifadeleri vurgular.

Diğer özellikler

Eclipse'de bulunup bulunmadığından emin olmadığım birkaç özellik var. Ancak en azından Eclipse kullanan ekibimizin her bir üyesi, yerel değişiklikleri genellikle WinMerge gibi kaynak denetimindeki değişikliklerle birleştirmek için bazı birleştirme aracı kullanır. Asla ihtiyacım yok - IDEA'da birleşmek benim için yeterli. 3 tıklama ile kaynak denetiminde dosya sürümlerinin listesini görebilirim, 3 tıklama ile önceki sürümleri veya önceki ve geçerli sürümleri karşılaştırabilirim ve birleştirebilirim.

WEB-INF\libHer bir dosyayı ayrı ayrı seçmeden klasör içindeki tüm .jar'lara ihtiyacım olduğunu belirtmeye izin verir , böylece birisi bu klasöre yeni .jar verdiğinde otomatik olarak seçer.

Yukarıda bahsettiğimiz şey muhtemelen yaptığı şeyin% 10'udur. Maven, Flex, Swing, EJB ve daha birçok şey kullanmıyorum, bu yüzden onlara nasıl yardımcı olduğunu söyleyemem. Ama öyle.


26
Java kodunun otomatik olarak tamamlanmasıyla ilgili iki örnek tutulmada aynı şekilde çalışır. Daha fazla temsilcisi olan biri sadece java örneklerini silebilir mi?
Craig P. Motlin

9
Örneklerinizin çoğu Eclipse'de doğrudan veya 3. taraf eklentileri aracılığıyla kullanılabilir. Eclipse içinde svn birleştirme için harici bir araç kullanan kimse bilmiyorum. Bahar / hazırda bekletme / javascript editörleri (ve otomatik tamamlama) için 3. taraf eklentileri vardır. Normal ifade ve jsp EL gelince, beni dövdü :)
Yoni

1
Jboss Tools eklentisi Hazırda Beklet ve JSF ifadelerinin otomatik tamamlanmasını ekler.
Damo

4
Tutulma hata ayıklama görünümü için, uygulama ayrıntılarından ziyade koleksiyonların içeriğini gösterme seçeneği vardır. Listeler ve kümeler için içeriklerini gösterir. Haritalar için, anahtar / değer çiftlerinin bir listesini gösterir. Özel ekranlar ayarlamak da mümkündür.
16'da caydır

1
Eclipse 3.7 (Indigo), Bahar yapılandırmasında sınıf adlarını da otomatik olarak tamamlar.
stivlo

81

Tutulma değil intellij kullanmamın tek bir nedeni var: Kullanılabilirlik

Hata ayıklama, yeniden düzenleme, otomatik tamamlama olsun ... Intellij, tutarlı anahtar bağlamaları, aradığınız seçenekler vb. İle kullanımı çok daha kolaydır. ikincisi, intellij'den çok daha fazla eklentiye sahiptir ve kolayca genişletilebilir.


10
Zeki ve çok hızlı. Bu, birçok kullanılabilirlik özelliği ekler. Bir alt sınıfa veya uygulayıcı sınıfa geçmek, yol bulma, kullanımları bulma vb. Çok hızlı gerçekleşir. Otomatik tamamlama satır içinde gerçekleşir, yalnızca bir sekme ekler. Otomatik tamamlama da akıllıdır, sadece saf öneriler değil, IDE sizin için isim vb. Düşünür.
Ravindranath Akila

IntelliJ'i kullanmak için birden fazla neden var. Kullanılabilirlik listenin başında bile değildir. IntelliJ'de Eclipse'den daha fazla özellik var. IntelliJ'nin toplamda daha az eklentisi vardır, ancak daha fazla 'kaliteli' eklentisi vardır. Yani, bu oylama, oylamalara rağmen yanlış.
Yazılım Mühendisi

2
Amit "tek bir sebebi vardır söylediğinden beri @EngineerDollery ben, bu en "yanlış" demezdim ben değil," tek bir sebebi olabilir edilir gölgede intellij değil kullanmak " için Tutulma intellij kullanıp değil".
Max Nanasy

54

Muhtemelen neler yapılabileceği / yapılamayacağı değil, nasıl yapılacağıdır .

Örneğin, her ikisi de proje, sınıfyolu, çıktı, yapı vb. İçin dock panelleri ile çevrilmiş editörlere sahiptir. Ancak Fikir'de tüm bu çöküşü otomatik olarak yazmaya başladığımda kendimi koduna odaklamama izin verin; Tutulmada, tüm bu paneller editör alanı çok azaltılmış, toplam görüntülenebilir alanın yaklaşık 1 / 5'i kadar açık kalıyor. Bu yüzden fareyi kapmam ve bu panellerde simge durumuna küçültmek için tıklamam gerekiyor. Bunu gün boyu yapmak, tutulmada çok sinir bozucu bir deneyimdir.

Tam tersi görünüm çıkış penceresi ile olur. Fikir çalıştıran bir program, program küçültülmüş olsa bile, programın çıktısını görmek için çıktı penceresini / panelini getirir. Tutulma sırasında faremi tekrar tutup çıktı sekmesini aramalı ve program çıktımı görüntülemek için tıklamalıyım, çünkü çıktı penceresi / paneli, diğer tüm pencereler gibi sadece bir tane, ama Fikir'de tedavi ediliyor özel bir yol: "Eğer kullanıcı programını çalıştırmak istiyorsa, büyük olasılıkla o programın çıktısını görmek istiyor!" Yazarken çok doğal görünüyor, ama bu temel kullanıcı arayüzü konseptinde tutulma başarısız oluyor.

Muhtemelen eclipse'de bunun için bir kısayol var (düzenleme sırasında otomatik olarak çıkış penceresi ve programı çalıştırırken otomatik olarak göster), ancak diğer onlarca özellik olarak, kısayolun forumda, çevrimiçi yardımda vb. Idea'da avlanması biraz daha fazla " doğal".

Bu, otomatik tamamlama, sözcük kaydırma, hızlı belge görünümü, her şeye sahip neredeyse tüm özellikler için tekrarlanabilir. Kullanıcı deneyiminin Fikir'de tutulmadan çok daha hoş olduğunu düşünüyorum. Sonra slogan gerçek oluyor "Zevkle geliştirin"

Eclipse daha hızlı daha büyük projeleri (+300 kavanoz ve +4000 sınıf) ele alıyor ve bence IntelliJ Idea 8 bu konuda çalışıyor.

Bütün bunlar elbette özneldir. Kullanıcı deneyimini nasıl ölçebiliriz?


18
tutulma sırasında düzenleme penceresini küçültmek / küçültmek için control-m tuşuna basabilir veya düzenleyici sekmesini çift tıklatabilirsiniz - bu çok yardımcı olur
Scott Stanchfield

Vay be ... çok teşekkürler. Tutulmanın bunu bildiğim bir yolu olsaydı çok yararlı olurdu (kısayol tuşları hile sayfasını okumanın yanında) Çok teşekkürler. Çıkış penceresine geçmenin bir yolu var mı?
OscarRyz

ALT-SHIFT-Q bir Görünüm Göster penceresi açar ... C konsol içindir ALT-SHIFT-Q, C konsola gitmek için kısayoldur.
Instantsoup

7
Ctrl + Üst Karakter + L, geçerli bağlamda kullanılabilen kısayol tuşlarının bir listesini gösterir.
Dan Berindei

3
Bir alt pencere başlığına çift tıklayın - HERHANGİ bir alt pencere - ve alt pencereniz tam ekrana yayılır. Geri yükleme için tekrar yapın. Paneli konsolla simge durumuna küçültün ve çıktı alındığında konsol anında açılır.
Ian

44

Fikir 8.0, ctrl+shift+spaceaşağıdaki otomatik tamamlamayı yapan sevimli x 2'ye sahiptir:

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

karar verir

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

herhangi bir sayıda alıcı / ayarlayıcı aracılığıyla.


27
iki seviyeden fazla bir şey oldukça kod kokusu olsa da oldukça serin ...;)
Epaga

33

"Pano ile karşılaştırın" unutma.

IntelliJ'de her zaman kullandığım ve Eclipse'de eşdeğeri olmayan bir şey.


6
Ayrıca, pano geçmişi.
Kimball Robinson

3
Bu özellik, tutulmaya AnyEditTools (pazarda bulundu) adı verilen bir eklenti şeklinde eklenebilir
Yaniv

Bunu okuyana kadar pano geçmişini bile bilmiyordum. Mükemmel!
NodeDad

Beni birkaç kez
kurtardı

31

Eclipse'de (bulduğum) eşdeğeri bulunmayan IntelliJ'deki favori kısayoluma 'Sembole git' denir. CTRL-ALT-SHIFT-Ntüm projeden yazmaya ve sınıfları, yöntem adlarını, değişken adlarını vb.


10
Tutulmada ctrl-shift-G
dres

ctrl-shift-G, Paul'ün tanımladığı şey değildir .. daha çok "ctrl + O" gibidir ancak projedeki tüm sınıflar, yöntemler ve değişkenler için
Tano

27

Yeni Android Studio nedeniyle IntelliJ'e geçmeye çalıştım. Ama şimdi çok hayal kırıklığına uğradım. Kod Recommanders Eklentisi ile Eclipse kullanıyorum . Eclipse'in neden bu kadar harika olduğuna dair basit bir örnek:

Yeni bir tane oluşturmak istiyorum SimpleTimeZone. SimpleTimeZonesıfır bağımsız değişkenine sahip bir Yapıcı yok.

Ctrl + Space Tutulma

resim açıklamasını buraya girin

Ctrl + Space IntelliJ'de

resim açıklamasını buraya girin

IntelliJ'de ne tür kurucuların olduğu SimpleTimeZonehakkında hiçbir bilgi almıyorum .

EnterTutulmadan Sonra

resim açıklamasını buraya girin

Önceden seçilen yapıcıyı önceden tanımlanmış değişken adları ile dolduruyorum. Ve her argümanın türünü görebiliyorum. Kod Recommanders ile Eclipse, geçerli kurucuda önceden tanımlanmış değişken tiplerine göre sağ kurucuyu tahmin eder ve kurucuyu bu değişkenlerle doldurur.

Sonra EnterIntelliJ içinde hiçbir şey olmuyor. Boş bir kurucu alıyorum. Ben basına sahip Ctrl + Pbeklenen argümanları görmek için.

resim açıklamasını buraya girin


25

Eğer bir yöntem üzerinde imleç varsa o CTRL+SHIFT+Izaman yöntem uygulaması açılır. Yöntem bir interfaceyöntemse, uygulamalar arasında geçiş yapmak için yukarı ve aşağı okları kullanabilirsiniz:

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

Nerede | (örneğin) imlecinizin bulunduğu yerdir.


4
Aslında Eclipse'de (en azından kullandığım sürüm), imlecinizi bir yöntemin adına getirip CTRL + T tuşlarına bastığınızda, en üstteki arayüzden yaprak uygulamalarına kadar tüm hiyerarşi ağacını alırsınız ve atlayabilirsiniz herhangi birine.
Yuval

2
Eclipse'de yöntem tanımına / uygulamasına (bağlama bağlı olarak) atlamak için yöntem adını da
tıklatabilirsiniz

8
Mesele şu ki aslında uygulamaya gitmiyorsunuz. Sadece javadoc
vb.Gibi

1
Eclipse'de, uygulama ile pop-up'ı açmak için Shift ile yöntem adını üzerine getirin
Victor

24

IntelliJ, oldukça gelişmiş bazı kod denetimlerine sahiptir (karşılaştırılabilir ancak FindBugs'dan farklıdır).

IntelliJ (Eclipse / FindBugs entegrasyonu oldukça havalı) kullanırken ciddi bir FindBugs eklentisini özlememe rağmen.

İşte IntelliJ tarafından desteklenen resmi CodeInspections listesi

EDIT: Son olarak, IntelliJ için bir findbugs-eklentisi var . Hala biraz beta ama Kod Denetimleri ve FindBugs kombinasyonu sadece harika!


evet findbugs gerçekten pratik dürüst-iyilik hataları bulur birkaç statik kod analizörleri biridir. :)
Epaga

Kod denetimi için belirli bir örneğiniz var mı? Ne tür şeyler tespit edebilir?
Epaga

Denetimler hakkında başka bir bağlantı: hamletdarcy.blogspot.com/2008/04/…
Mo.

8
IntelliJ'in kod denetiminin daha fazla hata bulduğunu, faydalı hızlı düzeltmelere sahip olduğunu, yazarken uyarı verebilir ve satırları düzeltebilirim. (Dosyayı kaydetmek zorunda değilsiniz ve derlemek zorunda değilsiniz) Bu incelikler, hataları en kısa sürede düzeltmeyi daha pratik hale getirir.
Peter Lawrey

16

Çok, çok, çok daha fazla yeniden düzenleme.


15

Düzenli olarak kullandığım bir şey bir kesme noktası ayarlamak, ancak daha sonra ne yaptığını kontrol etmektir. (Son işimde, çoğu kişi Eclipse kullandı ... Eclipse'de kimsenin bunu nasıl bulamayacağını şaşırdığımı hatırlıyorum.)

Örneğin, kesme noktası aslında durmuyor olabilir, ancak konsola bir mesaj kaydedin. Yani, kodumu "System.out.println (...)" ile doldurup yeniden derlemem gerekmiyor.


2
Bunu tutulmadaki koşullu kesme noktalarıyla yapabilirsiniz, ancak biraz arsız .eg. Gerçek
HaveAGuess

Bence intelliJ daha karmaşık vuruş sayıları belirlemenize izin veriyor, değil mi?
Kimball Robinson

3
Şimdi tutulmada bulmak daha kolaydır - koşulları şimdi kesme noktaları görünümünde görüntüler (böylece kullanılabilir olduklarını bilirsiniz). Sayımları kırabilir, System.out.println("here"); falseyazdırmak gibi rasgele kod girebilirsiniz (kırılmaz) (son ifade, kırılmamamız gerektiğini belirleyen bir boolean ifadesidir)
Scott Stanchfield

15

Fikrin çok daha basit bir şekilde çözdüğü birçok şey var veya eşdeğeri yok:

  • Otomatik tamamlama eylemleri: ctrl+shift+aTuş kombinasyonunu hatırlamadan klavyeden herhangi bir fikir eylemini çağırabilirsiniz ... Gnome-do veya pencerelerde fırlatma düşünün ve fikriniz var! Ayrıca, bu özellik CamelCasing kısaltmalarını destekler;)

  • Raf: Bazı kod parçalarını kolayca ayırmanızı ve ardından farklı görüntüleyici aracılığıyla gözden geçirmenizi sağlar.

  • Yerel tarih: Çok daha iyi yönetiliyor ve daha basit.

  • SVN ek açıklamaları ve geçmişi: incelenmesi daha kolaydır ve ayrıca geçmişi yalnızca tüm kaynak dosyanın böyle bir bölümü için kolayca görebilirsiniz.

  • İfade ve kesme noktası koşul pencerelerini değerlendirme gibi her yerde otomatik tamamlama.

  • Maven entegrasyonu ... çok, çok daha basit ve iyi entegre.

  • Döngüler ekleme, sarma / döküm, yeniden adlandırma ve değişken ekleme gibi ellere çok daha yakın olan refraktörler.

  • Çok güçlü ve iyi organize edilmiş bulun. Büyük projelerde bile

  • Büyük bir projenin birkaç dalıyla aynı anda çalışmak için çok kararlı (şube kaynakları tarafından 1.5 Gb'lik eski bir hata giderici ve aynı anda çalışma ihtiyacı olarak, fikir kaya gibi sağlam yeteneklerini gösterdi)

  • Daha temiz ve daha basit arayüz ...

  • Ve sadece klavye ile kullanımı daha basit, fareyi birçok basit görev için kullanma ihtiyacını ortadan kaldırarak size zaman kazandırır ve kod üzerinde daha fazla odaklanma sağlar ... önemli!

Ve şimdi, açık kaynak olarak ... Fikir kullanıcı tabanı katlanarak büyüyecek.


2
Otomatik tamamlama eylemleri = tutulmada hızlı erişim; Yerel tarihin tutulmadan daha kolay olabileceğini görmüyorum ...
Scott Stanchfield

Scott'ın belirttiği gibi, Ctrl + 3. İçerik yardımı, ifadeleri değerlendirirken ve koşullu kesme noktaları ayarlarken de kullanılabilir. Bahsedilen yeniden düzenleme işlemlerinin Ctrl + 1 ve Ctrl + 2 tarafından önerilenlerden ne kadar yakın olduğuna emin değilim. Geri kalanların çoğu öznel geliyor.
nitind

14

Yapısal arama ve değiştirme.

Örneğin, şöyle bir şey arayın:

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

Burada $ string $ değişmezdir ve $ expr $, my.package.and.Class türünde bir ifadedir ve yerine şunu yaz:

  $expr$.inspect($string$);

1
Aslında kodunuzda casts / () - operator / yazabilirsiniz, düz metin araması ile neredeyse imkansız
Karl

13

Benim zamanlama bu iş parçacığı açısından biraz kapalı olabilir, ama ben sadece cevap vardı.

Ben büyük bir tutulma hayranıyım - ilk görünüşünden beri kullanıyorum. Bir arkadaşım bana (10+ yıl önce) bunun bir oyuncu olacağını söyledi. Haklıydı.

Ancak! IntelliJ kullanmaya yeni başladım ve eğer changelistleri görmediyseniz ya da kullanmadıysanız - cenneti programlamada kaçırıyorsunuz.

Değişen dosyalarımı (geliştirme dalı ala clearcase'imde) izleme yeteneği, tutulma eklentisinde aradığım bir şeydi. Intellij, tüm değişikliklerinizi tek bir işlem için izler, son derece kolaydır. Değiştirilen dosyaları özel listelerle izole edebilirsiniz. Bunu yerel olarak benzersiz olması gereken, ancak depoyla senkronize ettiğimde veya havuzla karşılaştırdığımda sürekli olarak işaretlenen - bunları bir değiştirici altında listelediğimde, bunları izleyebilirim, ancak onları düzgün bir şekilde sıkıştırarak, gerçek eklemelere odaklanabileceğim yapılandırma dosyaları için kullanıyorum Yapıyorum.

Ayrıca, hata izleme yazılımınızla entegre edilmemiş olan SCCS için tüm değişikliklerin bir metnini veren bir İşlem Günlüğü eklentisi vardır. Günlüğü bir biletin çalışma geçmişine yapıştırmak dosyaları, sürümlerini, tarih / saat ve şube / etiketlerini yakalar. Cehennem kadar havalı.

Tüm bunlar, tutulma eklentileri (veya gelecekteki geliştirmeler) ile desteklenebilir, bahse girerim; yine de Intellij bunu bir esinti yapıyor.

Son olarak, bu ürün için ana sevgi - tuş vuruşları için gerçekten heyecanlıyım, bu yüzden acı verici, ama eğlenceli.


Changelistlerin özelliğini çok seviyorum. Bağımsız olarak çalışabileceğiniz ve sorun izleyicinizle ilişkilendirilebilecek VCS bağımsız yama / raf setine benzer. Neredeyse satır düzeyinde ayrıntıda çalışırken değişikliklerinizi takip eden yerel geçmişiniz (mini VCS gibi) vardır, böylece gerekirse hemen hemen her noktaya geri dönebilirsiniz. Ayrıca, görevleri değiştirdiğinizde, tüm IDEA yeni görev için IDE'nin durumunu hatırlar ve açık dosyaları, pencere konumlarını vb. Geri yükler
sylvanaar

Changelistler aslında bir SVN özelliğidir. IntelliJ sadece Eclipse SVN eklentilerinin görmediği yerleri görmenizi ve yönetmenizi sağlar.
Neil Traft

12

IntelliJ hata ayıklayıcı, "İfadeyi Değerlendir" adlı çok kullanışlı bir özelliğe sahiptir. Tam kod tamamlama vardır ve ben genellikle "daha yararlı" olarak kabul ediyorum.


8
Eclipse ayrıca kod tamamlama sunan bir ifade değerlendiriciye de sahiptir. Pencereye Git -> Görünümü Göster -> Hata Ayıkla -> Ekran Hata ayıklayıcıdaki bir kesme noktasında durdurulduğunda, bu Görüntü Görünümünde rastgele ifadeleri değerlendirebilirsiniz.
laz

11

Benim için bin küçük şey. Bazı makrolar, Eclipse genel GUI düzeni korkunç buluyorum. Eclipse'de farklı pencerelerde birden fazla proje açamıyorum. Birden fazla proje açabilirim, ancak daha sonra görünüm tabanlı sistem dosyaları değiştirdiğimde etrafımda bir sürü şeyi değiştirir. IntelliJ'in kod denetimleri daha iyi görünüyor. Pop-up yardımcıları ortak sorunları düzeltmek için güzel. Bir sıcak noktanın üzerine gelebileceğim yan çubuk gibi bir çok basit kullanılabilirlik ve bana bir yöntemin veya uyguladığım yöntemin her alt sınıfını ve nereden geldiğini söyleyeceğim.

Ne zaman kullanmam gerektiğinde veya birisinin kullanımını izlediğimde, Eclipse, IntelliJ'de yapabileceğim şeylerin çoğunu yapabildikleri gibi görünüyor, ancak onları daha uzun sürüyor ve daha karmaşık.


9

Değişken tanıtın. ( Ctrl+Alt+VWindows'ta, Cmd+Alt+VOSX'te)

Bir yöntemi çağırdığınızı, service.listAllPersons() Hit Ctrl+Alt+Vve Enter, yöntem çağrısından döndürülen değer için bir değişken eklendiğini varsayalım:

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

Yazmanızı kaydeder ve aradığınız yöntemin dönüş türünü kontrol etmeniz gerekmez. Özellikle jenerik ilaç kullanırken kullanışlıdır, örn.

new ArrayList<String>()

[değişken tanımla]

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

(tabii ki isabet etmeden önce değişkenin adını kolayca değiştirebilirsiniz Enter)


13
Bu Eclipse'de Ctrl + 2 L'dir.
Micke

2
Güzel, bilmiyordum ve sorduğum Eclipse kullanıcılarından hiçbiri yoktu. Bu özellik uzun zamandır Eclipse'in bir parçası mı?
rlovtang

3
Oldukça uzun bir süre ... Quickfix control+1(dünyadaki en belirgin anahtar bağlama, değil mi?) Kullanıyorsanız, IDEA'daki amaçlara benzer şekilde geçerli imleç konumunda yapabileceğiniz şeyleri önerir. Örneğin, "yerel ata", "alan ata" ve diğer seçenekleri listeler. control+2, Lkısayoludur.
Scott Stanchfield

Tutulmada, bir kez seçtikten sonra ctrl+2, L, oluşturulan değişkenin türünü sağ taraf tipine (varsayılan olarak) veya herhangi bir süper tipe değiştirebilirsiniz: değişken türü SEKME ile seçilebilir.
Gaetan

8

IntelliJ, koddan jspx belgelerine akıllıca ve yeniden düzenleme desteğine sahiptir.


Intellisense ile ne demek istediğinizi açıklar mısınız? Eclipse'in de otomatik tamamlama özelliği var, ama başka bir şey mi demek istiyorsun?
Epaga

Eclipse AFAIK jspx belgelerinde otomatik tamamlama özelliğine sahip değildir. Normal jsp evet, jspx hayır.
krosenvold

3
POJO'daki bir özelliğe başvuran bir JSP'niz varsa ve özelliği yeniden adlandırırsanız, JSP'niz doğru şekilde güncelleştirilir. IntelliJ'in JSP desteği Eclipse / WTP'yi başlattı!
erickson

2
Eclipse'nin otomatik olarak JSP EL ifadelerinde çalışmasını tamamlayamıyorum, nokta. JSP veya JSPX, önemli değil, sadece clueless. IntelliJ, tagx ve jspx'i beklediğiniz gibi işler: bir etiket veya jsp dosyası gibi.
erickson

Tutulma kullanıcılarının sevmedikleri şeylere nasıl oy verdiğini görmek güzel. Gözlemlerim yanlışsa, lütfen bir yorum ile cevap verin. Tutulmada bunu nasıl yapacağımı söyle!
krosenvold

7

Benim için, IDEA'nın maven desteği, özellikle sürüm 9'da hiçbiri ikinci değil. Projenin maven modeline anında senkronizasyonu sadece harika ve gelişimi keyifli hale getiriyor.


6

Intellij, Subversive veya Subclipse'den çok daha üstün bir SVN eklentisine sahiptir ve çalışır! Eclipse kullanarak kaynak dosyaları birleştirmek için harcadığımız zaman, üzerinde düşünmeye gerek yok. Bu IntelliJ ile ilgili bir sorun değil çünkü eklenti size çok daha fazla yardımcı oluyor.

Ayrıca Subclipse eklentisi güvenilmezdir - eklentinin diğer geliştiriciler tarafından SVN'de kontrol edilen herhangi bir kod olduğunu düşünmediği, ancak var - CI sunucusu bunları işledi!


tam olarak, svn desteği mükemmel bir fikirken, subclipse / subversive buggy, beceriksiz ve çok güvenilir değil; aynı git için de geçerli, aslında tutulma için herhangi bir makul git entegrasyonunu hatırlamıyorum ve intelliJ bunu çok iyi idare ediyor
Kamil Mikolajczyk

Şahsen, IDE'niz yapsa bile, tüm sürüm kontrolünüzü komut satırında yapmanız gerektiğini düşünüyorum. Bunu komut satırında yaptığınızda, daha sonra komut dosyasını nasıl yazacağınızı bileceksiniz, bu da gelişiminizi gerçekten hızlandırabilir. Bazen iş arkadaşlarım bana subclipse veya git'in eclipse eklentisi hakkında yardım istiyor, sadece kullanmayı bırakıp komut satırında yapmasını söylüyorum.
msknapp

4

VIM Öykünücüsü. Bu eklenti, dosyaları IDEA'da düzenlerken neredeyse tam vi / vim / gvim emülasyonu sağlar. Aşağıdaki işlevler desteklenir:

  • Hareket tuşları
  • Silme / Değiştirme
  • Ekleme modu komutları
  • izler
  • Defterleri
  • VIM geri al / yinele
  • Görsel mod komutları
  • Bazı Ex komutları
  • Bazıları: seçenekleri ayarlama
  • Arama ve arama / değiştirme için tam VIM düzenli ifadeleri
  • Makrolar
  • yönlü çizge
  • Komut satırı geçmişi
  • Arama geçmişi
  • Jumplists
  • VIM yardımı

http://plugins.jetbrains.net/plugin/?id=164 adresinden bu eklenti hakkında bazı yorumlar

Hiç bu eklenti nedeniyle başka bir ide geri gidiş göremiyorum ... Her iki dünyanın en iyisi ... Harika !. tüm IDE'lerde eksik olduğum şey buydu.

Kabul ediyorum, IdeaVim eklentim olmadan yaşayamam, ancak adil olmak için Eclipse için uygun bir Vim eklentisi var, uygun bir şekilde VimPlugin ( vimplugin.org )
Keith

3
Vwrapper başka bir Vim Eclipse eklentisidir. Ve Idea Vim eklentisinden bile daha iyi çalışır (tekrar tuşları çalışır). Vwrapper, arama ve değiştirme komut satırından işlemez (arama harika çalışıyor olsa da) ve makroların etkileşimli olarak tanımlanmasına izin vermez. Bir IDE'de Vim desteğinin çok önemli olduğu konusunda hemfikir. Eclipse veya Idea'sı kullanmazdım!
Brent Faust

1
Viableplugin.com Tutulma için çok iyidir. Intellij'i de kullanıyorum ve intellij'in bazen bazı durumlarda editöre asıldığını ve komutlara yanıt vermediğini görüyorum.
John Lemp


3

Birkaç şey daha:

  • yöntem imzasını değiştirirken parametreleri / istisnaları yaymak, çağrı yığının derinliklerindeki yöntemleri güncellemek için çok kullanışlıdır
  • Jdbc çağrılarına (ve tüm yeni paketlenmiş dil yerleştirme öğelerine) bağımsız değişken olarak iletilen dizelerde SQL kodu doğrulaması
  • arayüzler ve sınıflar (ve yöntemleri) ve akıllı uygulama navigasyonu (Ctrl + Alt + Click veya Ctrl + Alt + B) için simgelerin içine / üzerine yazılmış
  • EJB 2.1 arayüzleri ve fasulye sınıfları arasında bağlantı (yeniden düzenleme desteği dahil); eski ama eski projeler üzerinde çalışırken son derece değerli

2

IntelliJ'in Eclipse'nin yapmadığı iki şey benim için çok değerli değil:

Yöntem ayırıcılar: yöntemler arasındaki bu soluk gri çizgiler kodu çok fazla yapar daha okunabilir

Metin kenar yumuşatma: IDE'de kodun çok güzel görünmesini sağlar


2
Aslında IntelliJ'in kenar yumuşatmasının Eclipse'den çok daha kötü olduğunu gördüm. Ancak bu IntelliJ'in birkaç versiyonuydu. Geliştirildi mi?
laz

Kenar yumuşatma kullanmaktan daha hoş göründüğünü düşündüğüm bir Verdana orantılı yazı tipi kullanıyorum.
Peter Lawrey

2

Çok kullanışlı bir özellik, kısmen bir Maven reaktör projesi inşa etme yeteneğidir, böylece sadece ihtiyacınız olan parçalar dahil edilir.

Bunu biraz daha açık hale getirmek için, bindirme tekniğini kullanarak çok sayıda ortak kaynağın (ör. JavaScript, Spring yapılandırma dosyaları vb.) Paylaşıldığı bir WAR dosyaları koleksiyonu örneği düşünün .) Bir web sayfasında (Jetty'de çalışıyor) çalışıyorsanız ve ayrı bir modülde tutulan bazı kaplama kodunu değiştirmek istiyorsanız, normalde Jetty'yi durdurmanız, Maven derlemesini çalıştırmanız, Jetty'i yeniden başlatmanız ve devam et. Eclipse ve neredeyse çalıştığım diğer tüm IDE'lerde durum budur. IntelliJ'de böyle değil. Proje ayarlarını kullanarak, hangi modülün hangi yüzünün bir arka plan yapısına dahil edilmesini istediğinizi tanımlayabilirsiniz. Sonuç olarak kesintisiz görünen bir süreç elde edersiniz. Projedeki hemen hemen tüm kodlarda bir değişiklik yaparsınız ve tarayıcıyı yeniledikten sonra anında kullanılabilir.

Çok temiz ve çok hızlı.

Onsuz DWR / SpringMVC üzerine YUI gibi bir şey bir ön uç kodlama hayal edemedim.


2

Cevabımın önsözü: Eclipse kullanımım sınırlı. Hem Windows hem de Mac üzerinde çalışmak için bir Java IDE'ye ihtiyacımız vardı ve Mac bağlantı noktası her geçen gün yavaşladı. Bu yıllar önceydi ve eminim şu an sorun değil. Ama IntelliJ'e geçmemizi sağlayan şey bu ve bundan memnun kaldık.

Şimdi cevabım için: Daha önce bahsetmediğim büyük bir fark, IntelliJ / Jet Brains ile teknik desteğin daha iyi olmasıdır. JetBrains'e bir e-posta gönderiyoruz ve bir saatten kısa sürede kesin bir cevap alıyoruz. Eclipse problemlerine cevap aramak, çok sayıda anlayışlı ve yardımcı yanıtın yanı sıra olağan "Aptal salak" cevaplar (genellikle az sayıda yanıt) ile sonuçlanır. Ama gerçek cevabı almak biraz zaman alıyor.


Eclipse açık kaynak kodludur. Soruları yanıtlamak veya hataları düzeltmek için hiç kimseye ödeme yapılmaz. Ticari Eclipse tabanlı IDE satın alın, örneğin MyEclipse ve paranız için destek alın. Hızlı istatistikler: JetBrains'e 56 hata bildirdim, bunlardan 23'ü kapalı; Eclipse 33'e bildirilen 65 hatadan kapatıldı. Tek fark JetBrains'in Eclipse'den biraz daha hızlı hataları düzeltmesidir.
Victor

2

IntelliJ'de her zaman kullandığım bir şey yazarken yeniden düzenleme yapıyor. Her iki IDE kullanarak çıktı (başlangıçta tutulma ile yazılmış) bir yeniden sınıfları var ve ben IntelliJ aynı tutulma daha IntelliJ aynı sınıfları yazmak için yaklaşık% 40 daha az tuş vuruşlarını / fare tıklamaları kullanılır.

Tamamlanmamış kod parçaları ile çok yeniden düzenleme destekleyene kadar Eclipse kullanmak istemem.

İşte IntelliJ 8.0 / 8.1'deki daha uzun özelliklerin listesi [ http://www.jetbrains.com/idea/features/index.html]


2

IntelliJ'in Eclipse'den çok daha iyi yaptığı ve ceplerinizi boş bırakan bir şey var!

Ancak bunu kullanmayı tercih ediyorum ve Eclipce'e göre büyük bir avantajı, büyük projeler ve yavaş bilgisayarlar için dosya sistemi ile senkronize edilmesidir (evet, çalışma ortamlarında PC'ler evde olanlardan çok daha yavaştır) Eclipse IntelliJ'in daha yavaş başlangıç ​​endeksleme süresi olsa da daha hızlı olduğu görülmektedir.

IntelliJ Community sürümü bunu ücretsiz olarak kullanıyor ancak yakında CC sürümüne dahil olmayan ekstra yeniden düzenleme ve güzel küçük güzellikler istiyorsunuz.

Bence, genellikle daha iyi bir kullanıcı deneyimi, ancak maliyetinin değerinin her geliştiricinin kendilerine cevap vermesi için bir soru olup olmadığı.

Ancak, NetBeans'in her zaman daha iyi hale gelmesiyle Java için üç adede kadar harika IDE'miz için minnettar olalım.


3
IntelliJ Ultimate Edition gerçekten ücretsiz değil, ancak bir geliştirici olarak IDE'mi günde yaklaşık 8 ila 10 saat kullanıyorum. Yani onun makul fiyat bir kusur olarak görmüyorum!
Romain Linsolas

2

Veri akışı analizi : burada tarif edildiği gibi prosedürler arası geri akış analizi ve ileri akış analizi . Deneyimlerim, veri akışı analizini oldukça iyi yapan Topluluk Sürümü'ne dayanıyor. Kod çok karmaşık olduğunda birkaç durumda başarısız oldu (hiçbir şey yapmayı reddetti).


2

Her şeyden önce intellij'i seviyorum. Tutulma eksikliğine sahip en az yüz özellik var. Yeniden düzenleme, yeniden adlandırma, taşıma ve daha önce bahsedilen diğer konular söz konusu olduğunda hiçbir hiperbolün tarif edemeyeceği güvenilirlik ve zeka açısından büyüklüklerden daha iyi konuşuyorum.

AMA, intellij'in hangi tutulmanın yapmasına izin vermediği bir şey var. Aynı vm altında aynı anda birden fazla projenin yürütülmesine izin vermez.

Ön, orta, çekirdek, ajanlar ..etc için hepsinin birbiriyle etkileşime girmesi gereken ayrı projeler varsa, aynı anda hızlı bir şekilde değiştiremez ve hata ayıklayamazsınız, afaik. Bununla başa çıkmanın tek yolu, bağımlı projelerde kavanozları dağıtmak ve güncellemek için karınca komut dosyaları kullanmak veya maven kullanmaktır.

Eclipse, birden çok projenin bir ide vm örneği altında hata ayıklanmasına izin verir.



IntelliJ bunu hiç problem yaşamadan yapıyor. Bu cevap basitçe yanlış.
Yazılım Mühendisi
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.