it-swarm.dev

Yazılım geliştirmek için bir IDE (Eclipse) kullanıyorum. Neden vim veya emacs'a geçmeliyim?)

Günlük işim Java/web geliştiricisidir. ~ 5 yıldır Eclipse kullanıyorum. Ben onun mükemmel düşünüyorum ve ayrıca javascript ve html/jsp için Webstorm kullanın.

Bazen sunucuya ssh ve yapılandırma dosyaları ile karışıklık yapmak gerekir; bunun için vi kullanıyorum ve bu acı veriyor. Ben sözdizimi/komutları listeleyen bir web sitesi almak zorunda: basın kaçış, sonra asterix, üç kez dönün ve metin imlecinizin iki satırına girilecektir . Bu benim için kasıtsız ve seksenli yılların sonlarında doksanlarda büyüdüğümü hayal ediyorum.

Eclipse'in parlak olduğunu düşünüyorum (ve diğer IDE'leri varsayalım) ve emacs ve/veya vim'e geçmiyorum.

  • Projeyi yeniden derlemeye gerek kalmadan vurgulama hatası.
  • Kod yardımı.
  • Üstlenmeden.
  • Açılış çağrısı hiearchy/Açılış bildirimi.
  • Kaynak kontrolü ile tamamen entegredir.
  • Hata ayıklayıcı dahildir.
  • 3. taraf eklentilerin kullanılabilirliği - örneğin findbugs/checkstyle.

Duyduğum argümanlardan biri, emacs/vim ile kendi eklentilerinizi oluşturabileceğinizdir - tamam, ama bunu Eclipse'de de yapabilirsiniz. Ama her şey zaten orada olduğu için buna gerek yok! Bu yarı inşa edilmiş arabayı satın almak gibi, gerisini kendiniz inşa edebilirsiniz.

İnsanlar neden emacs/vim kullanıyor? Bunu kullanan insanlar aslında büyük organizasyonlardaki karmaşık nesne yönelimli projeler üzerinde çalışıyor mu?

vim/emacs'a geçmenin nedenleri nelerdir. Geçersem üretkenliğim nasıl artar?

31
NimChimpsky

İhtiyacınıza uygun aleti kullanın. Uzak bir sunucuya giriş yapmanız ve bir yapılandırma dosyasını veya benzer bir şeyi düzenlemeniz gerektiğinde VIM veya Emacs'ı bilmek iyi bir şeydir. VIM 'i gayet iyi biliyorum, ama Java'da geliştirmek için kullanmam. Eclipse, Netbeans vb.

36
user281377

Emacs ve Vi'nun hala bir yeri var.

  • Bunlar, Unix ve Unix benzeri ortamlarda her yerde bulunur ve diğer birçok popüler platforma yüklenebilir.

  • Popüler ve stabildirler, bu yüzden onları bir kez öğrenmek uzun vadede işe yarar.

  • Bir metin terminali üzerinde çalışırlar, böylece telnet ve ssh oturumlarında kullanabilirsiniz.

  • Çok yeni ve çok nadir diller de dahil olmak üzere çok çeşitli diller için düzenleme modları ve sözdizimi vurgulama sağlarlar. (Bu benim en sevdiğim avantajlardan biri.)

Bununla birlikte, bu programları anlamanın anahtarı, başlangıçta hangi problemleri çözmeyi amaçladıklarını bilmektir. Vi için bu, 300 Baud kadar yavaş olan terminal bağlantıları üzerinden metin dosyalarını düzenlemekti. Bu ortamda menüleri görüntülemek veya ekran içeriğinden kaçınabilmeniz için kökten değiştirmek istemezsiniz.

Emacs daha hızlı bir ortamda kullanılmak üzere tasarlandı. Gücü, bir kez yüklenebilmesi ve asla çıkılmamasıydı. Kullanıcı, Emacs'tan ihtiyaç duyduğu diğer herhangi bir görevi, ayrılmadan ve genellikle komut satırından yapmak zorunda olduğundan daha kolay bir şekilde gerçekleştirebilir. İnsanların Emacs penceresi açık bir grafik masaüstü ortamı yoktu. Emacs, kullanıcının hemen hemen her normal görevi (ve birçok garip görevi) birkaç tuş vuruşuyla gerçekleştirmesini sağlar. Yerleşik olmayan herhangi bir şey yazılabilir.

Açıkçası, bu programlar başlatıldığından beri insanların ihtiyaçları çok değişti, ancak yine de bazı gerçek güçleri var. Her ikisinin de temellerini öğrendim ve haftalık olarak kullanıyorum. Yine de, güçlü yanlarının genellikle abartıldığını düşünüyorum. O kadar efsanevi bir duruma ulaştılar ki, insanlar zayıflıklarını kabul etmiyorlar ve bunun yerine Emacs/Vi onları Eclipse veya Visual Studio'dan daha üretken hale getirmezlerse yanlış bir şey yaptıklarını düşünüyorlar.

Şimdi konuya gelelim.

Java, Eclipse'de mükemmel desteğe sahip popüler bir dildir ve olasılıklar, hızlı bir şekilde ortak görevleri gerçekleştirmenize ve başkalarını IDE'niz olmadan yapmanıza izin veren modern bir işletim sisteminde kod geliştiriyor olmanızdır. Geçiş yapmanın mantıklı olacağını düşünmüyorum.

39
PeterAllenWebb

5 yıldan fazladır emacs kullanıyorum. Artık kullandığım tuş kombinasyonlarını anlatamıyorum, parmaklarım onları hatırlıyor ve sadece ellerimin ne yazdığını görmek için klavyeye bakmak zorunda.

Birkaç yıl önce Eclipse'i kullanmaya başladım ve emacs'a özgürce geri dönme şansım yok. Üzgünüm kas hafızası, seni özlemiş olmana rağmen C-x r SPC 1, Eclipse beni çok daha üretken yapıyor ve önemli olan bu.

Hayır, geçiş yapman gerektiğini sanmıyorum, ama vim'in temellerini öğrenmek için birkaç saat ayırmalısın, böylece artık aramana gerek yok.

16
Martin Wickman

Neden vim veya emacs'a geçmeliyim?

Büyük olasılıkla, değiştirmemelisiniz . Vim mükemmel, güçlü bir metin editörüdür, ancak değil bir IDE'nin yerine geçer ve olmamalı ! Tutulma çok iyi IDE'ye özgü şeylerin alt kümesi ve vim, metin düzenlemeye özgü şeylerin alt kümesinde çok iyidir. Her birinin kendine özgü, farklı bir odağı vardır.

VIM işlevselliğini genişleten eklentiler olduğunu biliyorum, böylece aynı IDE'ye özgü şeylerin çoğunu anlayabiliriz IDE olabilir. Ama yine de vim'in ana gücü değil ve bir IDE bunu neredeyse her zaman daha iyi yapabilecektir. Çünkü odaklandıkları şey budur.

Günlük işimde yaptığım şey C # 'ı düzenlemek için Visual Studio ve vim' i kullanmak. Benim için çok iyi çalışıyor ve hiçbirini sadece diğerine güvenmek için kesmem.

Emacs kadarıyla, ben uzman değilim, ama Eclipse's IDE özellikleri söz konusu olduğunda Java (lütfen düzeltin) LISP'de geliştiriyorsanız, o zaman kesinlikle mükemmel bir IDE olarak kabul edilebilir, ancak Java için aynı desteğe sahip olduğunu düşünmüyorum.

Eğer Eclipse ile birlikte kullanmak için daha güçlü bir metin editörü istiyorsanız, o zaman kesinlikle vim veya emacs öğrenmenizi tavsiye ederim. Ancak bir yedek olarak değil, bir yedek olarak . Her ikisinin de özellikle kolay bir öğrenme eğrisi olmamasına rağmen, uzun vadede gerçekten ödeyebilir:)

İşte vim güçlü yönleri hakkında Güzel uzunca okuma . Ve işte bir liste yapabileceğiniz bazı güzel hileler.

7
Nick Knowlson

Temel olarak, Emacs'ın neden güçlü olduğunu görmek için this (PDF) sayfasını okuyun. LISP'yi öğrendikten sonra, uzantıları yazmak neredeyse önemsizdir (kendime employer-mode Adında yazdığım bir eklenti tarafından yazılmış birkaç kaynak kontrolü iş akışı ve dağıtımım var). Yukarıda listelediklerinizle ilgili olarak;

  • Projeyi yeniden derlemeye gerek kalmadan vurgulama hatası. Tüm diller için bir anlam ifade etmiyor. Birçok dilin REPLs'sini kolayca bu dile entegre edebilirsiniz. Şu anda, Ruby, python, haskell, common LISP, scheme ve erlang var. . Bu arada, JavaScript eklentisi js2-mode Tam artımlı "derleme" ye sahiptir, bu nedenle sizin için sözdizimi hataları gibi şeyleri vurgular, bu yüzden kesinlikle mümkündür, ancak norm değil
  • Kod yardımı. autocomplete.el adlı bir eklenti var, inanıyorum, Emacs wiki
  • Üstlenmeden. Sanırım tüm dillerde anlam ifade etmeyen "otomatik yeniden düzenleme". Muhtemelen bazıları için var, ama bilmiyorum.
  • Açılış çağrısı hiearchy/Açılış bildirimi.
  • Kaynak kontrolü ile tamamen entegredir. Emacs 22.3'ten itibaren yerleşik bir git-mode Var, diğer kaynak kontrolü hakkında emin değilim
  • Hata ayıklayıcı dahildir. Burada her dil için ayrı ayrı. Genellikle, REPL entegrasyonu varsa, bir Emacs hata ayıklayıcısı da vardır, ancak evrensel değildir
  • 3. taraf eklentilerin kullanılabilirliği - örneğin findbugs/checkstyle. bu belirli şeyleri bilmiyorum, ama bunun için neden bu temeldeki paketin kullanışlı olmadığından tamamen anlamsız olana kadar birçok eklenti var

Bununla birlikte, LISP'den hoşlanmıyorsanız ve onu öğrenmek istemiyorsanız, Emacs'ı dürüstçe tavsiye edemem. Bundan elde ettiğiniz kazanç, bir takım hazır modlar elde etmek ve bunları bir araya getirmek değil, araç üretmeyi öğrenmek ve kendi üretkenliğinizi artırmak için bu ilkeleri uygulamaktır.

6
Inaimathi

Burada iki seçenek görüyorum:

  • Bunun yerine Nano kullanın - Bu, Windows için Linux'ta Not Defteri'ne benzer. Kısayol tuşu kombinasyonu gerektirmez, sadece nano somefile.conf ve güzel bir editör var. Hatta sözdizimi vurgulama ekleyebilirsiniz
  • Programı yerel tutun ve SCP üzerinden sunucuya senkronize edin - Küçük bir web sitesinde çalışmam gerektiğinde bunu yaparım, ancak Apache'yi yerel olarak çalıştırmak için yeterli kaynağım yok. Ben sadece WinSCP getirmek, istediğim dizinleri getirmek ve "Uzak dosyaları güncel tutmak" kullanın. Değişiklikler genellikle saniyeler içinde yansıtılır
  • Düzenleyici/IDE'nizde uzak dosya ile "doğrudan" çalışmak için bir eklenti kullanın - Revizyon kontrolünü önemsemeden önce, Notepad ++ 'ı (tercih edilen düzenleyicim) çalıştırdım ve dosyalar üzerinde çalışmak için NppFTP'yi kullandım. Npp bir dosya kaydedildiğinde hemen söyleyen NppFTP, WinSCP seçeneğinden daha hızlıdır, bu da hemen yüklenir. Ancak söylediğim gibi revizyon kontrolü gevşek. Eclipse için kullanabileceğiniz bir eklenti olduğundan eminim

Bu yardımcı olur umarım

3
TheLQ

Şahsen, Vim'i seviyorum çünkü metni düzenlemede son derece iyi, yani çok ergonomik (tuş bağlamaları ellerimi çok fazla zorlamıyor ve fareyi çok kullanmam gerekmiyor) ve asıldıktan sonra kullanımı verimli (yeni başlayanlar için en sezgisel editör olmadığından, elbette zaman ve sabır alacaktır).

Ancak büyük ölçekli Java geliştirme mevcut birçok özellik nedeniyle geliştirme için Eclipse tercih ederim. Tabii ki, orada bazı eklentiler Eclipse biraz yapabilirsiniz daha tolere edilebilir.

2
user7908

Şu anda NetBeans vim geçmek çalışıyorum. Vim öğrenmek zaman ve pratik gerektirir, ancak avantajlarını görüyorum, bazı durumlarda "GUI editörleri" diyelim.

Ama sizden farklı olarak, çoğunlukla Ruby kodluyorum ve NetBeans ve Eclipse'nin sunduğu kod üreten, otomatik tamamlama, kodumu yeniden düzenleyen kara büyüye ihtiyacım yok. Ben Java veya C # kodlama olsaydı ben kesinlikle hiç geçiş deneyin olmaz.

1

Uzun zamandır emac kullanıcısı olarak, emac'ları bir düzenleme ve geliştirme ortamı olarak oldukça rahat buluyorum (ve bir dereceye kadar, aynı zamanda derleme süreci, sürüm kontrolü, hızlı bağlama duyarlı arama ve benzeri ile de entegre oluyor, bu yüzden bir "IDE" olarak).

Ayrıca vi ve vi benzeri editörleri kullanmakla gerçekten rahatım (ed kullanmaya başladım, çünkü emacs'ın çok karmaşık olduğunu düşündüm; geriye dönük olarak, ancak vi'nin gelecekteki öğrenmesi için sağlam bir temel verdi). Vi'yi öncelikle "küçük hızlı düzenlemeler" için, özellikle emac'lerin yüklü olmadığı uzak makinelerde kullanırım.

"Zaman zaman sunucuya ssh yapmak ve yapılandırma dosyaları ile uğraşmak gerekir; bunun için vi kullanıyorum" senaryosu için, vi hakkında küçük bir komut seti ve bazı genel düşünceler tavsiye ederim:

  • Vi kipli değildir, eklemek için metni alarak "a" (ekleme), "A" (satır sonuna ekleme), "i" (ekleme) ve "I" (satır başına ekleme) komutları vardır bir argüman olarak ve Esc ile "komut sonu" nu işaret eden
  • h, j, k ve l hareket tuşlarıdır. Ok tuşlarını kullanarak çalışabilir, ancak tipik VT stili "Ben bir ok tuşuyum" dizisi Esc ile başlar, bu düşünmediğiniz metin ekleme komutunu kırar
  • : linenum sizi line linenum satırına taşır; çoğu satır ve satır $ en alt satırdır
  • . "son komutu tekrarla" komutudur (ilk madde işaretine bakın)

"Güvenle bir metin dosyasını düzenleyebilirim, ancak onunla verimli olmayabilirim" de olmak için vi ile oynamanın bir veya iki saatten fazla sürmemesi gerekir ve bu muhtemelen olması gerektiği kadar iyi . Başarısız olursa, sekmeler ve boşluklar arasında otomatik dönüştürme konusunda hata yapmayan herhangi bir düzenleyici, amaçlarınız için "yeterince iyi" olmalıdır. Eclipse uzak sunucularınıza tüm yüklüyse, bunu gerçekten büyük bir sorun olarak görmüyorum.

1
Vatine

Eclipse'den memnunsanız geçiş yapmayın.

Eclipse'i ihtiyacınız olan her yerde kullanabiliyorsanız, geçiş yapmayın.

Projeniz/şirketiniz hemen hemen yalnızca Eclipse kullanıyorsa, geçiş yapmayın.

Nadiren başka bir şeye ihtiyacınız varsa, editörlerden biri için bir cheat-sheet yazdırın ve ihtiyacınız olduğunda çekmeceden dışarı çekin ve Eclipse kullanmaya geri dönün.

SO ile ilgili aynı soruya bakın: https://stackoverflow.com/questions/1346820/what-are-the-efficiencies-afforded-by-emacs-or-vim-vs-Eclipse

"Bunu kullanan insanlar aslında büyük kuruluşlardaki karmaşık nesne yönelimli projeler üzerinde çalışıyor mu?" - Şapka oğluna tutun, ama cevap "evet". Bu soruyu sormak için kullandığınız bilgisayarı çalıştıran CPU'yu tasarlamanın kritik yolunda kullanılan on milyonlarca satır kod içeren projelerde çalıştım. Ve insanlar Eclipse'i denedi ama çok yavaş ve hantal buldular (itiraf etmek gerekirse Java kullanmıyorduk).

1
Trey Jackson

Ben çok Emacs'ım. Tüm programlamam için kullanıyorum ve çalışma arkadaşlarımı da aktif olarak kullanmaya teşvik ediyorum (ve beni aktif olarak görmezden geliyorlar). Herhangi bir IDE'den çok daha üretken buluyorum ve asla değişmeyeceğim.

Java veya C # yazmadıkça (ve bu kategoride başka diller olduğunu hayal etmedikçe). şeylerin uzun adlarla, Emacs kullanarak elde edilen kazanımların [~ # ~] i [~ # ~] hatırlamaya çalışırken tamamen kaybedildiğini herşey.

Kesinlikle vim ve/veya Emacs'ı denemenizi öneririm. Ama muhtemelen Eclipse for Java'ya geri döneceksiniz.

1
MattBelanger

Hem emacs hem de vim çok yapılandırılabilir ve güçlü editörlerdir ve her ikisi de temel kavramlar kavranınca büyük verimlilik kazançları sağlar.

Vi, esasen sete dayalı operasyonlarla kazanır. Örneğin, sınıf tanımındaki tüm "foo" örneklerini "bar" olarak değiştirmek tek satırlıdır.

Emacs aynı derecede güçlüdür, ancak Emacs LISP'yi tam potansiyeline kullanmak için öğrenmeniz gerekir.

Her iki durumda da, her şey için emacs veya vi kullanmayı planlıyorsanız değiştirmeye değer.

1
Larry Coleman

En iyi araç (kısa vadede) son derece yetkin olduğunuz araçtır.

İnsanlar 30 yılı aşkın bir teknolojiyi kullanıyorlar çünkü teknoloji konusunda oldukça yetenekliler. İş akışlarını ve alışkanlıklarını bu araçların etrafında oluşturdular. Eğer modern IDE gibi Eclipse gibi) daha fazla bilgi sahibi iseniz, geçiş yapmak için fazla bir neden yoktur. Mylyn ).

1
dbkk

Şahsen her iki program da beni duvardan yukarı itiyor. Eclipse ile ilgili sorun, büyük bir proje üzerinde çalışırken sümük gibi yavaş olmasıdır ve o zaman 'DGLP Endeksleme' ya da her ne yapmaz. deponuzu yenilemek mi istiyorsunuz? 15 dakikanız var mı? Oh ve Ctrl-C bazı metin sonra Ctrl-P nerede bir yerde bu şık hile hakkında ama bunun yerine istediğiniz yere gidiyor tamamen farklı bir dosya açar ve başka bir şey üzerine yapıştırır ve wtf orada olduğunu merak bıraktı ilk başta. Oh ve ben bir vpn üzerinde büyük bir projede Eclipse ile çalışmaktan bahsetti mi? neredeyse imkansız.

Vim'e gelince, güzel ve hızlı bir şekilde, kendinizi bir bilinmeyen modda yanlışlıkla bulursanız, bir şey ve iyi şanslar yapmak için tamamen anlamsız tuş kombinasyonlarının çoğunu bildiğinizi varsayar. Ayrıca vim ile doğru dosyaları açmak için kafanızdaki tüm proje dizin yapısını bilmek zorundasınız. Vim'in ana avantajı, teoride daha hızlı kod oluşturabilmenizdir çünkü tüm anahtarlarıdır, ancak gerçekte ne kadar metin yazdığımı umursamıyorum, kodun kalitesine ve genellikle kaliteye önem veren metnin hacmi değil kod yazmak için doğru şeyi (genellikle çok kısa) anlayana kadar saatlerce düzinelerce dosyaya bakmayı gerektirir.

Ne diliyorum biri aslında yanda Eclipse gibi bir dizin yapısı veya genişletmek/daraltmak ve dosyaları açabilirsiniz bir şey vim gibi bir komut satırı programı yazmak olacaktır. Böyle bir şey bilen var mı?

0
Dallas Caley

Mevcut çeşitli UNIX editörleriyle sorunum yok, ancak bunları sadece protesto altında kullanıyorum. Söylediğim gibi, onlarla ilgili bir sorunum olduğu için değil, çünkü bunları kullanmak zorunda kalırsam konuşlandırma sürecimizin bir şekilde eksik olduğu anlamına geliyor.

Bu muhtemelen biraz daha bağlamı hak ediyor: Büyük ölçekli e-ticaret çözümleri üzerinde çalışıyorum, sistemlerimizin çalışmasını yöneten her şey tek tıklamayla oluşturma/dağıtma işlemi tarafından üretiliyor. Bir dizi test ortamımız var, bu yüzden herhangi bir zamanda Eclipse aracılığıyla bir değişiklik yapabilirim, cvs'ye kontrol edebilirim ve düzeltimin çalıştığını kanıtlamak için bir derleme/dağıtımı tetikleyebilirim. Yani - 'vi'da hack edersem, o zaman bir dağıtımın 1 saatlik geri dönüşünü bekleyemeyeceğimiz veya dağıtımın düzenlemekte olduğum dosyaları kapsamadığı ve bunun için genişletilmesi gerektiğinden yani (aksi takdirde söz konusu dosyanın değişmesi gerektiğinde vi'da hackleneceğim).

0
DanW