Büyük ölçekli bir uygulamayı kodlarken Vim kullanma


17

Vim öğrenmeye başlıyorum ve burada stackexchange'te verilen bazı tavsiyeleri takip ediyorum. Bazı oyuncak projelerinde kullanmaya başlıyorum ve bundan hoşlanıyorum.
Ama o sınıfın adı, bu makronun diğer dosyaya ne dahil olduğu vb.

Verebileceğiniz ortak öneriler nelerdir?


1
Yardım etmek için kesinlikle bazı Vim komut dosyaları eklemeniz gerekecektir. Vim'i çok fazla programlamak için kullanıyorum ve kaynak kodda gezinmeme yardımcı olmak için her zaman ctags kullanıyorum. Hangi dili kullanıyor?
tehnyit

Yanıtlar:


10

Bir IDE'den bir konsol / xterm ortamına geçen deneyimli programcıların bir yönü, kaynak kodu nesnelerinin (işlev adları, değişkenler) endekslenmesi için bir yedek bulmaktır. Microsoft Visual Studio için kullanılan genel terimin Intellisense veya bunun gibi bir şey olduğuna inanıyorum .

Vim gibi Unix / Linux dünyasında, eğer kullanılan bir araç ctagsveya popüler çoklu dil Açık Kaynak uygulaması, coşkulu ctags . vimSpesifik değildir ve Emacs, CRiSP, aşağılık ve bir dizi diğer vi klon, nedit, gedit, JED, UltraEdit, BBEdit ve DreamWeaver dahil olmak üzere bir dizi Unix, Linux, MS Windows, Mac OS metin editörleri tarafından desteklenir (bunlardan bazıları üçüncü taraf eklentiler yoluyladır).

Bunun ötesinde, iyi tasarım ve düşünceli ayrışma, daha büyük projelerin organizasyonu, herhangi bir bilgi ( typedefveya classtanım, vb.) Aramak için sadece 1-2 bariz potansiyel yer olması nedeniyle projeyi yönetilebilir hale getirir .

Ayrıca birden çok vim örneği kullanıyorum (genellikle viewkaynak dosyaların salt okunur görüntülenmesi için) ve ayrıca vim örneği başına birden çok düzenleme arabelleğinin sınırlı kullanımı (öncelikle kodlar arasında dosyaları taşımak veya yeniden düzenlemek için). Bir seferde sadece birkaç kaynak dosyası kullanmanın, kendi elimdeki göreve odaklanmam için kendi küçük yolunda yardımcı olabileceğini düşünüyorum.


1
Coşkulu ctags önermek için +1 !
Attila O.

1
Sadece organize olmanın çok yardımcı olduğunu düşünüyorum. Kaynaktaki bir esere bakıp "Ah bu yerde tanımlanmalıdır" derseniz, işler çok daha basitleşir. Artı tarafta vim seanslarına başlamak o kadar hızlı ki, bir kerede yarım düzine açık olmak oldukça normal bir şey haline geliyor
Zachary K

@ZacharyK Yarım düzine? Gün sonunda genellikle tam bir düzine
sahibim

güne bağlı
Zachary K

7

VIM ve IDE tartışmasının bir parçası olmak istemiyorum. Sanırım bu kişisel tercih. Ama çok fazla VIM kullanıyorum ve işte bu yüzden vim kullanmak için çok güçlü buluyorum

Cevabın iki kısmı:

A. Çoğu şey VIM, IDE'lerle yapabileceğiniz en çok şeye izin verir, (her özelliği koymaya çalışmıyorum, ancak vi'yı sınırlandıran birkaç belirgin değil)

  1. ctagsetkinleştirdiyseniz ve yaptıysanız prototiplerde gezinebilirsinizctrl+{

  2. Aynı anda birden fazla pencere açabilirsiniz sing: sp 'dosyaadı' komutu. Tabii ki, bazen hayatı daha kolay hale getirmek için birden fazla terminal açıyorum.

  3. Güçlü sözdizimi vurgulama. Varsayılan ve diğer şeyler. Ayrıca, bazı IDE'lerin aksine, açık parantez uyuşmazlığı varsa, dize veya kapalı olanlarla eşleşmiyorsa, size çok net bir gösterge verir. Spesifik değil , çoğu dil içindir.

  4. ":!make"Pencereden dışarı çıkmadan komut kullanarak komut satırını çalıştırabilirsiniz .

  5. Aramaya dayalı olarak kelimeye göre çok daha hızlı geçiş yapın (vi varsa regexp desteği) ve kullanarak { to } arasında geçiş yapabilirsinizESC %

  6. Kademeli hata ayıklama ve vi (kod üzerinde çalışmak için diğer pencerede) tutarken GDB çalışmak mümkündür. Dosyayı değiştirmeye karar verdiğinizde, tekrar yapabilir ve GDB'ye yeniden yükleyebilirsiniz.

B. VIM'de daha iyi bulduğunuz birçok şey

  1. Arama ve değiştirme kesinlikle çok daha güçlüdür.

  2. Özel görünüm ve his ve (beyaz + mavinin aksine siyah + yeşil) ve daha da önemlisi kendi güçlü komutunuzu oluşturabilirsiniz.

  3. Dikey Blok seçimi. ctrl+vİmleci dikey olarak hareket ettirmeyi deneyin . Bu gerçekten düşünülemez bir özellik!

  4. Sesler wiered -ama bir blok kesmek / kopyalamak ve 30 kez geçmesi gerekiyor deneyin! 1 kez yapmaktan daha fazla çaba gerektirmez. Ayrıca, bir etkinliği bir veya daha fazla kez yeniden yapmayı (geri almamayı) deneyin.

  5. Otomatik girinti, sekme kontrolü ve blok yorumlarında veya belirli stil yorumlarında yorumlarınızı dönüştürmenin otomatik yolu.

  6. Vimdiff ile etkili birleşme çatışması.

  7. Konsol tabanlı çalışma ortamıyla en önemli şey, fareye asla dokunmamanızdır! böylece anahtar kartta hızlı iseniz-IDE iyi değil.

  8. Aynı anda birden fazla makinede, sunucuda çalışın! Açıkça görünmüyor, ancak bazen sunucu üzerinde çalışırken, doğrudan birden fazla makinede oturum açıyorsunuz ve bir şeyler yapıyorsunuz.

Bu özellikler ciddi taleplerde ise vi'da nasıl yapılacağı hakkında cevap verecektir. Bu siteye bakın Vimcast . Tabii ki, çok var.

Ama evet, konsol tabanlı çoğu şey eski moda ve hiçbir şekilde IDE'lere karşı bir şey söylemiyorum.


Küçük not: vim'in :makeyerleşik bir komutu vardır, hatta ihtiyacınız yoktur !(vim kullanmayanlar için terminalde bir komut yürütür). Ve ctrl-vbirkaç hafta önce buldum ve şimdi sürekli kullanıyorum, inanılmaz derecede faydalı.
Kevin

@Kevin - tamam <code>: make </code> hakkında bilmiyordum! Bunu bilmek heyecan vericiydi. Bu, VIM ile elde ettiğiniz bir tür romantizmdir - VIM'in size izin verebileceği özelliklerin tam listesini yapamazsınız! Her zaman sizi şaşırtmaya devam ediyor. Teşekkürler.
Dipan Mehta

Evet, böyle harika. Bunun avantajı, :makesizi otomatik olarak ilk hataya taşıması cnve bunları ve cp, bkz :help make. Aslında bakana kadar fark etmemiştim; Ben genellikle farklı bir pencere ve pwd yapmak, Makefile ile aynı olmak zorunda gibi görünüyor, ancak sadece köküne taşımak ve orada yapmak için src dizinine bir koyabilirsiniz.
Kevin

4

Bence, Vim size temel özelliklere sahip çok güçlü bir editör veriyor, ancak projelerinizde muhtemelen kullanacağınız komut dosyaları / eklentilerle renklendirmek size kalmış. Bunlar, çoğunlukla komut dosyalarını, belgeleri veya derlenmesi gereken dosyaları düzenlemenize bağlı olarak farklı olacaktır.

Örnek olarak, kullandığım zencoding, ara sıra html / css düzenleme için snipmateiçin Textmate benzeri pasajlar ve piton alakalı eklentiler bir çift ( pyflakes, pep8, vimpdbPython ben en çok ne olduğu, kodlama için, vs.).

Sonra sık kullanmadığım başka eklentiler de var, ama yine de onları arada bir yardımcı buluyorum, Dpasteve gibi ConqueTerm.

Yine de, bana göre, Vim'in en kullanışlı özellikleri yerleşiktir (zaman tabanlı geri alma, hızlı gezinme, aralık filtreleri, vb.) - bulamadığım şeyler (veya en azından bu kadar kolay erişilemeyen şeyler) ) IDE'lerde. Böylece Vim'inizi gerçekten ihtiyacınız olan bir IDE'nin parçalarına ve parçalarına sahip olacak şekilde ayarladığınızda ( snipmate, ctags...) hem IDE hem de konsol ortamlarından faydalanabilirsiniz.

Vim'i kullanmam sadece konsol içindir, bu nedenle bu araçların Gvim ile ne kadar yardımcı olduğunu söyleyemem.

Bununla birlikte, tüm addon iyiliğine rağmen, kendimi hala !grep ...veya ^Z + find ...her zaman koşarken buluyorum .


3

Tüm programımı vim'de yapıyorum. Aslında kullandığım herhangi bir IDE'den daha kolay buluyorum. Aynı ekranda, hatta aynı ekranda birden fazla dosya açabilirsiniz (sekmeleri ve pencereleri arayın). Ben genellikle X çalışıyorum, bu yüzden birkaç (6) xterm ekran açık var: biri vim c dosyaları (sekmelerde birkaç), diğeri vim (ayrıca sekmeler) ve vim olmayan pencereler için: yapı, hata ayıklama Saf bir konsoldayken bile, neye ihtiyacım olduğunu görmek için sekmeler, pencereler ve kod katlama kullanabilirim ve vim'den çıkmadan manaları oluşturabilir ve hatta görüntüleyebilirim, sadece bilmeniz gerekir doğru komutlar. Ve çok fazla var, eminim bunların yarısında bile ustalaşmadım. Ve vim'in aramasını yenmek ve değiştirmek zor.


1

Birçok büyük ölçekli başvuru (benim, en azından iki;) oldu ve tahminimce, çok daha fazlası tamamen Vim'de yazılacak. Bu nedenle, IDE'ler hala oldukça modern bir yeniliktir .

Bununla birlikte, düz vanilya vi (ah) veya Vim biraz eksiktir. Vim'i bilmek ve bazı yollarla düşünmek biraz yardımcı olur ve eklentiler çok yardımcı olur , bu da www.vim.org'un sonsuz bir kaynağıdır. Bazıları kullandığınız dile özgüdür ve bazı genel diller (yorum yapmak için, dosya taraması için ... için) onu hızlı bir şekilde çok hızlı bir geliştirme ortamına dönüştürür. Sonuçta (ve bazıları kesinlikle tartışacaktır) bir IDE sadece daha hoş bir arayüzde paketlenmiş eklentilere sahip bir editördür. Bir IDE'de de fazla grafiksel şey yok.

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.