Vim / Emacs, GUI metin editörlerine göre hangi spesifik üretkenlik kazançları sağlar?


100

Bu bir trol veya flamebait veya benzeri bir şey anlamına gelmez. Vim'i birkaç aydır tercih ettiğim konsol editörü olarak kullanıyorum (terminalimdeyken yapılandırma dosyalarını düzenlemek için), ancak web uygulamaları yazmanın normal, günlük işime katlanabileceğimi sanmıyorum , ki bunu bir GUI metin düzenleyicisiyle yapıyorum (hangisi önemli değil).

GUI metin düzenleyicimin işim için ihtiyacım olan her şeyi yapabileceğini hissediyorum. Her ikisi için de otomatik tamamlama geçmişleri ile iyi bir arama / değiştirme özelliğine sahiptir. Sözdizimi vurgulama, satır numaralandırma, sekmeli bir arayüz, kolay kopyalama ve yapıştırma, vb. Vardır. Mevcut düzenleyicimin eksik olduğu tek şey, düzenli ifade eşleştirmesidir, ancak normal ifade arama / değiştirme yapacak birçok GUI metin düzenleyicisi vardır.

Az önce söylediğim gibi, Vim'in (hatta Emacs'ın) her bilgisayarda kurulu olması gerçeği dışında bir GUI metin düzenleyicisine göre ne gibi verimlilik avantajları var? Vim / Emacs'ta daha iyi / daha hızlı olan veya mevcut GUI metin düzenleyicileriyle mümkün olmayan belirli görevler istiyorum.


1
Windows makinelerimden herhangi birine vim'in yüklendiğini hatırlamıyorum ...
Greg

9
@Greg: Pasif olarak yüklenmez. Dışarı çık ve kendin yap. Ya gerçek bir yazılım geliştiricisi değilsiniz ya da bunu o kadar çok yaptınız ki, şimdi uykunuza vim kuruyorsunuz. :-)
TED

6
Bu öznel olduğu için Topluluk Wiki sorusu olarak işaretlenmelidir.
STW

7
@Yoooder: İnsanlar neden topluluk wiki soruları hakkında sızlanıp duruyor? Topluluk vikilerini yöneten herhangi bir kural bulamadım.
John Smith

Yanıtlar:


111

Vim için:

  • Vim, diğer araçlarla (kabuk komutları, komut dosyaları, derleyiciler, sürüm kontrol sistemleri, ctag'ler vb.) Çoğu düzenleyiciden daha iyi entegrasyona sahiptir. :.!Bir komutun çıktısını bir tampona aktarmak gibi basit bir şey bile çoğu GUI düzenleyicide bulamayacağınız bir şeydir.

  • Sekmeli bir arayüz, Vim / Emacs'in size verdiği "pencereli" arayüz kadar güzel değildir. İki veya daha fazla dosyayı aynı anda yan yana görebilirsiniz. Ekranda ne kadar çok görebilirseniz, değişken adların ve işlev imzalarının zihinsel defterlerini tutmak yerine, zihninizi probleminiz hakkında düşünmek için o kadar özgür olursunuz.

  • Vim normal ifadelerinin gücünü küçümsemeyin. Belirli bir sütun, bir işaret, imleç konumu, belirli karakter sınıfları (anahtar kelimeler, tanımlayıcılar) vb. İle eşleşecek çok sayıda Vim'e özgü uzantı vardır.

  • Entegre diffve grep(platformdan bağımsız, böylece bilgisayarları her değiştirdiğinizde yeni bir araç indirmenize ve öğrenmenize gerek kalmaz).

  • Görsel blok modu (sütunları düzenlemek için) birçok editörde eksik olan bir şeydir, ancak onsuz yaşayamam. Sadece bunu kullanarak iş yerindeki insanları şok ettim ve şaşırttım, birkaç tuşa basışta birisinin el ile yaparak on dakika harcayacağı bazı düzenlemeler yaptım.

  • Çoklu kopyala / yapıştır kayıtları. Yalnızca bir tanesine sahip olduğunuzda, panoya zarar vermekten kaçınmak için garip bükülmelerden geçersiniz. Mecbur kalmamalısın.

  • Vim'in geri alma / yineleme sistemi rakipsizdir. Bir şey yazın, geri alın, başka bir şey yazın ve yazdığınız ilk şeyi yine de geri alabilirsiniz çünkü Vim yığın yerine bir geri alma ağacı kullanır. Hemen hemen her diğer programda, yazdığınız ilk şeyin geçmişi bu durumda kaybolur.

  • Metni dolaşmak, kopyalamak, yapıştırmak ve silmek Vim'de delicesine hızlı. Komutlar basittir, tek tuşa basılabilir ve birleştirilebilir. Dikkatli, zahmetli bir fare vurgulamasını ve Ctrl-X'i yaptığınız her zaman toplayın, ardından hepsini bir ile değiştirin da((eşleşen bir parantez ve içlerindeki her şeyi silin). Düşündüğünden daha fazla zaman kazandırır

  • Küçük şeyler, *imlecin altındaki kelimeyi aramak veya .bir komutu tekrarlamak veya %bir açılış ve kapanış parantezi arasında gidip gelmek gibi. Listelenemeyecek kadar çok şey var.

  • Yerleşik komut dosyası dili ve güçlü anahtar eşleme ve makro yeteneği, böylece düzenleyici ihtiyacınız olan her şekilde genişletilebilir. Zaten yazılmış ve indirilebilir tonlarca komut dosyası.

Yeterince yakından bakarsanız, diğer editörlerin de sahip olduğu özellikleri bile Vim'in genellikle daha iyi yaptığını göreceksiniz. Tüm editörler sözdizimi vurgulamasına sahiptir, ancak Vim'in güneşin altındaki neredeyse her dosya formatı için bir sözdizimi dosyası vardır, genellikle birçok yapılandırma seçeneği vardır ve kendi yazınızı yazmak çok kolaydır. Pek çok editör farklı dosya kodlamalarını yönetir, ancak Vim size dosya kodlamalarını ayarlamak ve aralarında dönüştürme yapmak için çok özel ve kusursuz yollar sunar. Vim hakkında beni etkileyen ilk şey, o sırada sorun yaşadığım diğer editörlere kıyasla sekme / boşluk girinti seçeneklerini ve Unix / DOS satır kesmelerini ne kadar mükemmel bir şekilde işlediğiydi.

Bu noktaların çoğu Emacs için eşit derecede geçerlidir (farklı ancak genellikle eşit derecede güçlü yollarla).


2
Bu, vim'de üretkenliği artıran bazı somut şeyler için iyi bir örnektir.
Adam Plumb

14
Muhteşem çapraz platform desteğinden bahsetmeyi unuttunuz. Pencereli bir ortamda kullandığınız komut satırında aynı düzenleyiciyi kullanmanız durumunda bile.
tonlu

3
Sekmeli ve pencereli görünümle ilgili nokta biraz modası geçmiş. Kullandığım çoğu gui editörü pencereli düzene izin veriyor.
Shawn O'Hare

1
Emacs'deki Org Modu, büyük bir verimlilik kazancıdır.
bayt

37

(vim benim zehirim; eminim emacs benzer kazançlar sunar)

En büyük kazanç: fareye dokunmaya gerek olmaması.

Benim için en pratik şey, belirli bir harfe veya harf kombinasyonuna (veya hemen öncesine) atlamak veya birkaç tuşa basarak geri atlamaktır. Aynı koşulla iki kez veya on kez ileri atlamak, basitçe ona bir sayı koymaktan ibarettir.

Bir düzenlemeyi tekrarlamanız gerekiyorsa, o yere atlayın (2-3 tuş vuruşu) ve ardından "" tuşuna basın. Son düzenlemeyi tekrarlamak için. Aynı arama koşuluysa ileri (veya geri) atlamak daha kolaydır - bir tuşa basma -.

Temel olarak, küçük bir teslim süresiyle, on veya yirmi klavye kısayolu öğrenebilirsiniz, bu da fareyi tutmak için elinizi kaydırmaya devam etmek zorunda kalmayacağınız anlamına gelir. Bu size, fareyi tutmaya devam etmeniz gerektiğinde yapacağınızdan üç veya dört kat daha fazla düzenleme hareketi / komutu verir.

Birkaç gün sonra <Down>, bir GUI düzenleyicisindeyken , fareye her uzanmanız gerektiğinde (veya 15 kez vurmanız gerektiğinde) kendinizi huysuz hissedeceksiniz .


2
Eğer gVim kullanıyorsanız (veya kurulu gpm varsa ve terminalde sadece düz vim kullanıyorsanız), isterseniz fareyi gerçekten kullanabileceğiniz unutulmamalıdır. Fareyi kullanmanın kullanışlı olduğu birkaç durum vardır.
thebrokencube

1
.Vimrc dosyamda "set mouse = a" var, her ihtimale karşı bir grup görseli kaydırmam gerekmesi ihtimaline karşı;)
Jeremy Smyth

Evet, fare, metin alanlarını seçmek veya imleci büyük miktarda metinde belirli bir noktaya taşımak için zaman kazandırıcı olabilir. Aksi takdirde, bu bir israftır.
TED

1
Sesinden, diğer editörlerde Ctrl + Sol veya Ctrl + Sağ kullanarak tarif ettiğiniz şeyi yapabilirim. Ayrıca 5 kelimeyi silmek için "d5w" gibi bir şey yapabileceğinizi duyuyorum ... ama Ctrl + Delete bunu daha hızlı yapıyor.
DisgruntledGoat

4
Ctrl-Sağ sadece bir kelimeyi ileri götürür. Beş kelime ileri gitmek için bunu 5 kez yapmanız gerekir. Vim'de 5 kelime ileri gitmek için 5w :) veya 9 kelime ileri gitmek için 9w yazarsınız. veya) sonraki cümlenin başına gitmek için veya sonraki paragrafa geçmek için}. Her türden akıllı yönlerde hareket etmek için çok sayıda küçük bir veya iki tuşlu kısayol var. Ve az önce gittiğiniz noktaya kadar her şeyi silmek isterseniz, hareket komutunun önüne d koymanız yeterlidir. Yani üç cümleyi silmek için, tek ihtiyacınız olan d3) :)
Jeremy Smyth

33

Neden birkaç insanın Vim'e bayıldığını hep merak etmişimdir. Vim power kullanıcısının iş başında videosunu izleyin:

https://www.youtube.com/watch?v=FcpQ7koECgk

Mevcut düzenleyiciniz yaptığı şeyi yapabiliyorsa, geçiş yapmanıza gerek yoktur! :)

Ayrıca, bu http://www.viemu.com/a-why-vi-vim.html'yi okuyun

Videoyu izledikten ve o makaleyi okuduktan sonra, VIM öğrenmeye başlamaktan başka seçeneğim yoktu. VIM'e geçeli neredeyse bir yıl oldu ve başka bir şey kullanmayı hayal edemiyorum.


4
Vay canına, bu videolar gerçekten harika! Onları gönderdiğiniz için teşekkürler!
thebrokencube

Oldukça ilginç videolar, hepsini pratikte hatırlamamın bu kadar uzun sürmesi utanç verici. :)
Frerich Raabe

8
İlk videonun yazarının görsel blok modunu öğrenmesi gerekir - alttaki metin bloklarını değiştirmek için makrolardan daha hızlıdır.
Peter

23

Bence özel bir metin düzenleyicinin gerçek güçlerinden biri makro düzenlemedir. Tekrarlama, birçok programcı için acı vericidir ve uygun makrolar yazmak sınırda eğlenceli olabilir. Her şeyi klavye aracılığıyla yapmıyorsanız, makro oluşturmak, zaten kullanmakta olduklarınızı kullanmak yerine fazladan bir komut seti gerektirecektir.


5
Özelleştirilebilirlik, hemen hemen tüm GUI düzenleyicilerinde eksik olan bir özelliktir. Bazılarında yardımcı olması için 3. taraf bir makro genişletme yardımcı programı (AutoKey, her neyse) kullanabilirsiniz, ancak düzenleyicide yerleşik olması kullanışlıdır.
Alex Feinman

Oh, kayıt için. Microsoft ürünleriyle çalışıyorum ve Visual Studio için VimEmu kullanmak bir nimettir. Yine de terminalime ve Vim'e gitmek gibi :)
Stefan Mai

1
ViEmu kesinlikle bir nimettir. Visual Studio'nun o olmadan kesinlikle kullanılamaz olduğunu söyleyecek kadar ileri gideceğim. :)
thebrokencube

1
Windows'ta Textpad'de bu var ve inanılmaz derecede basit: Kaydet'e basın, makroyu yapın ve ardından kaydedin. Ayrıca kısayollar da atayabilirsiniz. Ne yazık ki Linux'ta bir eşdeğer bulamadım (TP Wine üzerinde çalışıyor ancak çirkin görünüyor ve bazı Linux işlevlerini kaçırıyor).
DisgruntledGoat

1
@DisgruntledGoat - ctrl-X'i ("rekora basmak" ve ctrl-X'i) "kaydetmek" olarak kabul ediyorsanız, artık Linux, Windows, Unix ve diğer tüm platformlarda Emacs'ın taşınmış olduğu bir eşdeğer buldunuz için.
TED

15

Vi keybindings konusunda yarı yetkinim, ancak genel olarak Emacs'ı tercih ederim. Bu editörlerin bu kadar ateşli taraftarlarının olmasının nedeni, sağladıkları düzenleme modelinin daha yeni sistemlerden daha güçlü olmasıdır; bu nedenle, herhangi bir uzantı özelliği kullanmasanız bile "vi tuş atamaları" veya "emacs tuş atamaları" sağlamak yeterli değildir. veya emacs veya vi için özelleştirmeler.

Ben sadece Emacs'ın modeli hakkında konuşacağım çünkü onu en iyi anlıyorum. Günümüzde genel metin düzenleme modeli, metnin eklenebildiği, silinebildiği, seçilebildiği ve kesilebildiği / kopyalanabildiği / sistem panosuna yapıştırılabildiği bir metin arabelleğini içermektedir.

Elbette Emacs tamponları bu işlemleri destekleyebilir. Göründükleri her pencere için imleç konumunu izlemenin yanı sıra, içlerinde yapılan "işaretleri" de izlerler. "Nokta" (imleç konumu) ile "işaret" arasındaki metin "bölge" olarak adlandırılır ve kabaca ana akım editörlerdeki seçime karşılık gelir.

Aradaki fark, Emacs'in işaret halkasında işaretin yerleştirildiği son birkaç konumu takip etmesi ve bunlara bir tuşa basarak (veya yapılandırmanıza bağlı olarak iki) geri dönebilmenizdir. Bunu son derece yararlı buluyorum, özellikle de arabellekte konumunuzu değiştiren birçok Emacs komutu eski konumunuza işaret koyduğu için. Bir örnek, bir Python modülünü düzenlediğimde ve dosyanın üstüne bir import ifadesi eklemem gerektiğidir. Arabelleğin üstüne gitmek için tuş vuruşu (Alt- <) işareti belirler. Import ifadesini ekliyorum. Ctrl-u Ctrl-Space tuşlarına basıyorum ve başladığım yere döndüm. Önceki pozisyonlara geri dönmek için de bunu yapmaya devam edebilirim. (Belki de bu import ifadesini eklerken bir metin seçmem gerekiyordu.)

Diğer (ve daha iyi bilinen) Emacs farkı öldürme halkasıdır. Tampon kayıt metninden öldürme halkasına giden metni kaldırmak için kullanılan tuş vuruşlarının çoğu, daha sonra "yank" komutuyla (Ctrl-y) geri çağrılabilir. Temel özellik, sonraki yank komutlarının eski öldürülmüş metni almasıdır. Böylece, arka arkaya birkaç metin bölümünü öldürebilir ve ardından sırayla geri alabilirsiniz. Ayrıca, bir yanktan sonra Alt-y ile öldürme halkasında gezinebilir, alınan metni kaldırabilir ve halkaya bir sonraki girişi ekleyebilirsiniz.

Emacs bu özelliklere 1978'de sahipti. Bunları herhangi bir ölçüde benimseyen diğer tek büyük sistem NeXTStep'tir (ve şimdi Cocoa tarafından miras alınmıştır). Diğer araçlar, belirli görevler için daha fazla özellik sağlar, kullanımı Emacs Lisp'e göre daha kolay bir dilde genişletilebilir ve daha güzel görsel arayüzlere sahiptir ... ancak Emacs, metin düzenlemede daha iyidir. Bu yüzden, nasıl kullanılacağını öğrendikten sonra bırakmak çok zor.


Şüphesiz emacs, pek çok kullanıcı için geçerli bir seçenek olabilir, çünkü çok fazla kullanıcı var. Ama ne kadar süreyle rahat etmem gerekiyor? Deneyimlerime göre çok hızlı bir yazı yazıcısıyım ve macbook pro touchpad'i textmate gibi bir gui metin editörü kullanarak çok iyi kullanabilirim. Tüm bağlamalarla emacs yapmaya asla alışamadım. Yaklaşık bir ay kullandıktan sonra ellerimi incitti; Genel olarak emacs'ın beni daha hızlı hale getirdiğinden emin değilim. Mac işaretleme sistemi çok hassas ve hızlıdır ve bu yerleşik gui metin düzenleyicilerinde çok şey yapabilen tonlarca kısayol tuşu bulunur. Çok zaman harcadım ve henüz hiçbir kazanç görülmedi.
user798719

13

Bu tam olarak belirli bir görev değildir, ancak insanlar için bile kim olabilir RSI muzdarip, ellerin vim klavyeyi asla terk gerçeği neredeyse paha biçilmez. Aslında işyerinde faremde solak kalmaya başladım çünkü elimi fareye ulaşmak için daha az hareket ettirmeme izin verdi (evdeki klavyemde sayısal tuş takımı yok, bu yüzden sağda tutabilirim).

Bir diğer küçük fayda, IIRC'nin orijinal vi'nin korkunç derecede yavaş bir uzak bağlantı üzerinden dosyaları düzenlemeyi hızlandırmak için tasarlanmış olmasıdır. Bunun bugün neredeyse hiç olmadığı kabul edildi, ancak yavaş bir bağlantınız varsa, bir gui metin düzenleyicisi çalıştırmanız ve yanıt vermesi için iyi şanslar.


2
Yavaş bir bağlantınız varsa, Emacs ve Tramp'ı kullanmanızı öneririm.
John Smith

1
Değişiklikleri sftp üzerinden düzenleyin, kaydettiğinizde eşitleyin.
Roman A. Taycher

@Roman: Emacs ve Tramp kullanma temelde ki (az ya da çok) herhangi bir ek çaba olmadan yapar hiç bir kez veya iki kez şifrenizi girmeniz gereken en da etkiliyor. Bundan sonra, uzak dosyanın düzenlenmesi, yerel bir dosyayı düzenlemek gibi çalışır ve kaydetme, değişiklikleri otomatik olarak uzak bilgisayara gönderir.
Tikhon Jelvis

13

Benim için büyük üretkenlik şeyler

  • Klavyeden hemen hemen her şeyi yapabilirim.
  • Güçlü makrolar.
  • 9 işletim sistemi kullanan 20 yıllık kariyerimde temel klavye bağlantıları değişmedi. Hemen hemen her sisteme atlayabilirim ve düzenleyicide kendi yolumu zaten biliyorum.
  • Bir metin düzenleyicide isteyebileceğiniz hemen hemen her özellik zaten eklenmiştir.

11

Vim hakkında gerçekten sevdiğim bir şey de "tekrarlayıcı" komutu. Temel olarak, .komut modunda düğmesine basarak son eyleminizi tekrarlar. Bu, "programcı metin editörlerinde" çoğu zaman GUI'lerde bulunmayan gerçekten harika özelliklere sadece bir örnektir.


Ah evet! bu en tatlı komutlardan biri! :-) olmadan kod yazamam
Jay Atkinson

8

Deneyimlerime göre, vim ve emacs (ben kendim bir vim kişiyim, ancak emacs kesinlikle benzerdir) sağlayan ana üretkenlik kazanımları şunlardır:

  • Sen edebilirsiniz Modern IDE (tek tuşa basma edit-build işletilen döngüleri ve satır içi dokümantasyon ve sekme tamamlama ve etajer gibi) sağlamak bu özellikleri var ama yok zorunda . Verimlilik kazancı? Sadece görmek istediğiniz kadar görürsünüz. Tecrübelerime göre, IDE'ler insanları daha üretken kılmadı, ayrıca çok fazla bilgi gösterdikleri için (her tür tarayıcı). Bu "ekstra güç, ihtiyacınız olduğunda - ama daha erken değil", oldukça üretkenlik kazancı IMHO'dur.

  • Editörler programcılar arasında çok popülerdir, bu da büyük komut dosyası depoları, kitaplar ve kullanıcı grupları olduğu anlamına gelir.

  • Tecrübelerime göre (burada sadece vim adına konuşabilirim) ortalama bir vim kullanıcısı oldukça iyi bir yazılım mühendisi. Bunun neden olduğunu bilmiyorum (veya belki sadece şanslıyım), ama belki emacs veya vim gibi 'eski' bir araca alışma engelini aşan insanlar doğru adanmışlığa sahipler (ve bunun gibi diğer insanlarla iletişim ). Belki bu editörlerin dolaylı bir etkisi olabilir, ancak IRC'de diğer vim (veya emacs) insanlarıyla takılmak oldukça ilginçti, çünkü aynı kişiler her türlü yazılım mühendisliği (veya bilgisayar bilimi) konularıyla da oldukça ilgiliydi. . Bu editörler belli bir kişiliği kendine çekiyor gibi görünüyor. :-)


7

Küçük programlar için hafif bir emacs klonu kullandığım için elde ettiğim "verimlilik kazancı", yağlanmış şimşek gibi başlamasıdır. Visual Studio bir "korumalı alan" çözümünü yüklemeyi bitirmeden önce genellikle C # 'da hızlı bir test programı oluşturabilirim.

Elbette, Visual Studio'yu açık bırakabilirim (veya o sırada üzerinde çalışıyorsam başka bir VS'yi açık bırakabilirim ), ancak bir süre boşta bırakırsam, vb.

Herhangi bir önemli boyuttaki herhangi bir şey için - ya da API'yi çok iyi bilmiyorsam - bir IDE ileriye giden yoldur, IMO.


6
Emacs'i daemon modunda çalıştırın ve "başlangıç ​​zamanı" önemsizdir.
aehlke

6

Windows için gvim kullanıyorum, bu yüzden teknik olarak bir GUI metin editörü, ama vim ..

Üretkenlik geliştirmeleri için şunları buluyorum:

  1. Asla fareyi kullanmak zorunda değilim, bu yüzden daha hızlıyım.
  2. Ara, değiştir, kopyala / yapıştır vb. hepsi vim tuş atamalarına karşı fare hareketleriyle daha hızlıdır (öğrenme eğrisi aşıldığında)
  3. Önceki yorumlarda belirtildiği gibi, RSI'lar önemli ölçüde azaldı. Vim'e taşındığımdan beri bileklerim bana teşekkür etti.
  4. hafif ve hızlı

4

Biliyorsunuz, vi için, bir ekleme ve komut moduna sahip olmanın önemli olduğunu düşünüyorum. İmlece veya özel tuşlara güvenemeyeceğiniz bir zamana geri dönüş gibi görünse de, gerçekte ne anlama geldiği, birçok güçlü hareket ve metin yönlendirme komutunun minimum sayıda tuş vuruşu olmasıdır. Üretken kodlama, toplu metin girişi ("modern" editörlerde varsayılan) ile ilgili değildir, ancak bir yığın metin patlaması ve ardından önemli küçük ayarlamalar ve hatta daha uzun tarama süreleri ile ilgilidir.

Bu, kişisel olarak vi'yi yüksek gecikmeli bir kampüs ağı üzerinden kullanmak benim için ön plana çıktı. Yanıtın önüne kolayca 10 veya 15 karakter alabilirsiniz. Vi ile, bu komutların beni nerede bırakacağını rahatça tahmin edebilir ve normal hızlara yakın çalışabilirdim. Bu çarpık uzmanlık, normal koşullar altında devam eden bir avantajdır - sürekli grafik geri beslemeye adanmış daha az görsel beyin gücü.

Sıradan * ve # kelime arama hızlandırıcıları, kodlar arasında gezinmek için harikadır. Ve parantez eşleştirme için% son derece kullanışlıdır. Elbette, ctl-] ile karşılaştırıldığında pek bir şeye benzemiyor ama tuş vuruşlarının yarısı artıyor.

Şahsen, vim'in de sahip olduğundan emin olduğum birkaç büyük şeyi ekleyen winvi kullanıyorum. Onaltılık moda hızlı bir atlama, birçok "ne oluyor" metin sorununu çözer. Ve satır sonlarının tamamen esnek kullanımı, bir metin editörü için beklenen bir özellik haline gelen bir nimettir. Son olarak, içeriği ne olursa olsun herhangi bir dosyayı açabilir. Bu, birinci dereceden elit bir bilgisayar korsanlığı becerisi anlamına gelir.

Unix altında, program çıktısını hızlı bir şekilde yakalayabilir ve hatta harici komutlar aracılığıyla dosyanızın bölümlerini filtreleyebilirsiniz. Son derece güçlü ama yeterince kullanılmamış bir işlev olduğunu düşünüyorum.


3

Vim'i oldukça sık kullanıyorum. Yine de benim için UltraEdit'in yerini almıyor . Pek çok olumlu şey listelendiğinden, sanırım tahıllara karşı çıkacağım ve Vim ile ilgili bazı sıkıntıları listeleyeceğim.

  • Zayıf FTP kullanımı. Birçok siteyi "sıralıyorum" ve uzak bir FTP sunucusundaki dosyalara kolayca göz atamamak ve bunları düzenleyememek benim için büyük bir eksikliktir. NWRead olduğu değil yeterince iyi.
  • Linux'u rahatsız eden genel terminal sorunlarından miras alınan konsol tuhaflığı. PuTTY'yi genellikle Linux kutuma (Ubuntu çalıştıran) bağlanmak için kullanıyorum ve bazı nedenlerden dolayı ok tuşları, ekleme modunda A / B / C / D ile eşleşiyor (ve tüm renk desteği sorunları). GVim'de, ctrl-tab kolay "bn" olarak eşlenebilir, ancak konsol modunda değil, bu tür sorunlar çoktur.
  • Ara / değiştir seçenekleri arayüz açısından çok zayıftır. Her şeyi tek bir satıra yazmak zorunda kalmak yeterince iyi değil. Gerçek düzenli ifade desteği çok daha zayıf olsa bile, UltraEdit'teki çok daha ayrıntılı diyaloğun sonunda bana çok daha fazla güç verdiğini hissediyorum.
  • ABD klavye düzenlerine çok fazla güvenmek. `Gibi birincil işlevler için kullanılan pek çok tuş, Danimarka klavye düzenimde basılmıyor (ve arkwardly, $ ile aynı ve diğerleri). Bazı işlevleri kullanmayı oldukça garip hale getirir.

2. sayı için, bundan kurtulmak için "vim" veya "vim-full" yükleyin.
Adam Plumb

Sorun korktuğum başka yerde yatıyor. Önerilen bazı düzeltmelere buradan bakabilirsiniz vim.wikia.com/wiki/… Ama ne yazık ki, bunların hiçbiri benim için işe yaramadı.
Svend

Tekrar 3 numara ctrl-f kullanın: s komutlarınız vb. İçin tamamen işlevsel bir düzenleme
penceresi elde etmek için

greplace # 3'e bir çözüm. Başka grep eklentileri de var ama tek ihtiyacım olan bu. Bulmayı / değiştirmeyi, kullandığım diğer IDE veya metin düzenleyicilerden daha kolay hale getirir.
domi91c

2

Uzak Masaüstü, yalnızca yerel Windows uygulamasını hızlı bir şekilde gösterir. Eclipse'i unix altında geliştirmek için kullanmayı denedik. Ve ne var biliyor musun? Mümkün bile değildi.

İkinci neden, Vims ve Emac'larımızı, kendi meta dilimizi vurgulamak ve otomatik olarak tamamlamak için özel bir şekilde DB taramasından tüm projeye özgü görevleri yapacak şekilde genişletebilmemizdir.


2

Büyük avantajlardan birinin vim editörünün genişletilebilirliği olduğunu söyleyebilirim. CVS ile çalışacak bir şey istersem, CVSMenu eklentisini alıp bu işlevselliği elde etmek için editörüme ekleyebilirim.

Sözdizimi vurgulama, belirli dosyalar ile davranış vb. İle aynı. Her tür şey vim'de uyarlanabilir.

Bunu GUI tipi düzenleyicilerde bu kadar kolay yapıp yapamayacağınızdan pek emin değilsiniz.


1

VIM'de Kaydet ve Tekrar Oynat, GUI tabanlı araçlarda bulmanız pek olası olmayan rakipsiz bir şekilde harika.

Ayrıca otomatik artırma / azaltma , program yazmadan ona veri oluşturma yetenekleri sağlar.


1

Yıllardır talihsiz bir Emacs kullanıcısı oldum. Ama asla içine girmedim. Sonra Clojure'u (ilk Lisp'im) öğrenmeye başladım ve ParEdit'i keşfettim.

Ve bu aklımı başımdan aldı.

(Bazı örnekler için buraya bakın: https://www.youtube.com/watch?v=D6h5dFyyUX0 )

Lisp + ParEdit, şimdiye kadar yaşadığım en harika düzenleme deneyimidir. Başka hiçbir şey yaklaşmaz. Lisp artık yazmak için garip bir dil değil, beni pek çok rahatsız edici aptal parantezi dengelemek konusunda endişelenmeye zorluyor. ParEdit ile, tutarlı Lisp yapısı, her yerde, kontrol yapılarında ve benzer veri yapılarında aynı ağaç dönüşümleri - höpürdetme, kusma, bölme ve birleştirme - çalıştığı için çalışmak için büyük bir bonus haline gelir. Ve ParEdit aptalca hatalar yapmamı engelliyor. Sözdizimi hataları yapmak neredeyse imkansız hale geliyor.

Ve Eclipse'den farklı olarak, bu her zaman arka planda çalışan ve işlemcimi yakan zahmetli gerçek zamanlı bir kontrol değil. Hiçbir maliyeti yok ... ParEdit, istediğimde sadece doğru yapısal değişikliği yapıyor.

(Genelde Emacs olması gerektiği kadar hızlıdır. Tutkal içinde yazmak gibi olan Eclipse'in aksine.)

Bir sonraki keşfettiğim şey Yasnippet'ti ( http://emacswiki.org/emacs/Yasnippet ). Bir kez daha, daha önce böyle bir şey kullanmamıştım. Standart eklenecek bir makro değil, dinamik, gezinebilir bir form.

Son zevk, eğer bu şeyi kendim genişletmek istiyorsam, bu üst düzey verimlilik araçlarından daha fazlasına sahip olmak istiyorsam, Lisp'in kendisinin üzerinde çalışma gücüne sahip olduğumun farkına varmak.


1

(Geçmişim, Visual Studio ve diğer IDE'lerle birkaç yıl, ardından 15 yıl Vim ve Emacs ile son 6 aydır.)

Uzun Ömür - Vim / Emacs FOSS'tur ve onlarca yıldır . Kullanımları azalmayacak ve özellikleri çok fazla kırılmayacak / kaybolmayacak / değişmeyecek, bu nedenle tüm kariyer araç kutusu çekirdeğinizi tek bir editörün ustalığı etrafında oluşturmaya güvenebilirsiniz.

Terminallerde uzaktan / her yerde erişim - Her ikisinin de uzaktaki dosyaları düzenlemek için iyi sistemleri olmasına rağmen, bunları oturum açtığınız herhangi bir sisteme de yükleyebilirsiniz.

REPL güdümlü geliştirme - Her ikisinde de çalıştığınız REPL türü ne olursa olsun entegre eden çeşitli biçimlerde "SLIME" modları vardır. Örneğin, CIDER tarafından sağlanan kadar güçlü yinelemeli geliştirme ile hiç karşılaşmadım .

Linting - Kullandığınız dil ne olursa olsun, muhtemelen biraz tüylenme vardır , derleyicide yerleşik olarak veya harici bir araçta araçları . Bunlar, Emacs / Vim ile sorunsuz bir şekilde bütünleşerek kodlama hatalarınızı neredeyse gerçek zamanlı olarak gösterir.

Anımsatıcı komutların dilbilgisi - Her ikisinin de öğrenmesi biraz zaman alsa da, bu editörler, birkaç tuşa basma ve tuş kombinasyonuyla binlerce komuta erişmek - ve hatta hatırlamak - için ünlü akıllı sistemlere sahiptir. Eğer çok eğilimliyseniz, bunlar fare kullanma ihtiyacını tamamen ortadan kaldırabilir.

Yerleşik yardım sistemleri - Birçok dilin ve API'lerinin çevrimdışı dokümantasyonu, bu düzenleyicilerde yerleşik olarak bulunur ve içerdikleri geniş ve kapsamlı yardım sistemlerine benzer şekilde basit yollarla erişilebilir. En yaygın diller için otomatik tamamlama eklendi. Ek olarak, hemen hemen her yardım konusunda çok sayıda tartışma yardımı vardır.

Gezinme - etiketler, eşleme beğenileri, işaretler, pencereleme, sekmeler, vim-rayların atlama ve daha birçok yerleşik.

Paket yöneticileri / depoları - Emacs'ta birkaç tane vardır (elpa, melpa, marmelat) ve Vim'ler de iyidir (vundle, patojen vb. ). IDE'lerin etrafında bunlarla karşılaştırılabilecek herhangi bir şey sunan herhangi bir topluluk bilmiyorum. 5.000'den fazla paket görüyorum package-list-packages.

Düzenlemenin ötesinde - Emacs, haberleri okuma, web'de gezinme, e-postaları yönetme, elektronik tabloları düzenleme, sunum oluşturma ve her şeyi organize etme becerisiyle burada en uzağa gider.

Diğer her şeyi entegre etti - hata ayıklayıcılar, tarayıcı senkronizasyonu, derleme, kabuklar, test çalıştırma.

Son derece özelleştirilebilir - Elisp, Emacs'ı genişletmek / değiştirmek için çok güçlü bir dildir. VimL, ​​Vim'in eşdeğeridir. Her ikisinde de yazılmış kitaplar var. Renk temalarını ve davranışları zevkinize göre ayarlayın!


0

Konsol tabanlı düzenleyicilerin tümünün GUI düzenleyicilere göre bir avantajı, ekran veya tmux gibi bir terminal çoklayıcıda çalıştırılabilmeleridir . Bu neden iyidir?

  • Bir terminal çoklayıcı konsolundan diğerine geçmek, fareyi veya hatta alt-tab'ı kullanarak bir GUI konsolundan diğerine geçmekten daha hızlıdır. Bunun nedeni, konsolların isimlendirilebilmesi ve ismin birkaç karakteri yazılarak değiştirilebilmesidir.
  • Editör oturumlarınız bir terminal çoğullayıcının konsollarında ise, bunlara herhangi bir makineden erişebilirsiniz. Evden biraz iş yapmam gerekirse, kutuma ssh yapabilir, zaten çalışan terminal çoğullayıcısını ssh oturumuma ekleyebilir ve işten ayrıldığımda kaldığım yerde olabilirim.

0

Vim / emacs genellikle programcılar tarafından ve 2003'ten beri C # kullanıcısı olarak kullanıldığından, bu önyargılı bakış açısıyla, aksi takdirde haksız bir karşılaştırma yapmak doğru olur (Bir diğeri, vim / emacs'de Visual Assist X ile C ++ ile VS C ++ olabilir):

C # ve Visual Studio için:

  1. Bu satır için tuş vuruşlarının miktarını saydım:

        public List<string> Names = new List<string>();
    //  3      3    3      1111111111111            211   =3+3+3+8+5+2+1+1 = 26 keys strokes + 3 uses of Shift while typing the line above in VS C# 2013 vs 47 key strokes for non-IntelliSense IDE's
    //                              (IntelliSense offers the List<string> because that's what you're likely after here but you can type something else if you want)
    // https://channel9.msdn.com/Blogs/Seth-Juarez/Anders-Hejlsberg-on-Modern-Compiler-Construction explains on how this is impl. for C#. In C++ I've heard of 3rd party VS plugin that improves or replaces the VS C++ auto-complete
  2. Kodda atlama için emacs özelliğini okudum. Tam olarak böyle bir özelliği olduğunu düşünmüyorum. Yine de benzer bir özelliği var. İşte VS'nin dezavantajı. Çok sayıda küçük özellik var ama zamanla çalışmayı bırakıyorlar. Son kontrol ettiğimde atlama özelliği çalışmadı ama bu birkaç yıl önceydi. VS, bunun yerine kullanmakta olduğum yeni bir grafik atlama özelliğini tanıttı. Fare veya dokunma gerektirir.

  3. İşte emacs / vi'nin kazandığı yer. Kodda çok fazla atlamanız gerekiyorsa, bunun için VS özellikleri ya mevcut değildir ya da yeterince test edilmemiştir.

Fare tabanlı GUI navigasyonundaki sorun şudur:

a) tıpkı çok statik pozisyonda oturmak gibi kötü olabilir, eğer öyleyse, fareler parmaklarınızı da statik pozisyonda yapma eğilimindedir. Bilek ağrım iztopu değişikliğiyle geçti. İlk önce dikey fareyi denedim ama sorun için hiçbir şey yapmadı.

b) İdeal klavyemde 2 sıra işlev tuşu var, sayısal tuş takımı yok, bu yüzden iz topunu daha yakın yerleştirebilirim, zıplama mesafesini daha katlanılabilir hale getirir.

Nihayetinde, birkaç belirli yer arasında atlamak istiyorsanız, "işaret halkasının" daha etkili olduğu açıktır. VS'de bu çizgide bir şey var ... en son kullandım, güvenilir bir şekilde çalışmadı ...

c) ve muhtemelen her sürümde bozulan bir ton küçük özellik vardır, bu yüzden VS'nin dezavantajı budur.

Bu "kapalı kaynak" sorununun çözümü: Tüm VS'yi C # olarak yazın ve ardından kaynağı serbest bırakmadan derlenen kodu modlamaya / düzenlemeye (çalışma zamanında, değişiklikleri isteğe bağlı olarak yüklenen yama olarak kaydetme) izin verin. Bu, kod çözücünün kodu içeri girerken olduğu gibi çıktısını alarak yapılabilir. Yerel derleyicilerin çalışma şeklinden 180 derece. İkili daha sonra kaynak kodu ve çalıştırılabilir haline gelir, bunun yerine .cs dosyaları ve .exe dosyaları vb. Karışıklık. mantıksal sonuç: .exe ve .dll dosyalarına eşit yorumlar ekleyin. Dosyalar, derlenmiş C / C ++ uygulamalarına kıyasla hala küçük olacak. Optimizasyon? Önceden optimize edilmiş kodu da dahil edebilirsiniz. Uygulama çalışırken modder exe'yi değiştirdiğinde, modifiye edilmemiş "AST" ve buna eşlik eden optimize edilmiş ikili yeniden takılır. C # derleyicisindeki ile aynı fikir ancak daha da ileri götürülür. Sonraki adım: İşletim sisteminin tamamını bu dilde yazın, böylece Windows kapalı kaynak olsa bile, kaynak kodu her ikiliyle birlikte geldiği için önemsiz bir şekilde modifiye edilebilir. Ortam kurma, derleme, bağlama yok. Sadece çalışırken işletim sistemini değiştirin. Benzetmeyi kapatın: Common Lisp'de web tarayıcısı yazdıysanız, web tarayıcısını durdurmadan düzenleyebilir ve tarayıcı ile aynı dilde web sayfaları oluşturabilirsiniz. kaynak kodu her ikiliyle birlikte geldiği için önemsiz bir şekilde değiştirilebilir. Ortam kurma, derleme, bağlama yok. Sadece çalışırken işletim sistemini değiştirin. Benzetmeyi kapatın: Common Lisp'de web tarayıcısı yazdıysanız, web tarayıcısını durdurmadan düzenleyebilir ve tarayıcı ile aynı dilde web sayfaları oluşturabilirsiniz. kaynak kodu her ikiliyle birlikte geldiği için önemsiz bir şekilde değiştirilebilir. Ortam kurma, derleme, bağlama yok. Sadece çalışırken işletim sistemini değiştirin. Benzetmeyi kapatın: Common Lisp'de web tarayıcısı yazdıysanız, web tarayıcısını durdurmadan düzenleyebilir ve tarayıcı ile aynı dilde web sayfaları oluşturabilirsiniz.

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.