Emacs ve Vim arasındaki farklar


686

Birinin neden diğerinden daha iyi olduğuna dair dini bir tartışmaya girmeden, Emacs ve Vim arasındaki pratik farklılıklar nelerdir? Birini veya diğerini öğrenmek istiyorum, ama her biri için öğrenme eğrisinin yüksek olduğunu ve karar veremediğimin farkındayım. Ben asla bu tip bir editör kullanmadım (her zaman IDE kullandım), bu yüzden bir acemi yardımcı bir şey bir artı.


Bir alev savaşı başlamadan önce: Hangisinin daha iyi olduğunu sormuyorum, ikisi arasındaki farkları soruyorum. Nesnel bir karşılaştırma yapmak istiyorum .


3
Bir Mac (OSX) kullanıyorsanız, birçok temel emacs imleç hareketi komutunun hemen hemen her yerde çalıştığını göreceksiniz. (Örneğin, bu yorumu web sayfasına yazdığım yerde çalışıyorlar.) Mac kullanıcıları için, emacs'ın en azından aşağıdaki alt kümesini öğrenmenin sistem çapında bir yararı vardır: ^ A ^ B ^ D ^ E ^ F ^ K ^ L ^ N ^ O ^ P ^ T ^ V ^ Y
Mat

2
@ JamesAnderson: tecrübelerime göre tam tersi. 2.5 yıldır vim kullanıyor, sonra emacs'a geçiyor. Emacs insanlar sadece umursamıyor ... "sizin için ne çalışırsa". İşte ,salespitch#emacs<fsbot> We aren't gonna lie. Emacs sucks. Some of us tolerate it, but we can't tell you if YOU'LL be able to. Try it and make up your own mind.
Silex

2
Emacs kesinlikle harika bir işletim sistemidir, ancak sadece iyi bir editörden yoksundur.
technical_difficulty

1
@ JimmyM.G.Lim Hayır, sistemdeki geçerli çağrı cihazını kullanır. Eğer PAGER=cat mankoşarsanız, adam metni doğrudan ekrana görüntüler.
SS Anne

1
sanırım bu "öncelikle görüş tabanlı" polis ilk sorulduğunda yoktu ;-) ah, daha basit kez ... bir şey söyleyeceğim bir kez, emacs hakkında bir kitap okumak ve denemek, düşündüm bomba oldu. 3 hafta tatil sonra tüm tuş vuruşlarını tamamen unuttum bulundu. Diğer yandan vim gerçekten benim işim değil, ama sadece kullanarak güvenilir bir şekilde yarı işlevini yerine getirebilirim i, esc, wq.
JL Peyret

Yanıtlar:


491

(aşağıdaki metin benim düşüncem, gerçek ya da hakaret olarak ele alınmamalıdır)

Emacs ile 7/24 açık ve programın içinde yaşamanız bekleniyor, yaptığınız neredeyse her şey oradan yapılabilir. Kendi uzantılarınızı yazar, not alma, organizasyon, oyunlar, programlama, kabuk erişimi, dosya erişimi, müzik dinleme, web'de gezinme için kullanırsınız. Bundan memnun olmanız haftalar ve haftalar alır ve her zaman yeni şeyler öğrenirsiniz. Erişiminiz olmadığında sinirlenir ve yapılandırmanızı sürekli olarak değiştirirsiniz. Diğer insanların emacs sürümlerini kolayca kullanamazsınız ve sadece yüklenmez. Harika Lisp kullanıyor. Olmasını istediğiniz herhangi bir şey haline getirebilirsiniz. (hiçbir şey)

Vim ile neredeyse her zaman önceden kurulur. Hızlı. Bir dosyayı açmak hızlı bir düzenleme yapmak ve sonra çıkın. Başkasının makinesindeyseniz temel kurulumla çalışabilirsiniz. Oldukça düzenlenebilir değil, ancak yine de çoğu metin editöründen çok daha iyi. Okuduğunuz / düzenlediğiniz çoğu zaman yazmamanın farkındadır ve bu kısmı daha hızlı yapar. Emacs pinkie'den muzdarip değilsin . Çok sinir bozucu değil. Öğrenmek daha kolay.

Seçtiğiniz programda çok fazla zaman harcamak istemiyorsanız Emacs'ı her gün bütün gün kullanmam (ve sevmeme rağmen) vim seçerim


154
Kullanılamıyorsa: .emacs ve .emacs.d dosyalarınızı bir kaynak kontrol deposuna koymanızı öneririz ve bu nedenle mükemmel Emacs kurulumunuzu almak sadece bir ödeme meselesidir.
Duncan Bayne

7
Hem emacs hem de vim yukarıda tarif edilenlerden muzdarip olabilir: her ikisi de vanilya formlarına kıyasla tanınmayan noktaya kadar yapılandırılabilir. Ayrıca, ikinci bir vcs kullanımı.
Alexej Magura

11
Hangi sistemlerde çalışıyorsunuz, @Radu? 2010'larda hiçbir zaman vibunun yerine vimtakma yerine gerçek bir sistem görmedim .
ELLIOTTCABLE

9
Belki Vim'i Emacs'tan öğrenmek daha kolaydır, ancak daha önce hiç deneyiminiz yoksa ilk kez başlattığınızda inanılmaz derecede kafa karıştırıcıdır! Kapatmak için google kullanmak zorunda kaldım ve hala doğru yapmak için birkaç kez denemek zorunda kaldı.
HelloGoodbye

9
VIM'in "önceden kurulmuş" gücünü asla küçümsemeyin: Nereye giderseniz gidin neredeyse her zaman kullanılabilir ve çok az özelleştirme ile kullanılabilir. sshDiğer makinelere girerken her zaman kullanıyorum . Bu yüzden önce öğrendim - bu, çünkü arkadaşlarım VIM'i biliyordu ve bana yardımcı olabilirdi. (Arkadaşlarınızın desteğini de hafife almayın!)
jvriesem

137

Vim bir kabuk değildir. Ve alt süreçlerle iyi iletişim kurmaz. Bu neredeyse tasarımdan kaynaklanırken Emacs'ta bu unsurlar tasarıma dahil edilir. Bu, Vim'de bir hata ayıklayıcı veya yorumlayıcı (bir çeşit IDE sağlayan) gömmek gibi bazı şeylerin zor olduğu anlamına gelir.

Ayrıca, Emacs kısayollarına temel olarak değiştiriciler aracılığıyla erişilir ve açıkçası Vim arabirimi ünlüdür ve manipülasyon için çok miktarda doğrudan tuşa erişim sağlar.

Emacs eskiden programlanabilir olan tek editördü ve Vim, Python ve Ruby bağlamaları (ve dahası, unuttum) eklenmesi ile programlanabilirliği konusunda çok garip seviyelere sahipken, Vim de birçok yönden programlanabilir önemsiyorsun.

Vim kullanıyorum ve bundan oldukça memnunum.


6
Küçük güncelleme: Vim, 8.0 ve 8.1 sürümleri terminal arabellekleri bile sunduğundan alt süreçlerle daha iyi iletişimi destekler, bu nedenle emac'lara biraz daha yaklaşıyor.
DarkWiiPlayer

110

Vim:

  • basit bir editör olarak daha iyi (basit görevler için daha az anahtar gerekir)
  • daha aktif komut dosyası topluluğu - dahili dil: vimscript
  • komut dosyaları, eklentiler, renk şemaları, bir merkezi depo ...
  • ayrıca python genişletilebilir, yakut
  • taşınabilir yapılabilir (emacs'ın bazı sorunları var)

Emacs:

  • varsayılan olarak modal olmayan (günümüzdeki editörlerin çoğu bu yaklaşımı benimsemiştir). Vim davranışını taklit eden kötü mod olmasına rağmen .
  • genişletmek için daha güçlü bir dil (elisp tam gelişmiş bir dildir ve emacs'ta her şeyi pratik olarak yeniden tanımlayabilirsiniz; vim'de editörün işlevlerini yeniden tanımlayamazsınız. hemen hemen hiçbir şeye benzemez)
  • daha genişletilebilir
  • GNU araçları için mükemmel destek (bir grup)

Şahsen, vim'i tercih ederim - küçüktür, yapması gereken şeyi yapar ve tam bir Üfle IDE istediğimde VS'yi açarım. Emacs'ın IDE (ya da işletim sistemi demeliyim) isteyen bir editör olma yaklaşımı, ancak tam olarak değil, IMHO, modası geçmiş. Eskiden bir e-posta istemcisi, ftp istemcisi, tetris, ... tek bir pakette (emacs) bir anlam ifade etmiyordu ... günümüzde artık geçerli değil.

Bununla birlikte, her ikisi de programcı ve süper kullanıcı topluluk kullanıcıları arasında dini tartışmaların bir konusudur ve bu bağlamda, her ikisi de temas halinde (aynı cümle / soruda) alev savaşlarına başlamak için mükemmeldir.


47
"editör olarak daha iyi" oldukça belirsiz. Nedenlerini görmekle ilgilenirim.
Allen

41
@Allen - İçindeki belirsiz nedir? Nadiren bu vim ve emacs kullanıcılarıyla tanışıyorum, bu ifadeyle bir sorunu var. Hardcore emacs kullanıcıları bile genellikle bunu bir gerçek olarak kabul eder. Her iki editörü de kullandınız mı? Metin düzenleme özellikleri açısından vim'in bir avantaja sahip olduğu açıktır.
Kale

36
Herkesin bunu bir gerçek olarak kabul edeceğine inanıyorum. Hem emacs hem de düz VI'nın uzun süreli bir kullanıcısı olarak, vim'i birkaç kez kullandım - ancak "bir editör olarak daha iyi", büyük ve küçük modların çok daha geniş bir seçiminden başka bir nedenden dolayı aklımdaki emacs'a gitmek zorunda. yazarken size yardımcı olmak için.
Kendall Helmstetter Gelner

61
Vim bir editör olarak daha iyidir çünkü metni manipüle etmek, ellerin ve parmakların emaclardan daha az hareket etmesini gerektirir, en azından benim deneyimim.
StackedCrooked

7
Ancak bu bir yana, vim düzenleme için daha uygundur: satır numaraları, görsel mod, manipülasyon wint1.kaist.ac.kr/files/attach/images/59/450/… . FCOL, bir seferde bir satır kaydırmak için emac alma konusunda sorun yaşadım.
Kale

52

Her iki editör için objektif bir analiz arıyorsanız, kökenlerine ve ilgili tasarımların arkasındaki felsefeye bakın. Hangisinin size daha uygun olacağını düşünün ve öğrenin (ve öğrenin ve öğrenin, çünkü herhangi bir IDE'ye karşı gerçek faydasını keşfetmeniz zaman alır). Vi ile Ekran Düzenlemeye Giriş, Bill Joy ve Mark Horton tarafından yazılmıştır ve çeşitli tuş vuruşları için neden modal tasarım ve mantığı seçtiğini açıklamaktadır (CTRL-W + W'nin (bir sonraki W indow'a geçecek ve CTRL tuşunu daha uzun süre tutmanız durumunda CTRL W + CTRL W için aynı olacaktır.

İşte Emacs zaman çizelgesine bir bağlantı ve Multics Emacs kağıdına referans var. İşte stresin programlanabilir bir metin editörü üzerinde olduğunu gördüğüm Emacs üzerine RMS makalesi (1981 ve öncesinde bile).

Emacs belgelerini okumadım, ancak Bill Joy'un vi belgesini birkaç kez okudum. Her ikisi de eski, ama yine de felsefeyi alacaksınız ve mevcut aracı kullanmayı seçebilirsiniz (vim 7.x veya emacs 25?)

Düzenleme: Okurken zaman içinde geri alır gibi hem bu kağıtları okumak için sabır ve hayal gücü gerektiğini belirtmeyi unuttum. Ama buna değer.


43
  1. Vim her zaman Emacs'tan daha hızlıydı. Herhangi bir makinede, Vim'in hazır kurulumlarının Emacs'ın hazır kurulumlarından daha hızlı başlayacağını söylüyorum. Ve her ikisinin de orta derecede özelleştirilmesinden sonra, Vim'in Emacs'tan daha hızlı başlayacağını düşünüyorum.

  2. Bundan sonra, diğer pratik fark Emacs'ın modlarıydı. XML, C / C ++ / Java / ne olursa olsun, LaTeX ve aklınıza gelebilecek en popüler dilleri düzenlerken hayatınızı büyük ölçüde kolaylaştırırlar. Düzenleyiciyi uzun oturumlar ve işler için açık tutmak istemenizi sağlar.

Sonuçta, Vim'in kısa, hızlı düzenleme görevleri için sizi ona çektiğini söyleyeceğim; Emacs sizi uzun seanslara dalmaya teşvik eder.


1
Aksine, modların hayatı kolaylaştırdığını düşünmüyorum. Ve Larry Tesler de aynı şeyi düşünüyor .
Eliran Malka

2
Emacs'ın modları kodlamaya nasıl yardımcı olur? (Ben yeniyim ...)
jvriesem

4
Uzun zaman önce dört nedenden dolayı vi'dan emacs'a geçtim: (a) bir sonraki derleyici hatasına ulaşmak için tek bir tıklama, (b) gdb entegrasyonu, (c) grep ve find-grep. Bunları şimdi vimde yapmak mümkün mü?
zzz777

"Vim her zaman Emacs'a göre daha hızlıydı" - Bir emacs sunucusunu çalışır durumda tutarsanız, emacs-istemcisini hedeflemek çok hızlıdır. Tüm makinelerimde çoğalttığım komutlar var (git kullanarak). (Ben de * vim kullanıyorum, aslında; her zaman nerede olduğuma ve görevin ne olduğuna bağlı)
Jay

"Vim her zaman Emacs'a göre daha hızlıydı" - use-packageve onun :deferseçeneği ile Emacs'ım neredeyse anında açılıyor. Ben bile emacsclient kullanarak pes etti.
Jay

37

VI her zaman kullanılabilir ve en sakat, tek kullanıcı modu, kırık grafikler, tuş haritası yok, yavaş bağlantı makinesinde çalışır - bu nedenle sadece sysadmin görevleri için basit dosyaları nasıl düzenleyeceğinizi bilmeye değer.

Emacs bir editörde eksiksiz bir kullanıcı arayüzüdür. Fikir, makineyi çalıştırdığınızda ve asla bırakmadığınızda Emacs'ı yakmanızdır. Binlerce oturumun olması mümkündür.

Emacs'ın yeteneklerini öğrenmenin bir GUI editörü / IDE kullanma ve ekstra görevler için python / awk / etc gibi bir şey kullanma ile karşılaştırıldığında buna değip değmeyeceği size kalmış.


2
VI'yı sadece bu nedenlerden dolayı biliyorum - ama bu günlerde en azından temel bir EMACS kurulumu olmadan bir UNIX sistemi ile karşılaşmanızın pek olası olmadığını ve kötü bir kabuk ortamını daha tolere edebileceğini söyleyebilirim.
Kendall Helmstetter Gelner

3
Veya, meşgul kutusunu bir initrd'e sıkıştırın ve önyükleme aygıtı için bozuk bir depolama sürücüsünde hata ayıklayın, başlangıç ​​işleminin başlangıcında ilk eliniz olan ram diski ve yine de bir düzenleyiciniz var - vi.
smcameron

2
Vi ile bir süre sonra parmaklarınız hareketleri bilir - ama gerçek tuşların ne olduğunu hatırlayamazsınız!
Martin Beckett

10
Ben ed"her zaman kullanılabilir ve en sakat, tek kullanıcı modu, kırık grafikler, hiçbir tuş haritası, yavaş bağlantı makinesi üzerinde çalışacak" olduğunu düşündüm . Bekle, bu hangi yıl? (İç ed
çeker

2
@Kendall: Mevcut ubuntu linux emacs kurulu olarak gelmiyor.
intuited

25

Ben tam bir Emacs hayranıyım, ama Emacs'ı tanımadan çok önce VI'yı tanıyordum. Bununla birlikte, tüm insanlarıma VI öğrenmelerini sağladım çünkü her zaman her yerde mevcut. İkisinden biri ile yanlış gidemem.


2
Bu da benim deneyimim ... Emacs veya uEmacs hiç mevcut değildi. İlk editörüm uEmacs (Amiga'da) ama vim öğrendiğimden beri etrafta dolaşmak çok kolaydı.
Marius

Bu da benim deneyimim. Vi her yerdedir ve genellikle unix sistemlerinde varsayılan $ EDITOR olarak yüklenir, bu nedenle unix ile çalışıyorsanız bunu bilmeniz gerekir. Bununla birlikte, her gün metin düzenleme için emacs kullanıyorum ve onu seviyorum.
Fergie

14

Zaten bir cevap seçilmiş gibi görünüyor, ama benim için büyük fark her zaman kip ile kip olmamış. Vim modsaldır, yani belirli bir kullanım modu kümesine göre optimizasyonlar yapar. En azından ben hep böyle baktım. Bu, Vim'i farklı bir deneyim haline getirir, çünkü kod yazdığınız bir çalışma alanına sahip olmak yerine, gerçekten bir ortama metin üzerinde hareket etmesini söylersiniz. Bu yüzden insanlar Vim gibi şeyleri gerçekten bir dil öğrendiğinizi söylüyorlar. : Wq ve: s / foo / bar, metin düzenleyen ve okuyan bir kabuk benzeri ortamın parçasıdır.

Emacs ise editörlerin / kelime işlemcilerin çoğu vb. Çok daha yakın. bugün görüyorsun. Son derece programlanabilir bir arayüze sahip bir çalışma alanınız var. Bu nedenle, e-posta, irc, kabuklar, vb. Editörden ayrılma arzusu daha az olur, çünkü çıkmak, başka bir uygulama / dil açmak ve bazı metinlerde bir şeyler yapmak yerine, editörünüz kapsamında bunları yapabileceğiniz Emacs vardır.

İki fikir birbiriyle çelişmek zorunda değildir, ancak basitçe iki farklı odak ortaya çıkarırlar. Şahsen Emacs kullanıyorum, ama Vim'i gerçekten iyi tanıyan ve dürüstçe hangisini seçtiğinizin önemli olmadığını söyleyebilen insanlar gördüm. Önce Vim'i denedim ama Emacs bana yapıştı. Ne seçerseniz seçin, Vim'de her zaman mevcut olduğu için en azından biraz yetkin olmanız gerekir.


13

Vi ile başladım, emacs'a, sonra vim'e gittim. Son beş yılda neler değiştiğini görmek için Emacs'ı denemeyi düşünüyordum. (IDE'lerden bahsetmişken, bir süre tutulmaya başlamıştım, ama terminal penceremi mac'umu (kocanın) linux kutusuna bağlamayı tercih ediyorum).

Kes ve yapıştır işi son zamanlarda beni rahatsız ediyor. Vim'de kes ve yapıştır, Emacs, IIRC'den daha fazla adım atıyor. Ve bir tarayıcıyı terminal penceresine yapıştırmak, yapmak istemediğim fantezi bir şey yapmadığınız sürece rahatsız edici, bu yüzden garip girintiye katlandım. Bence emacs içinde birden fazla dosya düzenlemek daha kolaydı. En azından bir dosyadan diğerine atlayarak her ikisini de ekranda görürseniz.

Sadece kodlama işine girmeyi sevdiğim için vi veya emacs'ın fantezi özellikleriyle oynamadım. İhtiyacım olan tek şey güzel renkler ve alan dönüştürme için uygun sekme (özellikle python ile önemli).

Sanırım her şey, fantezi şeyleri umursamıyorsanız, bir dosyayı kaydetmek için :wqveya Ctrl-x Ctrl-s(IIRC) kullanmak isteyip istemediğinize bağlıdır .

@mgb doğruydu. Bir ya da iki ay önce Debian dağıtımında bir şeyi düzeltmek için en az linux'daydım. vi, mevcut tek editördü.


1
Bu hala bir değil ve bitti, ancak terminal macunlarını bozan tüm ayarları yapmaktan çok daha kolay. Kullanın :set paste, ardından metninizi yapıştırın ve işiniz bittiğinde :set nopastenormal moda geri döner. Ayrıca, :set pastetoggle=<F2>seçtiğiniz tuş kombinasyonunu kullanarak bunu değiştirecek komut da vardır .
hbar

Girinti modunda, ^R^P+panodan yapıştırabilir ve mevcut girintiyi koruyabilirsiniz. ^R^O+girinti bırakacaktır. ^R+yazmış gibi ekleyecektir. :help i_^R^Pdaha fazla bilgi için.
intuited

3
Kes / yapıştırın bundan daha kolay olduğunu düşünemiyorum yyp. Ayrıca, farklı pencereleri kesmek ve yapıştırmak için buraya bakın stackoverflow.com/a/8757876/654789
puk

@puk - Ctrl-k (yank) / Ctr-y (put) emacs kadar kolaydır. Emacs da birden fazla kayıt (az) var metin veya mevcut pozisyon içine kaydedebilirsiniz ...
Kendall Helmstetter Gelner

3
vim'de

12

Günlük düzeyde büyük bir fark var - Vim (veya herhangi bir vi varyantı) doğal olarak modal (düzenleyemediğiniz komut modlarına girersiniz) ve Emacs (diğer birçok editörle birlikte) değildir.

Elbette, menüleri ve benzerlerini kullanarak ilk önce Vim'de komut moduna girmeniz gerekmez. Ama Vim'in gücünün küçük bir kısmını bile kullanacaksınız. Bu Vim / Emacs tartışmasının merkezinde.

Şahsen, Emacs'ın çok daha genişletilebilir olduğunu düşünüyorum. Birçok şey için Elisp paketlerini bulabilirsiniz.

Yine de, neden bunlardan birini daha geleneksel bir IDE üzerinden öğrenmeyi düşündüğünüzü merak ediyorum. Bunlardan birini ne için öğrenmek istiyorsunuz?


8
Dürüst olmak gerekirse, onun hype'a dayanıp dayanmadığını görmek için öğrenmek istiyorum. İkisinin de ne kadar esnek olduğunu gördüm ve uzmanların içlerinde oldukça çılgın şeyler yaptığını gördüm ve bunun öğrenme eğrisine değip değmeyeceğini görmek istiyorum. Ayrıca, IDE'm Lisp'i desteklemiyor. :)
Sasha Chedygov

3
Hmm. Sorun şu ki çok fazla Emac var ... ama emacs kullanmak için hala bir IDE bıraktığım şey, makro kaydı kullanarak otomatikleştirdiğim karmaşık tekrarlayan görevler dizisi. Örneğin, geçerli bir sözcüğü veya ifadeyi alabilir, bunu bir "arabelleğe" kopyalayabilirsiniz (yalnızca birden fazla kesip yapıştırabileceğinizi düşünün), sonra başka bir dosyaya gidin, kopyalanan değeri kullanarak kısmen bir metin yazın ve daha önce başka bir dosya yazın kopyalanan değer de, imleci ilerletin, konumu kaydedin ve ilk arabelleğe geri dönün ... sonra işlemi orijinal dosyanın bir sonraki satırı için tekrarlayın.
Kendall Helmstetter Gelner

1
Makroları hem vi hem de Emacs'ta yoğun olarak kullandım. Eksik olan şey, Emacs'ın makroları kullanırken erişmek için çok daha geniş bir yöntem seçimine sahip olması ve örneğin arama terimlerinin ortasında bile her yerde kesme arabellekleri kullanabilmenizdir. Lütfen bana normal ifadeye dayalı bir ifadenin bir kelimesini seçecek bir makro nasıl yazacağınızı, bulunan terimi alacağınızı, o terimle ilgili başka bir belgeyi nasıl arayacağınızı ve bunun yerine değiştirmeler yapacağınızı söyleyin.
Kendall Helmstetter Gelner

2
@ kendall-helmstetter-gelner - vimscript ile mümkündür veya vim'in bağları olan diller (ruby / vim / tcl / perl gibi). Komut dosyası dillerinden tüm vim işlevlerine ve düzenleyici arabelleklerine erişebilirsiniz.
segy

1
Bu etkileyici ama Emacs'ta da aynı şeyi yapmak, el ile yazmak yerine sadece karmaşık bir makro oluşturmayı bildiğim tuş vuruşlarını kullanmayı gerektirir. Emac'ları bilen herkesin bu görevi yapan bir makro yapması kolaydır, ancak adil bir araştırma yapmadan ortaya koyduğunuz makroyu oluşturabilecek çok fazla VI kullanıcısı olmadığını söyleyebilirim.
Kendall Helmstetter Gelner

11

Her iki editör hakkında söylenen çok şey var, ama eklemek için sadece 5 peni var. Her iki editör de harika ve ikisiyle de yanlış gidemezsiniz.

Yaklaşık 15 yıldır vi / vim kullanıcısıyım. Birkaç kez emacs dönüştürmeyi denedim ama her zaman oldukça vim aslında bir lisp uzantısı yazmak veya bir şey yüklemek gerek kalmadan kutudan eksik bir şey yapabileceğini keşfetmek oldu.

Benim için editörler arasındaki temel fark, vim'in ortamı / işletim sistemini kullanmasını sağlarken, emacs onu kapsüllemeye veya değiştirmeye çalışır. Örneğin, metninize şu tarihle bir tarih ekleyebilir: vim'de r! Tarih veya takvim ile: r! Cal 1 2014 veya hatta ara belleğinizin içeriğini onaltılık içerikle değiştirebilirsiniz. Örneğin. :%! xxd, hex'i düzenleyin ve sonra geri alın:%! xxd -r ve yerleşik grep, sed vb.

Başka bir örnek ile kullanılmasıdır jqve gron. Örneğin. json blob'u editöre yapıştırın ve sonra dönüşüm için çalıştırın:

:r!curl -s http://interesting/api/v1/get/stuff
:%!gron | grep 'interesting' | gron -u

VEYA

:%!jq .path.to.stuff

Yukarıdaki borulu komutların her biri ayrı ayrı çalıştırılabilir :%!<command>, burada %tüm belge anlamına gelir, ancak seçim, seçilen satırlar, vb. Üzerinde de çalıştırılabilir. Burada gron outputyol olarak kullanılabilir jq.

Ayrıca EX toplu düzenleme işlevselliği de elde edersiniz, örn. Belirli sözcükleri değiştirmek, kodu yeniden biçimlendirmek, dos-> unix yeni satır karakterlerini dönüştürmek, her seferinde 100 dosya üzerinde bir makro çalıştırmak. Ex ile kolayca yapılır. Emacs'ın benzer bir şeye sahip olup olmadığından emin değilim.

Başka bir deyişle IMHO vim, unix felsefesine yaklaşıyor. Genellikle daha basit ve daha küçüktür, ancak işletim sisteminizi ve araçlarınızı biliyorsanız, muhtemelen (VIM) sunacak olandan daha fazlasına ihtiyacınız olmayacaktır. Asla yapmam.

Ayrıca vi, herhangi bir unix / linux sisteminde defacto standardıdır, neden aynı şeyi yapan 2 araç kullanmayı öğrenin. Elbette bazı sistemler mg veya benzeri bir şey sunar, ancak kesinlikle hepsi değildir. Unix + Vi <3.

Sadece 5 peni.


8
"Vim unix felsefesine yaklaşıyor." - Burada, kabuğunuzdan elde edebileceğiniz araçlarla ilgili felsefe hakkında konuşuyorsunuz. Bununla birlikte, kabuğun kendisi yerleşik, tarih, globbing, süreç kontrolü, programlanabilirlik vb. Emacs, unix kabuklarının felsefesine açıkça daha yakındır: araçların birlikte kullanılabileceği son derece özelleştirilebilir bir ortam sağlayın ve kullanıcının araç setini çalışırken kendi kod parçacıklarıyla genişletmesini kolaylaştırın. Ben bunu görebilirsiniz düşünüyorum hem emacs ve vim kuvvetle Unix geleneklerinde köklü edilmektedir.
Matt

1
Yorumun için teşekkürler. Burada bir editör savaşı başlatmak niyetim hiçbir şekilde emacs kullanıcılarını rahatsız etmek değildi . Sadece emacs içindeki işlevselliği kapsüllemek için karmaşık uzantıları yazmak yerine, kabukları (veya düzenleyicinin içinden) gerçek komutları çağırmayı daha kolay ve daha taşınabilir buluyorum , bu da ortamı zamanla şişiriyor. Ancak bu uzantılar kullanıcının tercihine bağlıdır ve hiçbir şekilde editörlerin hiçbiri tarafından uygulanamaz. UNIX geleneğindeki emacs ve vi (m) yeri konusunda sizinle aynı fikirde olun .
Alex

1
Sadece savaşa devam etmemek için, "vim daha çok unix aracı gibi" benzetmenize katılmadığım açıktı. Bu sezginin "ve emacs daha çok bir unix kabuğu gibi" ile genişletilebileceği aklıma geldi. :-)
Matt

@Matt: Benzetmeyi seviyorum. Amin. ;)
Alex

2
Emacs'de bahsettiğiniz her şeyi ve çok daha fazlasını yapabilirsiniz (örneğin, hexl modu, dosyayı bir ascii önizlemesi ile hex'te düzenlemeye doğrudan gider). VI'yı da gayet iyi tanıyorum, ancak makrolar oluşturmak Emacs'ta çok daha kolay ve esnek ve çoğu modern VIM uygulamasından bile daha fazlasını yapabilir. Bunu bilmenin nedeni budur, çünkü emacs çoğu yerde ve gerçek bir metin düzenleme desteği sunabilir.
Kendall Helmstetter Gelner

10

Bana göre emacs artıları,

  • tramp-modu ssh üzerinden uzak dosyaları düzenlemenizi sağlar. tıpkı yerel dosyalar gibi.
  • tramp-mode + dired = tam özellikli sftp istemcisi
  • ihtiyacınız olan her dil için destek.
  • terminal emülatörü (terim modu) yerleşik böylece uygulamalar arasında geçiş yapmadan kodlama tutabilirsiniz.
  • Eğer sevmediğiniz her şeyi lisp kullanarak değiştirebilirsiniz.

11
FWIW: vim hemen hemen ilk 3'e sahip (farklı isimlerle. "Tramp-mode" vim'de "netrw"). # 4, vim kullanıcılarının bir özelliği değil, genellikle bir hata olarak kabul edilir. "Elisp" i (şimdiye kadarki en kötü lisp lehçesi, Emacs seven arkadaşlarım bana söylüyor) python / mzscheme / perl / ruby ​​/ tcl / vimscript ile değiştirirseniz # 5 vim için doğrudur.
Laurence Gonsalves

3
# 4 neden bir hata olarak yorum yapabilir misiniz?
Hamza Yerlikaya

2
Check out Conque vim gömülü kabuk için eklenti.
intuited

9

Benim için emacs daha iyi geliştirme araçlarına sahip (sadece etiket tabanlı araçlar değil).


9

Burada "UNIX Programlama Sanatı" kitabından bir alıntı yapmak istiyorum:

Hem vi hem de Emacs'ı düzenli olarak kullanan birçok kişi bunları farklı şeyler için kullanma eğilimindedir ve her ikisini de bilmenin değerli olduğunu düşünür.

Genel olarak, vi küçük işler için en iyisidir - postaya hızlı yanıtlar, sistem yapılandırmasında basit ayarlar ve benzerleri. Özellikle yeni bir sistem (veya ağ üzerinden uzak bir sistem) kullanıyorsanız ve Emacs özelleştirme dosyalarınızı kullanmıyorsanız yararlıdır.

Emacs, karmaşık görevleri işlemeniz, birden çok dosyayı değiştirmeniz ve oturum sırasında diğer programlardan sonuçları kullanmanız gereken genişletilmiş düzenleme oturumları için kendi başına gelir. Konsollarında X kullanan programcılar için (modern Unix'lerde tipik olan), büyük bir pencerede oturum açma süresinden kısa bir süre sonra Emacs'ı başlatmak ve sonsuza kadar çalışmasını sağlamak, muhtemelen onlarca dosyayı ziyaret etmek ve hatta birden fazla Emacs alt penceresinde programları çalıştırmak normaldir.

Burada vurgulamak istediğim şey şu: “ Birçok insan her ikisini de bilmeyi değerli buluyor .”


Bu muhtemelen eski. Bence o günlerde Emacs'ın diğer uygulamaları çalıştırmayı bırakan Tarayıcı, SSH, Müzik Çalar ve yavaş sistemlere sahip olma yeteneği, bir uygulamayı açıp ona bağlı kalmanın daha iyi olduğuna inanmasını sağladı?
Nishant

Harika bir haber: modası geçmiş değil! Tarayıcıyı, Müzik Çalar'ı vb.
Andriy Tykhonov

Bana göre TAUP'un Emacs perspektifi modası geçmiş, çünkü o günlerde Emacs, irc, müzik, uzaktan düzenleme vb.Gibi bir anda birden fazla şey yapabilen tek bir uygulama olduğu için bir tanesine sahip olmak bir avantajdı. Ancak bugün bu amaçların her biri için mükemmel uygulamalarınız var ve bellek de daha önce olduğu gibi bir sorun değil ... Gmail'i Emacs'ta okuduğunuzu hayal edin - Yani Gmail arayüzünde, Emacs E-posta İstemcisi'ne uzun zaman alır ve orijinal Gmail Arayüzü vb. kadar iyi olmayabilir.
Nishant

Eski değil! :)
Andriy Tykhonov

> Ancak bugün bu amaçların her biri için mükemmel uygulamalarınız var Evet, ancak tüm bu uygulamalara çok farklı arayüzler, yapılandırmalar, kullanıcı deneyimi vb. Vb var ... Ama Emacs One Tool! Örneğin, Emacs anahtar bağlantılarını çok seviyorum, bunları tarayıcıdaki kabukta kullanıyorum. Ve uygulamalarda en azından bazı şeylerin aynı olması çok iyi ...
Andriy Tykhonov

9

Emacs'ın Faydaları

  • Emacs hem modal olmayan bir arayüze (varsayılan olarak) hem de modal bir arayüze sahiptir (örneğin Evil, Viper veya Vimpulse aracılığıyla vim ve vi'yi taklit edebilir).

  • En taşınan bilgisayar programlarından biri. Birçok Unix benzeri sistem (Linux, çeşitli BSD'ler, Solaris, AIX, IRIX, macOSetc.), MS-DOS, Microsoft Windows, AmigaOS, ve OpenVMS. Hem ücretsiz hem de tescilli Unix sistemleri, genellikle işletim sistemiyle birlikte gelen Emac'leri sağlar.

  • Emacs sunucu mimarisi, birden çok istemcinin aynı Emacs örneğine bağlanmasına ve arabellek listesini paylaşmasına, yüzüğü öldürmesine, geçmişi geri almasına ve diğer durumlara izin verir.

  • Anında belgelenen tuş bağları, işlevler ve komutlar ile yaygın çevrimiçi yardım sistemi.

  • Aşağıdakileri içeren özelliklere sahip genişletilebilir ve özelleştirilebilir Lisp programlama dili değişkeni (Emacs Lisp):

  • Güçlü ve genişletilebilir bir dosya yöneticisi (yönlendirilmiş), entegre hata ayıklayıcı ve geniş bir geliştirme ve diğer araçlar kümesi.

  • Her komutun bir Emacs Lisp işlevi olması, geçmiş eylemlere ve belge durumuna programsal olarak yanıt vererek DWIM (Ne demek istediğimi Yap) komutlarının etkinleştirilmesini sağlar. Örneğin, bir anahtarla ya da bölünmüş pencere komutu varsa başka bir pencereye geçebilir ya da gerekirse bir pencere oluşturabilir. Bu, kullanıcının hatırlaması gereken tuş vuruşlarının ve komutların sayısını azaltır.

  • Msgstr "Bir işletim sistemi içindeki işletim sistemi". Emacs Lisp, Emacs'ın düzenleme özelliklerinin çok ötesinde programlanmasını sağlar. Bir temel kurulum bile, iki web tarayıcısı, haber okuyucuları, çeşitli posta aracıları, dört IRC istemcisi, ELIZA'nın bir sürümü ve çeşitli oyunlar dahil olmak üzere birkaç düzine uygulama içerir. Tüm bu uygulamalar, Emacs'ın çalıştığı her yerde, aynı kullanıcı arayüzü ve işlevselliği ile kullanılabilir. Sürüm 24'ten başlayarak Emacs, alternatif web tarayıcıları, EMMS (Emacs Multimedya Sistemi) ve daha fazlası dahil olmak üzere ek uygulamaların yüklenmesini kolaylaştıran bir paket yöneticisi içerir. Ayrıca, belirli dil / kütüphane kombinasyonlarını veya kodlama stillerini hedefleyen çok sayıda paket de mevcuttur.

Vi benzeri editörlerin faydaları

  • Düzenleme komutları oluşturulabilir
  • Vi'nın kalıcı bir arayüzü var (Emacs'ın taklit edebileceği)
  • Tarihsel olarak vi, Emacs'tan daha hızlı yüklenir.
  • UNIX geleneğiyle derinden ilişkili olsa da, UNIX, Linux, AmigaOS, DOS, Windows, Mac, BeOS, OpenVMS, IRIX, AIX, HP-UX, BSD ve POSIX uyumlu dahil olmak üzere standart C kitaplığını uygulayabilen tüm sistemlerde çalışır. sistemleri.
  • Python, Ruby, Perl ve Lua gibi yorumlanmış diller için Vim komut dosyası veya API'ler aracılığıyla genişletilebilir ve özelleştirilebilir
  • Her yerde. Temelde tüm Unix ve Unix benzeri sistemler vi (veya bir varyant) yerleşik olarak gelir. POSIX standardında Vi (ve ex, ancak vim değil) belirtilir.
  • Sistem kurtarma ortamları, gömülü sistemler (özellikle meşgul kutulu olanlar) ve diğer kısıtlı ortamlar genellikle vi içerir, ancak emac içermez.

Kaynak: https://en.wikipedia.org/wiki/Editor_war


7

Artık Ara boşluklar nedeniyle bu ikisi arasındaki farkı düşünmenize bile gerek yok . Topluluk güdümlü bir Emacs dağıtımıdır.

Söylediği gibi,

En iyi editör ne Emacs ne de vim, Emacs ve Vim.

Spacemacs, hayatınızı ve işinizi daha kolay hale getiren Emacs ve Vim'den en iyisini birleştirir.

Aşağıdaki ekran görüntüsüne bakın,


(kaynak: spacemacs.org )


3
Bu hile ... Bazı korkak yapılandırmalar ile emacs;) Oldukça yapılandırmalar bir sürü
Alex

2
Bu harika - işe yaradığında. Olmadığında - elisp ve emac'leri bilmiyorsanız veya gitter chat'in ana katılımcılarını bulamazsanız - genellikle sıkışıp kalırsınız. (bazen .emacs içindeki melpa dizininizi silmek işleri düzeltebilir ...)
Aaron Hall

1
İhtiyacım olandan çok daha fazla şey olmasına rağmen, Ara boşluklardan gerçekten memnunum. Github'da dotfiles'im var, böylece yeni makineleri kolayca / hızlı bir şekilde kurabilirim ve kötülük (vim keybindings) kullandığımdan, spacemacs yapılandırmamı yükleyemediğim makinelerde çalışmam gerektiğinde almak için yeterli becerilere sahibim.
anr78

6

Vac üzerinden emacs kullanmayı seçmemdeki en büyük fark, emac'larda yerleşik gdb desteğiydi. Vim'in varsayılan dağıtımında yer almıyor ve gdb ve vim'i entegre etmek için yapılan proje MacVim ile çalışmaya başlamak neredeyse imkansızdı


1
Ben düzenleme için Vim, ve hata ayıklama için Xcode kullandım, ideal ama yapılabilir daha az ..
StackedCrooked

4

Elma ve portakal gibi. Her ikisinin de farklı tasarımı ve felsefesi var. Vim bir Metin Düzenleyicisi, Emacs ise Metin Düzenleme yapan bir Lisp Tercümanıdır.

Vim kullanıyorum çünkü hızlı, ince ve metinleri manipüle etmede gerçekten iyi. Geliştirme görevlerinizi gerçekten uyumlu hale getirebilen, birleştirilebilir bir doğal anahtar bağlaması vardır. Vim, bir şeyi gerçekten iyi yapmanın basit bir * nix filozofisine dayanır - Metin Manipülasyonu.

Vim'i bash / zsh ve tmux kullanarak genişletmek genellikle kolaydır ve çok şey öğrenmenizi sağlar. IMHO bu iyi bir öğrenme eğrisidir. Anahtar şey, daha büyük bir çalışma uygulaması elde etmek için bunları nasıl entegre edeceğinizi öğrenmektir. Vim ile entegrasyonu öğrenmeniz gerekir çünkü nasıl yapılacağını söylemediğiniz sürece doğal olarak entegre olmaz. Kullandığım bir başka değerli uzantı da Tig. Bu bir ncurses tabanlı Git ön uç. Tig'i sessizce açan bir bağım var ve sonra tüm Git işlerini orada yapıyorum.

Neyin en iyi olduğuna karar vermek son kullanıcıya kalmış. Emacs ve Vim'in zamanın testini üstlenmiş olmaları onların değerinin kanıtıdır. Sonunda iyi bir programcının yaratıcı olmak için kalem ve kağıttan başka bir şeye ihtiyacı yoktur. İyi algoritmalar bunları desteklemek için editörlere ihtiyaç duymazlar. Bu yüzden ikisini de deneyin ve sizi daha üretken kılan şeyleri görün. Öğrenilecek ve keşfedilecek çok şey olduğu için tasarım yazılımlarını her iki yazılımdan da öğrenin!



3

Emacs gerçekten her şeyi yap programıdır ve vi (m) gerçekten sadece bir editördür. Metin düzenliyorsanız, ikisi de iyidir, ancak emacs'ı tercih ederim, çünkü hareket etmek için ana satırdan birini kaydırmam ve komut modunda yanlış şeyler yazmaya devam etmem gerekiyor. Bende bu problem yok, vi (m) senin için editör olabilir.


2

Sarılıklı bir bakış açısı:

vi (vim değil) profesyonel bir zorunluluktur. Ortam ne olursa olsun, her zaman kolayca bulunabilecek bir vi biçiminiz vardır. Emacs'ta vi'da olabilirsiniz, unix-land'da bash komutları oluşturmak için vi'da olabilirsiniz.

Microsquish bile, yayınlanmış standartlara ve kurumsal standartlara uygunluk nedeniyle vi'yi (gizlemek için iyi bir iş çıkarsalar da) desteklemelidir.

Bence, yoğun bir ortamda pratik bir işteyseniz - bir geliştirme ortamında veya akademide bir süslü teçhizatla sınırlı bir sera çiçeği değil - süslü bir editör hakkında çok şey bilmek bir iş handikapıdır. Vim veya emacs'deki tüm süslü hileleri öğrenmeyin ve düzenleme ortamını isteğinize göre bükmek için bir grup makro geliştirmeyin. Muhtemelen bir fabrika ortamında haklı çıkaramayacağınız farklı makinelere katıldığınızda yolunuza çıkan muazzam bir zaman lavabosu.

Bill Joy'un makalesini okuyun - düz metni çok, çok hızlı bir şekilde düzenlemede çok yetkin, belki de güzel bir mühendislik çalışmasıdır. Parito'nun kuralı burada geçerlidir: Meyvelerin% 80'i sepetlerin% 20'sindedir. Düz metni çok hızlı düzenlemek, düzenleme yeterliliğinin temel noktasıdır - diğer her şey isteğe bağlıdır - ve bazen de incitici.


3
Hangi kağıttan bahsediyorsun? Bağlantı olmasa bile en azından bir isim verebilir misiniz?
darkfeline

2
"MS bile vi'yi desteklemeli." Bunu yedekleyebilir misin?
dodgethesteamroller

1

Siteden siteye çok fazla hareket ederseniz veya işiniz üretim sistemlerine bağlı kalmayı içeriyorsa, vim gidilecek yoldur.

Tüm * nix makinelerinde varsayılan olarak vi kurulu olacaktır.

Çoğu sisdamin, varsayılan kabuk olarak ksh'ı tercih eder. ksh, geçmişi aramak ve komut satırını düzenlemek için vi (veya emacs) komut tuş vuruşlarını kullanır.

Vi'yı iyi bilmiyorsanız, standart bir yapılandırmaya sahip bir unix kutusuna giriş yaptığınızda ciddi şekilde özürlü olursunuz.

Sadece bu nedenle vim'i normal günlük editörünüz olarak tavsiye ederim. Emacs hayranları çıplak kemikler unix sunucusunda yapılandırma dosyalarını değiştirmeye çalışırken saçlarını yırtıp gördüm.


1
Bash set -o viiçin .bashrc, set -o emacsvarsayılan olarak kullanılan yerine, kullanmayı deneyin . Hiç ksh kullanmadım ama aynı olabilir.
sjas

1

Sorunuzda Lisp'te programlanmasını istediğinizi söylemediniz! Ama cevaplarınızı yorumlarken, aslında bir LISP programlama arayüzü istediğinizi anladım.

Bu kesin görev için Vi'yi unutun. Emacs'ın LISP ile entegrasyonu harika! SLIME kullanmalısınız. Daha sonra, evalemacs arabelleğinde çalışan bir yorumlayıcıya işlevler, arabellekler veya dosyalar doğrudan aktarabileceğiniz REPL ile harika bir entegrasyona sahip olacaksınız ve çok daha fazlası ...


1
Evet, bunun farkındayım, ama iyi bir Lisp editörü arıyorum bu soruyu sormamın nedeni değildi - bu sadece bir örnekti. Yine de cevabınız için teşekkürler!
Sasha Chedygov

1

Bir üretim / araştırma ortamında yaklaşık 2 yıldır spacemacs ve yaklaşık bir yıldır neovim ile çalıştım. Spacemacs, katmanlar vb.Gibi güzel ekstra özelliklere sahip emacs. Ve neovim, bazı ekstra özelliklere sahip bir vim çatalı.

Her ikisinden de deneyim açısından oldukça memnun değilim. Ve hala metin düzenleme ihtiyaçlarım için uzun vadeli bir çözüm arayışındayım.

İşte basit bir karşılaştırma:

  • Neovim, vim, emacs, spacemacs, vb. Editörlerin tümü, editörlerin çoğuna kıyasla daha az kaynak tüketiyor.

  • Neovim / vim emacs'tan biraz daha hızlı, spacemaclardan belirgin şekilde daha hızlıdır.

  • Düzenleme deneyimi açısından. Kolayca emacs paketlerinin üstün olduğunu söyleyebilirim. Bence bunun nedeni emacs çekirdeği ile daha iyi uyum sağlamak.

  • Vimscript güzel ve vim ekosisteminde de kesinlikle harika projeler var. İyi olan şu ana kadar gördüğüm çoğu emacs projesinden daha iyi belgelenmiş olmaları.

  • Her ikisi de kullandığınız pakete bağlı olarak glitchy olabilir. Boşluklar donma eğilimindedir ve neovim korkutucu hata mesajları gösterme eğilimindedir, bu nedenle zehirinizi orada seçin.

  • Vim'de modsal düzenleme, sezgisel bir kavram değildir, ancak bir kez alıştıktan sonra, istediğiniz her şeyi istersiniz. Her iki editör de bunu sağlar.


1
"Modal düzenleme (...) alışmaya başladığınızda, istediğiniz her şey var" - bu ilginç. Yıllarca kötü modda Emacs'ı kullanarak geçirdim ve modsal düzenlemeye alışkındım ve şimdi kalıcı olmayan moda geri döndüm ... Daha iyi hissettiriyor. Bence bu sadece kişiye değil, aynı zamanda yaşamdaki bağlama / zamana / neye bağlı. Tat, sanırım. :)
Jay

1
@ Tahmin edebilirim, ama kaçırmayın, sütun seçimi gibi şeyler ve ": XX" ile atlamak?
Kaan E.

Gerçekten değil ... Emacs'ın dikdörtgen seçimini bazen kullanıyorum ve bunun yerine: xx "Mg g XX" - birkaç tuşa daha basıyorum, ancak nadiren bir satıra gitmem gerekiyor. Genellikle, bir Emacs uygulaması (hata ayıklayıcı, vb.) Beni doğru satıra gönderir.
Jay

0

Tuş vuruşu yürütme ::: vi düzenleme, yazılan tuşların her bir permütasyonunu korur. Bu, karar ağacında herhangi bir komutu açık bir şekilde tanımlayan bir yol yaratırken Emacs komutları, derhal yürütülen yazılan tuşların birleşimidir ve bu da kullanıcıyı bir komut kullanıp kullanmamayı seçer.

Bellek kullanımı ve özelleştirilebilirlik ::: vi özelleştirme için daha sınırlı kapasiteye sahip daha küçük ve daha hızlı bir programdır, oysa Emacs'ın başlatılması daha uzun sürer ve daha fazla bellek gerektirir. Bununla birlikte, son derece özelleştirilebilir ve çok sayıda özellik içerir, çünkü aslında metin düzenleme için tasarlanmış bir Lisp programı için bir yürütme ortamıdır.


0

vim kullanışlı bir editör, basit tipvim filename dosyayı açmak, düzenlemek, kaydetmek ve kapatmak için .

emacs bir editör gibi davranan bir "işletim sistemi" dir eval, davranışını değiştirmek için kod yazabilir ve istediğiniz gibi genişletebilirsiniz. birmodeEmacs üzerinde e-posta almak / göndermek , işletim sistemindeki bir e-posta yazılımı gibidir.

Basit bir düzenleme yaparken, örneğin bir yapılandırma dosyasını değiştirirken, vim kullanıyorum .

Aksi takdirde asla emac bırakmam .


0

Bence asıl fark tasarım hedefi. VIM, çalışan bir editör olarak UNIX içindir. Emacs, GNU ve lisp korsanları içindir, bu nedenle bazı karışık tasarım öğeleri vardır.

Emacs'ı severken vim'i iş istasyonumda kullanıyorum.


0

Ben bir Emacs hayranıyım ama diğer geliştiricileri VI öğrenmeye teşvik ediyorum çünkü:

  1. emacs makefiles düzenlemek için VI kullanabilirsiniz.
  2. VI, ed komutlarını içerir ve her UNIX kullanıcısı ed ve sed'i bilmelidir.

VIM hakkında emac'lardan daha hızlı başlayan birkaç yorum fark ettim. Bunu gerçekten önemsiyorsanız, emacs'i sunucu modunda çalıştırın ve 'emacs' adını 'emacsclient' olarak çalıştırın. İstemci süper hızlıdır çünkü yaptığı tek şey omuzdaki sunucuya dokunun ve düzenlemek istediğiniz dosyayı söyleyin. MacOSX'ta emacsclient sadece 33K, emacs 287M'dir.

Modern donanımda bunların herhangi birinin gerekli olduğundan emin değilim. MacBook Pro'mda (2013 Retina), emacs kabuktan çalıştırdığımda neredeyse anında yükleniyor. Hiç duraklama tespit etmedim. Emacs.app (GUI sürümü) çalıştırdığımda 3 saniyenin tamamı sürebilir.

Emacs hakkında duyduğum çoğu şikayet, emacs hakkında yanlış bilgi sahibi kişilerden geliyor gibi görünüyor. 1982'den beri hem vi hem de emac'ları kullandıktan sonra, emac'ların vi'dan çok daha yavaş yüklendiği ve fiziksel belleğin çoğunu erken UNIX kutularımda kullandıkları bir zamanı hatırlıyorum, ancak artık böyle değil ve en az 15- 20 yıl.

Kabul edeceğim bir şikayet "emacs pinkie" dir. Bu gençken beni hiç rahatsız etmedi. Şimdi 58 yaşındayım, pinkie'm emacs akorları için Control tuşuna tekrar tekrar erişmekten biraz ağrıyor. Bu, özellikle "fn" tuşuna yer açmak için Control'ün bir konum sağa kaydırıldığı MacBook Pro klavyesinde geçerlidir. Kontrol sol alt tuş olduğunda neredeyse sinir bozucu değildir.


Ayrıca, temelde istediğiniz derlenmiş elisp uzantılarının anlık görüntüsünü almak anlamına gelen emac'ları da "dökebilir". Emacs bu şekilde çok daha hızlı başlar, ancak hangi uzantıları dahil etmek istediğinizi belirlemek biraz zaman alır.
Phil Harbison

Ayrıca emacs "Towers Of Hanoi" oynayabilirsiniz. Ne kadar serin? :)
Phil Harbison

Re: "emacs serçe". HHKB Professional'ın dayandığı bazı eski klavyelerde, örneğin Sun Type 3/4, Kontrol, Caps Lock'un normalde olduğu yere yerleştirilir. Sahip olduğunuz emacs deneyimim yok, ancak ev satırında Kontrol'e çok çabuk alıştım. Öyle ki, tüm klavyelerimde bu değişikliği yaptım (MacBook Pro da). HHKB'nin bazı iyileştirmeleri var, örneğin Enter'ın hemen üzerinde Backspace ve 1'in yanında Esc.
martinweiss

@PhilHarbison "dökümü" hakkında ayrıntı verebilir?
A_P

0

Önce vim kullanıyordum, sonra emacs'a geçtim, sonra vim'e geçtim, şimdi tekrar emacs ile deney yapıyorum.

  • Her ikisi de harika editörler.
  • Her ikisi de bugün çok genişletilebilir
  • Her ikisinin de harika eklentileri ve topluluğu var

Geliştiriciler olarak çok şey yazıyoruz ve sonunda benim için tamponlarda ve dosyalarda dolaşmak en büyük tekrarlayan görevler, bu yüzden HIZLI HAREKET EDEBİLECEĞİM bir editör istiyorum!

Emacs'ı tekrar denemenin motivasyonu, onu Ctrl'nin vimden daha hızlı ve mantık yürütmek için daha kolay yönlendirdiğini düşündüm.

Vim'de modlarınız var, ekleme modu, görsel mod, normal mod var, bir şeye bastığınızda ne olur, bulunduğunuz moda bağlıdır, düzenleme için durumsal bir yaklaşımdır. Ekleme moduna geçersiniz, düzenler, ekler modundan çıkar ve tekrar hareket edersiniz. ESC basınını veya benzeri bir şeyi özlediğimde sık sık kendimi kaybediyorum.

Emacs'da mod yoktur, temel olarak pembe ile Ctrl tuşuna basar ve Cx Cf, Cx Cs, Cx Cc gibi tuş vuruşlarını yazarsınız. Ctrl tuşunu serbest bırakmanız gereken tuş bağları var, bunlardan nefret ediyorum ve her zaman onları kontrollü basılı olanlarla değiştiriyorum.

Bence emacs yaklaşımının düşünülmesi ve yazılması daha hızlıdır, ama vimin başka bir gücü daha vardır. Komutları oluşturulabilir, genellikle bir biçimi vardır. Örneğin, bir satırı silmek için dd, bir sözcüğü silmek için kullanabilirsiniz dw. Eklentiler bu kesimi kullanır, vim-surround eklentisi ile ds "(surround silme) ile tırnak silebilir, bir sonraki / silebilirsiniz dt/. Önceki /: öğesine kadar siler dT/. Böylece, öğrendiğiniz sürece, hareket eden şeyler çok ilginç olmaya başlar.

Özetle, bugün emacs tuş bağlantılarının makro düzenleme için daha hızlı ve vim komutlarının mikro düzenleme için daha güçlü olduğunu gördüm

Ben son beş yıldır vim kullanıyorum, bu yüzden çoğunlukla kelimeler, çizgiler, çevreleyen, bloklar, vb. Hakkında düşünmeyi düzenlerim. bunun için hareket eder

Son bir alıntı olarak, fzf'i emacs veya vim'den daha fazla önemsiyorum , tamamen fzf tabanlı bir editöre sahip olmak isterim


-9

Öncelikle Vi (orijinal gerçekleşme) bugün kullanılmıyor. Söylediğin şey bir Vim türevi.

Vim işlevini genişletmek için Vim'i yeniden derlemelisiniz, Emacs değil.

Emacs'da Vim vardır (engerek modu).

Emacs genellikle el ile kuruluma ihtiyaç duyar, Vim genellikle OS gibi tüm Unix'lere önceden yüklenir (ancak ana bilgisayar tramp-mode win Vim'e ssh erişiminiz varsa :).

Vim'i denerseniz Emacs'tan nefret edersiniz, bu yüzden önce Emacs'tan başlayın.

Ayrıca okumak http://www.dina.dk/~abraham/religion/vi-tutorial.html (link yüzden kullanmak inmek bu )

Hxxp'de anwer araması: //tr.wikipedia.org/wiki/Editor_war


8
Uzatmak için vim'i yeniden derlemenize gerek yoktur. Vim'den vazgeçmene bile gerek yok.
Çok fazla php

1
Vimscript / Python / Ruby / etc'nin tüm Vim iç yapılarına erişimi var mı? Editör kod tabanı, EDITOR'un bir karmaşıklık düzeyinde genişletme veya genişletme karmaşıklığına yardımcı oluyorsa?
gavenkoa

1
Entelektüel MACROS gibi Vim senaryolarının çoğu.
Vim'i

1
Vi kullanılmıyor mu?!?! Ne? Nvi orijinal kabul edilir mi? Yoksa 'geleneksel vi' mi? FreeBSD, ArchLinix gibi birçok sistem geleneksel vi veya nvi'yi bir araya getirir ve bunun için minnettarım. Debian gibi bazı sistemler varsayılan olarak uyumlu modda olan vim ile gider (neredeyse geleneksel vi gibi hissedilir)
Alex

1
@gavenkoa, Alex ile kesinlikle katılıyorum, Gentoo, bazı BSD'ler veya Arch Linux gibi manuel kurulum gerektiren bir sistemi hiç denemediniz. Ayrıca, «Vim'i denerseniz Emacs'tan nefret edersiniz, bu yüzden önce Emacs'tan başlayın.» ilk önce VIM'i denememi sağlar, ve sen de biraz düşünürsen. Bu bana önce işlevsel programlamayı denememeyi söyleyen insanları hatırlatıyor. Üzgünüm daha önce
denemedim
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.