Taş Gibi Bir Metin Editörü: VIM

Nedir Bu VIM?

VIM (Vi IMproved- Geliştirilmiş vi) Bill Joy’un UNIX sistemleri için geliştirdiği vi metin editörüne alternatif olarak yazılmış bir metin editörüdür. Daha grafik arayüzleri yokken ve klavye ile bilgisayarların yönetildiği dönemde pek çok metin editörü vardı. Bu metin editörlerde bazı tuş kombinasyonları ile dosyada aşağı ve yukarı inme, dosya açma, dosya içerisinde arama yapma gibi işlemler yapılıyordu ancak dediğim gibi bunları bazı tuş kombinasyonları ile sağlanıyordu ve eskiden metin editörleri bu tuş kombinasyonlarının kolaylığına göre tercih ediliyordu. Bir diğer önemli nokta da editörün temalanabilme özelliğiydi. VI tam bu dönemde kolay tuş kombinasyonları ile ve özelleştirilebilme yeteneği ile Unix ve türevlerinde kullanılmak üzere kapalı kaynak kodlu olarak yayımlandı.

Programın kapalı kaynak oluşu ve geliştiricisinin para kazanma gayesi, geliştiricileri ve vi severleri bu yazılıma alternatif olacak kaçık kaynak kodlu alternatifler oluşturmaya itti. VI’nin tuş kombinasyonlarını kullanan bir alternatif oluşturma çabasının sonucu olarak Tim Thompson taravından 1987 yılında Stevie (ST Editor for VI Enthuasts) editörü yayımlandı. Temelinde VI’nin tuş kombinasyonlarınu kullanan bu editör kısa süre içerisinde Bram Moolenaar tarafından 1991 yılında Amiga için oluşturduğu VI IMitation editörüne motor olarak kullanıldı ve kısa süre içerisinde imutation yani çakma olan bu editör geliştirilmiş VI editörü VIM’e dönüştü. Bill Joy’un Unix için port olarak paylaştığı VI editörünün kodları bir daha açılmamak üzere tarihin derinliklerine gömüldü.

VI’nin Özellikleri

VI esasında 6 temel mod ve bu modların her birisinde dosyayı manüple etmek için farklı kullanıcı komutlarının kullanılmasına imkan sağlamaktadır.

VIM, 6’sı 6 temel modun varyantları olan 12 farklı düzenleme moduna sahiptir. Temel modlar:

olarak sıralanmaktadır.

VI yüksek miktarda özelleştirmeye imkan vermektedir. Klavye verimliliğini artırmak amacı ile tasarlanmış bazı araçlara sahiptir. Metin yönetimini kolaylıkla sağlayabilen bazı anahtar-işlem kombinasyonlarına sahiptir. “Kayıt” özelliği, tuş vuruşlarını otomatikleştirmek ve dahili veya kullanıcı tanımlı işlevleri ve eşlemeleri çağırmak için makroların oluşturulmasına izin verir. Makrolar gibi bazı özelliklere sahip olan bazı kısaltmalar oluşturabilir ve bunları kullanarak hızlı bir şekilde metin manüple edebiliriz.

VI bunlara ek olarak bazı işlevleri yerine getirebilmek için Linterler, VCS entegrasyonu, CSS’de renkler gösterme gibi VIM’e yeni işlevler ekleyen veya VIM’i genişleten birçok eklentiye ve geliştirmeye sahibiz.

VIM’in geliştirmelerinden bazıları arasında GIT’de dosyaların tamamlanması, karşılaştırılması ve birleştirilmesi (VIMdiff olarak bilinir) gibi işlemleri yapan bir git desteği bulunmaktadır. Ayrıca VIM kapsamlı bir entegre yardım sistemi, genişletilmiş düzenli ifadeler, komut dosyası dilleri (hem yerel hem de Perl, Python, Ruby, Tcl vb. Gibi alternatif komut dosyası yorumlayıcıları aracılığıyla) bulunur.) eklentiler için destek, grafik kullanıcı arayüzü (gVIM olarak bilinir), sınırlı entegre geliştirme ortamı benzeri özellikler, fare etkileşimi (hem GUI ile hem de GUI olmadan), katlama, sıkıştırılmış veya arşivlenmiş dosyaları klasörleyip manüple edebilmeye yarayan bazı araçlar bulunmaktadır.

Bunlara ek olarak SSH, FTP ve HTTP gibi ağ protokolleri üzerinden dosyalar gönderebilmeye, oturum durumlu olarak dosyaları ve projelerde ortaklaşa çalışablimeye imkan sağlamaktadır. VIM’de dosya koruma, yazım denetimi, çoklu dosya açma ve bu dosyaları bölmeleri kullanarak (yatay ve dikey) veya sekmeli pencereler halinde manüple etmeye imkan sağlamaktadır.

Bunlara ek olarak unicode ve çoklu dil desteği, sözdizimi vurgulama, çeviri oturum komutu, arama ve imleç konum geçmişleri , düzenleme oturumları boyunca devam edebilen çoklu düzey ve dallanma, geri alma / yineleme ve dosya geçmişi gibi pek çok eklenti ve özelliğe sahip ve hala pek çok editörde bulunmayan daha fazlasına…

Bu kadar geliştirmenin haricinde VIM’in bir de basit modu vardır ki bu mod sayesinde vi gibi basit ve metin odaklı bir şekilde VIM’i kullanabiliriz. Ancak, uyumluluk modunda bile, VIM, Unix Spesifikasyonu ve POSIX’te tanımlanlanmış olan vi ile tamamen uyumlu değildir.

VIM’de Çalışmak

VIM metinler veya dosyalar üzerinde çalışırken başta dosyalar açılmaktadır. Açıldığı anda metin düzenlemesi aktif değildir. Ekleme modu ile gerekli eklemeler yapılmasının da ardından dosya kolaylıkla kaydedilebilmektedir. Bütün bu işlemler bazı komut kombinasyonları ile yapılmaktadır. İleride bunlardan da bahsedeceğim.

VIM çalışırken, kullanıcının değişikliklerini bir takas dosyasına “.swp” uzantısıyla kaydeder. Takas dosyası, bir çökme sonrasında kurtarmak için kullanılabilir. Bir kullanıcı bir dosyayı açmaya çalışırsa ve bir takas dosyası zaten mevcutsa, VIM kullanıcıyı uyarır ve kullanıcı devam ederse, VIM “.swo” uzantılı bir takas dosyası kullanılarak dosya kurtarılır.

VIM Komut Dosyaları

VIM bütün bunlara ek olarak kendi betik diline sahiptir. Bu dil Vimscript veya VimL olarak da adlandırılır. Temel bir işlevsel programlama biçimi bulunan VIM betiği; listeler ve sözlükler gibi daha gelişmiş veri türlerini ve (basit bir biçim) nesne yönelimli programlamayı da destekler. Bu dil makrolar oluşturabilmeye imkan tanımaktadır. Bu dil ile geliştirilen eklentiler tamamı ile VIM bazlı olduğu için VIM kadar hızlı çalışabilmekte ve VIM’e esneklik katmaktadır.

VIM Ne Değildir

Bu yere kadar hep VIM nedir diye konuştuk peki VIM ne değildir?

VIM, kullanıcılarının zorlamak veya ellerini tutmak için tasarlanmış bir editör değil. Kullanımı öğrenilmesi gereken bir araçtır.

VIM bir kelime işlemci değildir. Metni çeşitli vurgulama ve biçimlendirme biçimleriyle görüntüleyebilmesine rağmen, dizgi belgelerinin WYSIWYG düzenlemesini sağlamaz. (Yine de TeX’i düzenlemek için harikadır.)

VIM, klavye kullanımı için özelleştirilmiş bir araçtır. Fare ile kullanmanız mümkün değildir.

VIM Kaynakları