İçerik Menüsü

20.Doküman

Vim Editörü

Konu Etiketleri

vi , vim , gvim , editor

Vim Editörü

Vim Editörü Terminalden kullanılabilen ve komut alabilen yaygın kullanıma sahip bir editördür. Vim editörü kullanımının yaygın olmasının nedeni çok hafif bir editör olmasından kaynaklanmaktadır. Uzaktan erişim durumunda bağlantı(ağ/network) üzerinde fazlaca yük bindirmeden kolayca efektif şekilde gerekli işlemleri yerine getirir. Günümüzde daha yetenekli editörler de vardır ancak biraz eski alışkanlıklardan biraz da hafif şekilde çalışmasından dolayı hala tercih edilen bir editördür. Genelde öğrenmek isteyen kişilere ilk öğrenim aşamasında fazlaca karışık gelse de sonraları kullandıkça benimsenir. Bu durumu ileride sizler de gözlemleyeceksiniz. Ayrıca önceki adı vi olan editörün günümüzde gelişmiş versiyonu, vim ismini almış ve görsel arayüze sahip versiyonu ise gvim adıyla isimlendirilmiştir.

vi-vim-gvim

Editörü konsoldan açmak istersek vim komutu yeterli olacaktır. Ayrıca görsel arayüze sahip versiyonu olan gvim editörünü açmak için de gvim şeklinde komut kullanımı yeterli olacaktır. Ancak yeri gelmişken belirteyim görsel arayüz genel olarak pek tercih edilmiyor. Kullanıcılar terminal üzerinden tek pencerede hızlı işlem yapmak adına ve biraz da geçmişten gelen alışkanlıklarından dolayı editörü terminal üzerinden kullanmayı tercih ediyorlar.

Konsola vim komutunu vererek editörümüzü açalım.

Editörle çalışmak için i tuşuna basıyoruz ve editör sol alt köşede --INSERT-- yazısı ile içerik almaya hazır olduğunu belirtiyor.

Örnek olması açısından editöre aşağıdaki şekilde birkaç dize yazı ekledim.

Gerekli ifadeleri girdikten sonra komut vermek istersek ESC tuşuna bastıktan sonra komutları : karakteri başta olacak şekilde vermemiz gerekiyor. Kullanabileceğimiz bazı komutlar aşağıdaki şekildedir.

:q = Eğer yapılan değişiklikler kayıt edilmişse Vim editörünü kapatır. Aksi durumda uyarı verecektir.

:q! = Editörü kaydetmeden direk olarak kapatır.

:w = Yapılan değişiklikleri kaydeder.

:wq = Yapılan değişiklikleri kaydeder ve çıkar. Daha önce isim verilmemiş bir dosya ise :wq dosya_ismi şeklinde kullanılmalıdır.

Dosya oluşturmak üzere vi editöründe ESC tuşuna basıp :wq vi_dosyasi komutunu girelim.

Dosyamız oluştu, hemen bu durumu teyit etmek için ls -l komutunu kullanalım.

vi_dosyasi isimli dosyanın oluşturulduğunu teyit ettikten sonra tekrar vim editörü ile açmak için vim vi_dosyasi şeklinde komutumuzu kullanıyoruz.

Dosya oluşturup tekrar açtığımıza göre artık daha farklı komutlara ve diğer konsol komutlarını vim editörü aracılığı ile nasıl kullanacağımıza bakalım.

:x = Editörü kapatır ve değişiklikleri kaydeder.

:r dosya_adı = Hedef dosyayı okur ve içeriği mevcut dosyaya aktarır. Daha iyi anlaşılması için örneği inceleyin.

Adım adım açıklayalım:

İlk önce vim editörü ile x_dosyasi ve y_dosyasi isminde iki dosya oluşturuyorum ve bu dosyaların içerisine:

x_dosyasi için ; "Bu dosya x dosyasının içeriğini temsil ediyor".

y_dosyasi için ; "Bu dosya ise y dosyasının içeriğini temsil etmekte.."

İfadelerini ekliyorum daha sonra dosya içeriklerini cat komutu yardımı ile inceleyerek teyit ediyorum.

Şimdi Vim editörü ile oluşturulan bu dosyalardan birini diğerine eklemeye geldi sıra; Ben x_dosyasi'na y_dosyasi içeriğini eklemek üzere, x_dosyasi'nı vim x_dosyasi komutu ile açıyorum.

Vim editörü içerisinde açılan x_dosyası'ndayken :r y_dosyasi komutunu veriyorum.

Böylelikle y_dosyasi içerisinde yer alan ifadeler x_dosyasi içerisine eklenmiş oldu.

Bu durumu hemen cat komutu yardımı ile teyit ettik zaten.

Konsol komutlarını vim editörü içerisinde kullanabileceğimizden bahsetmiştik. Bunu yapabilmemiz için komuttan önce iki nokta üst üste ve ünlem karakterlerini kullanmalıyız yani örnek kullanımı :!komut şeklindedir. Hemen bu durumu ls komutu için deneyelim.

Vim editörü içerisinde :!ls komutunu verdiğimizde sistem otomatik olarak vim editöründen çıkarak konsolda bize ls komutunun çıktılarını bastı. Eğer bu durumda tekrar vim editörüne dönmek istersek enter tuşuna basmamız yeterli olacaktır.

Şimdi biz neden konsol varken bu editörden komut vermekle uğraşalım diye düşünmüş olabilirsiniz sizlere bu durumu örnek ile açıklayalım.

Örnek olması açısından ls komutunun çıktılarını bir dosyaya kaydetmek isteyelim.

Bunun için vim editörü ile bir dosya oluşturuyorum.

vim dizinler komutu ile vim editörü içerisinde boş bir dosya açıyorum ve bu dosya içerisindeyken :r !ls komutunu veriyorum.

Komut sonucunda oluşturmuş olduğum dizinler dosyası içeriği aşağıdaki şekilde oluyor.

Kullandığımız komut bütününü açıklayacak olursak(aslında bunları zaten biliyorsunuz ama ben yine de açıklama gereksinimi duydum) :r komutu içerik aktarma işlevinde !ls komutu ise dizin altındaki dosya-klasörleri listelemekle görevli.

Dosyayı :x komutu ile kaydettik ve ayrıca teyit etmek için cat dizinler komutunu kullandık.

Vim editörü ile birden fazla dosya ile işlem yapmamız mümkün bunun için komutu vim dosya1 dosya2 dosya3 şeklinde kullanabiliriz.

Komutumuzu verdikten sonra dosya1 vim editöründe açılacaktır. Gerekli değişiklikleri yaptıktan sonra eğer diğer dosyalara geçiş yapmak istersek çalıştığımız dosyayı kaydettikten sonra :next komutu ile dosya2'ye geçiş sağlanacaktır. Aynı şekilde dosya3 dosyasına da geçmek mümkün olacaktır.

Eğer geçiş yaptığımız dosyadan bir öncekine dönmek istersek de :previous komutunu kullanmamız yeterli olacaktır.

Ayrıca kaç dosyanın vim editöründe çalıştığını pencere ekranının üst bilgi kısmından öğrenebiliriz. Örneğin ben 3 dosya ile çalıştığım için üst kısımda bulunduğum dosya bilgisi ile beraber dosya1 (~) (1 of 3) - VIM şeklinde bir üst bilgi yazısı bulunuyor.

Dosyada bulunan ifadeleri değiştirmek istersek :satır_sayısı s/eski_ifade/yeni_ifade/g şeklinde bir komut bütünümüz bulunuyor. Bu gösterim ile anlamamış olabilirsiniz o yüzden hemen birkaç örnek ile konuyu açıklayalım.

linux isimli bir dosya oluşturuyorum ve içerisine aşağıdaki ifadeleri ekliyorum.

İlk önce burada yer alan 1. ve 2. satırdaki linux ifadelerini LİNUX ile değiştirmek üzere vim editörü içerisinde iken :1,2s/linux/LİNUX/g komutunu veriyorum. Daha sonra :x komutu ile dosyayı kaydederek vim editörünü kapatıyorum. Ve dosya içeriğini cat komutu ile sorguladık.

Görüldüğü gibi 1. ve 2. satırdaki linux ifadeleri LİNUX şeklinde değişmiş oldu.

Eğer tüm satırlardaki linux ifadelerini LİNUX olarak değiştirmek istersek komutu başına yüzde işaretini ekleyerek :%s/linux/LİNUX/g şeklinde kullanmamız yeterli olacaktır.

Komutumuzu verdikten sonraki çıktı ile bu durumu teyit ettik.

Vim editörü çok güçlü bir araç ve gerçekten çok farklı kullanım şekilleri-özellikleri var. Yani bu editörün kendisini anlatmak zaten başlı başına koca bir kaynak oluşturmakla eşdeğer. Hatta bu durumu vim editörünün kendi wiki kaynağından da teyit edebilirsiniz.

Biz yine de birkaç kısa kullanım şeklini daha görelim.

Eğer direk olarak konsol üzerinden veri girişi yapmak istersek konsola vim - komutunu girmeliyiz.

Böylelikle konsol bize Vim: Reading from stdin... çıktısını verecek ve bizden veri girişi bekleyecektir.

Ben örnek olması açısından konsoldan vim editörüne birkaç ifade ekliyorum.

İfade giriş işlemim tamamlandığında Ctrl + D tuş kombinasyonunu uygulayarak, vim editörü ekranına yazdığım ifadeler ile birlikte dönmüş oluyorum.

Ayrıca vim editörü ile oluşturduğumuz dosyaları şifreleyerek koruma imkanımız da var. Bu durumu bir örnek üzerinden anlatalım.

vim vim_metni komutu ile bir belge açıyorum ve içerisini bazı ifadeler ekleyerek belgeyi kaydediyorum.

Dosyamızın özelliklerini file vim_metni komutu ile öğrenip, dosyanın içeriğini ise cat vim_metni komutu ile okuyalım.

İstediğimiz bilgilere kolayca ulaşabildik. Bu durumu birde dosyamızı şifreleyerek test edelim. Bunun için konsola vim -x vim_metni şeklinde komut veriyoruz ve konsol bizden şifre belirlememizi istiyor.

Dosyamıza birkaç veri daha ekledikten sonra dosyamızı :w komutu ile kaydettik. Ve sonuç olarak vim editörü alt bilgi çubuğunda bize dosyanın şifrelendiğini aşağıdaki çıktıda yer alan "vim_metni" [crypted] şekilde ifade ederek belirtti.

Daha sonra dosyamızı tekrar file ve cat komutları ile sınadık. Çıktı da görüldüğü üzere dosyamız artık şifrelenmiş durumda. Yani dosyayı tekrar okunaklı şekilde açabilmemiz için şifresini girmemiz gerekecek. Bu durumu hemen vim_metni isimli dosyamızı açmaya çalışarak test edelim. Bunun için konsola vim vim_metni komutunu giriyoruz. Ve konsol bize aşağıdaki çıktıyı veriyor.

Konsol çıktısında da görüldüğü gibi bizden bir parola isteniyor. Eğer parolayı doğru girersek dosyamız açılacaktır.

Ancak sizlere önemli bir uyarı;

Bu dosya şifreleme olayı iyi hoş ancak çok çok önemli bir nokta var o da belirlediğiniz şifre. Eğer uzun, karmaşık yazarsanız bu şifreyi unutma riskiniz yüksek olacağından daha sonra bulmanız veya bir şekilde kırmanız da bir o kadar zor olacaktır. Ayrıca kısa ve kolay şifreler de kolayca kırılabileceğinden pek güvenli bir yol sayılmaz. Yani anlayacağınız ne unutacağınız kadar uzun veya karmaşık ne de kolay kırılabilecek kadar kısa olsun. Şimdiden sizleri uyarıyorum sonradan bu durum yüzünden aman başınız ağrımasın.

Vim editörü konusunu yavaş yavaş bitirmek üzere devam edecek olursak.

Örneğin vim editöründe kod yazıyordunuz ve kod 101. satırda hata verdi. Bu durumda 101. satırı aramak yerine editöre :101 şeklinde yazarak hatalı kodun bulunduğu satıra ulaşabiliyoruz. Yani direk olarak atlamak istediğimiz satırı vim editörüne :satır_numarası şeklinde girerek bu işlemi gerçekleştirebiliriz.

Eğer yazdığınız ifadeler içerisinden herhangi bir ifadeyi bulmak isterseniz /aranacak_ifade şeklinde yazarsanız ilgili ifadeye ulaşmış olursunuz. Ve aynı ifadenin başka yerlerde geçmesi durumunda bir sonraki ifadeye gitmek için :/ komutu, bir önceki aynı ifadeye dönmek için ise :? komutunu kullanıyoruz.

Eğer aradığımız ifadede büyük küçük harf duyarlılığı olmadan hedefteki aranan ifadenin aynısı olan bütün ifadeleri bulmak istersek :set ic komutunu verdikten sonra ifademizi /ARNACAK_İFADE şeklinde ya da /aranacak_ifade hatta ArAnAcAk_İfAdE şeklinde dahi belirtebiliriz. Sonuçta aynı karakter bütününü içeren ifadeler karşımıza gelecektir.

Vim editörü anlatımının burada sonuna geliyoruz. Ancak dediğim gibi zaten vim editörü başlı başına bir dokümantasyon konusu ki bu bilgileri burada izah etsek bile fazlaca gereksiz ayrıntıya değinmiş, sizlere boş yere yormuş olurduk. Vim editörü ancak baştan beri bahsi geçen kendi kendine öğrenme, deneme, alıştırma yapma ve özümseme ile öğrenilecek bir konudur. Kullanmanız şart değil kimisi çok sever kullanır kimisi ayrıntılarından nefret eder bırakır.

Neticede internette yer alan tüm zengin kaynaklar ile birlikte man kılavuz sayfasından, vim editörü içerisinde iken :help komutundan ve daha önce verdiğim vim editörü wiki kaynağından diğer tüm bilgilere ulaşabilirsiniz.(Benim önerim ilk başlarda ayrıntıları kolay kavramak adına vim editörü için geniş çaplı Türkçe kaynak sağlayan bu adresi kullanmanızdır.)

Ve unutmayın bu araç ancak ve ancak, öğrenmek isteyen kişinin kendi kendine kurcalaması ve bolca alıştırmalar yapmasıyla öğrenilebilir.

Alıştırmalar Hakkında

Öğrendiğiniz bilgilerin kalıcı olması için mutlaka bolca alıştırma yapmalısınız.Burada belirtilen alıştırmalar dışında da kendi kendinize özellikle de zorlandığınız konularda bol bol alıştırmalar yapın. Aksi halde öğrendiğiniz bilgiler kısa sürede unutulup gidecektir. Yani gerçekten öğrenmek istiyorsanız lütfen öğrendiğinizi hissede kadar alıştırmalar yapın.

Vim editörünü açın ve içerisine birkaç ifade ekledikten sonra dosyayı kaydetmeden direk olarak kapatın.

Tekrar Vim editörünü açın ve içerisine birkaç ifade ekledikten sonra "metin" ismiyle kaydedip kapatın.

Vim editörü ile "metin_2" isminde yeni bir belge  açın ve içerisine ifadeler ekledikten sonra kaydedin.

"metin_2" isimli dosya Vim editöründe açıkken "metin" isimli dosyanın içeriğini "metin_2" isimli dosyaya, ilgili komut yardımıyla ekleyin.

Vim editörü içerisindeyken konsol komutlarını girerek konsola çıktı bastırın.(istediğiniz komutu kullanabilirsiniz)

Oluşturmuş olduğunuz iki dosyayı(metin, metin_2) da aynı anda Vim editöründe açarak iki dosya arasında geçişler yapın.

Vim editörü ile dosyanın içerisindeki ifadeleri değiştirmek istediğiniz yenileri ile değiştirin.

Konsoldan Vim editörüne konsol üzerinden veri girişi yapmak için ilgili komut bütününü kullanın.Ve dosyaya ifadeler ekledikten sonra dosyayı kaydedin.

Kaydettiğiniz dosyayı Vim editörü yardımıyla şifreleyin. Ve dosyanın şifrelenip şifrelenmediğini de teyit edin.

Vim editöründe satırlar arası atlamak için ilgili komutu kullanın. Örneğin Vim editöründe açtığınız uzunca bir belgede direk olarak 35. satıra atlayın.

Vim editöründe açtığınız uzunca bir belgede bulmak istediğiniz herhangi bir ifadeleri arayın ve aynı ifadenin geçtiği alt ve üst satırlara geçiş yapın.(Kafanız karışmasın, bu işlem sadece vim editörü içerisinde anahtar kelime arama işlemidir.)

Vim editöründe arama işlemi yaparken küçük büyük harf duyarlılığı olmadan arama yapmak için ilgili komutu kullanarak arama yapın.

Geri Bildirimde Bulunun

Sizlere daha verimli bir kaynak sunabilmemiz için, uygulamada veya dokümantasyonlarda yer alan tüm hata ve eksiklerimizi bize bildirebilirsiniz.