Editörü kullanabilmek için kısayolları internetten araştırabiliriz, en çok araştırılan da “Vim’den nasıl çıkılır?”. Eğer Vim’i gerçekten öğrenmek istiyorsak yapacağımız şey çok basit:
$ vimtutor
Terminal ekranına “vimtutor” yazıyoruz ve editörün nasıl kullanılcağına dair tutorial dökümanını okuyoruz. Yaklaşık 25–30 dakika süreceğini söylese de 45 dakika ile 1 saat arasında sürüyor tamamını bitirmek. Vimtutor’un en güzel yanlarından bir tanesi de uygulama yaptırıyor, içindeyken herhangi bir belge açamanıza gerek kalmadan bütün anlattıklarını alıştırma yaptırıyor bize.
Hadi başlayalım
Cursor’u Hareket Ettirmek ve Vim’den Çıkmak
- Cursor’u hareket ettirmek için ; h:sola, j:aşağı, k:yukarı, l:sağa.
Yön tuşları ile de aynılarını yapabiliriz. - Vim’den çıkmak: “Esc” tuşuna bas, “:q!” yaz ve <ENTER>
- Cursor’un üzerinde duruduğu karakteri silmek için “x” e bas.
- Araya girdi yapmak, insert etmek : “i” e bas. Cursor’den bir önceki karakterle araya girer.
- Metin eklemek, append : “A” ya bas. Satırdan sonra ekler.
- Düzenlemelerimi yaptım kaydetip çıkıcam : Normal modda “:wq” yaz ve <ENTER>
- Normal Mod nedir? Herhangi bir şey ekleyip, çıkardık, bir düzenleme gerçekleştirdik ve işlemleri tamaladıktan sonra “Esc” e bastık; artık normal moddayız.
Metni Düzenle ve Sil
- Kelimeyi silmek : kelimenin ilk karakterine gel ve “dw” a bas.
- Satırın sonuna kadar silmek: “d$” Cursor’un bulunduğu yerden satırını sonuna kadar siler.
- d : silme operatörüdür;
- dw : cursor’un üzerinde bulunduğu karakterden bir sonraki kelimenin ilk harfine kadar siler.
- de : cursor’un üzerinde bulunduğu karakterden o kelimenin son harfi dahil olmak üzere siler.
- d$ : cursor’un üzerinde bulunduğu karakterden o satırın sonuna kadar saon harf/karakter dahil siler.
Saydırarak Hareket
Evet aynı zaman da saydırabiliriz de. Hareketi kaç kere tekrarlatmak istiyorsak yazarız;
- 5w : 5 kelime ilerler kelimenin başında bırakır cursor’u.
- 4e : 4 tane son (end) gider ve kursoru kelimenin sonunda bırakır.
Operatörler ile de yapabiliriz.
- d3w : 3 kelime siler.
- d3e: 3 son siler.
- 0 : (sıfır) cursor’u satırın başına getirir.
- dd : cursor’un bulunduğu satırı komple siler.
- 4dd : cursorun bulunduğu satırdan itibaren 4 satır siler.
Geri Al
Yapmayı istediğimiz şeyler olacağı gibi sehven yaptığımız/verdiğimiz komutları da geri alalım :
- u : son verilen komutu geri alır (undo).
Geri aldık ama geri almamızı geri almaya karar verdik?
- Ctrl-R : geri almayı geri alır.
- U : cursor’un bulunduğu satırdaki tüm değişiklikleri geri alır.
Kes Yapıştır
- Satırı kes yapıştır yapmak istiyoruz? Vim’de bu durum sil yapıştır şeklinde, önce siliyoruz sildiğimizi “p” operatörü ile yapıştırıyoruz, p = put.
- Satırı sildik ve başka bir satıra kopyalamak istiyoruz, yapıştırmak istediğimiz satırın üstüne gidip “p”ye basarsak cursor’un bulunduğu satırın bir altına yerleştirecektir.
Silme, Değiştir (Replace)
- Bir yerde harf hatası var ve düzeltmek istiyoruz, “x”e basarsak silecek ama yeterli değil, çünkü harf fazla değil hatalı, bizim onu düzeltmemiz lazım. Düzeltmek istediğimiz karakterin üzerine gelerek “r”e basıyoruz ve ardından orada olması gereken karakteri basıyoruz böylece oradaki karakteri değiştirmiş oluyoruz, r = replace.
Sil, Değiştir (Change)
Bir kelime doğru başlanmış ancak sona doğru harfler birbirine girmiş, teker teker silmek yerine kelimenin bir kısmından başlayarak sonuna kadar değiştirmek istiyoruz.
- Cursor’u değişime başlamak istediğimiz karakterin üzerine getiriyoruz ve “ce” tuşlarına sırasıyla basıyoruz. Kelimenin sonuna kadar o kısmın silindiğini görüyoruz ve orayı tekrar giriyoruz eve ardından düzeltme modundan çıkmak için “Esc”e basmamız gerekiyor, ce = Change to End.
- Değiştirme operatörü “c”, silme operatörü “d” ile aynı özelliklere sahiptir, c = change.
- c$ : Satırı sonuna kadar siler ve değiştirmek için bize imkan tanır, “c2e” 2 tane kelime sonuna kadar değiştir yada “c3w” 3 kelime değiştir gibi.
Peki “d” ile “c” arasındaki fark nedir? “d” ile silersiniz fakat metnin içine girmezsiniz yani bi ekleme yapmak için otomatik Normal mod’dan Edit moduna geçirmez sizi, ancak “c”de durum değişir. Değiştirme operatörü ile işlem yaparsanız Normal moddan Edit moda direkt olarak geçersiniz.
Cursor Konumu ve Dosya Statüsü
- Sayfa üzerinde çalışırken sayfanın konumu ihitiyaç oldu, editörden çıkıp Files, Home vs vs yapmak yerine Vim içerisindeyken “ Ctrl G “ yapıoruz ve sayfanın altında dosyanın bulunduğu konumu bize gösteriyor. O satırda aynı zamanda neler veriyor?
- /tmp/tutorcJkEfX” [Modified] line 489 of 970–50% — col 1
- “/tmp/tutorcJkEfX” [Modified] = dosyanın bulunduğu konum ve üzerinde herhangi bir değişiklik yapılmışsa onu belirtiyor.
- line 489 of 970–50% — col 1 = Cursor sayfanın kaçıncı satırında bu dökümanın yüzdelik olarak ne kadarına tekabül eder ve kaçıncı sütunda.
Ara (Search)
- Sayfa içerisinde aramak yapmak istiyorsak “/” ve arayacağımız kelimeyi yazıp <ENTER> yapmamız yeterli. Aramayı aşağıya doğru sürdürmek istiyorsak “n”e basmamız ters istikamette devam ettirmek istiyorsak “N”e basmamız gerekmektedir.
/ignore
- Eğer aramamızı yukarıdan aşağı değilde aşağıdan yukarı yapmak istiyorsak “/” yerine “?” ve arayacağımız kelime şeklinde yazmamız yeterli. Yazarken arada boşluk olmayacak.
?ignore
Parantez Eşlerini Bul
Bir kod inceliyoruz yada düzenliyoruz ve en çok baktığımız parantezlerin takibi kontrolden çıktı?
- % : eşleşen parantezleri gösterir. {,},(,),[,] hangisinin eşini bulmak istiyorsak cursor ile üzerine gelerek “ % “ ye basıyoruz ve eşini gösteriyor.
Bul ve Değiştir (Substitute)
- İkame komutu / vekil tayin etme / bir kelimeyi diğeri ile değiştirmeyi nasıl yapabiliriz? Bir kelime var, belki bir komut ya da değişken biz bunları bulup teker teker değiştirmek yerine tek seferde hepsini yada sadece istediklerimizi değiştirmek / yerine başka bir kelimeyi tayin etmek istiyoruz? s = substitute : vekil
:s/eskisi/yenisi
Değişmesini istediğimiz eski kelimeyi eskisi yerine, ne ile değiştirmek istiyorsak da yenisi yerine yazıoyoruz ve bu kadar. Peki bu yaptığımızla ne kadarını değiştirdik? Sayfanın tamamını mı yoksa o pragrafı mı?
Sadece cursorun bulunduğu yerden başlamak kaydıyla karşısına ilk gelen kelimeyi değiştirdi. Ama biz bütün satırdakini bu şekilde değiştirsin istiyoruz?
:s/eskisi/yenisi/g
“g” bayrağı ile tüm satırdaki eskisini yenisi ile değiştirecek.
Peki bir paragraf ya da belli bir satır aralığını değiştirmek istiyorsak?
:x,ys/eskisi/yenisi/g
x’inci satırdan y’inci satıra kadar eskisini yenisi ile değiştir.
- Tüm sayfayı değiştirelim “ :%s/eskisi/yenisi/g”
- Tüm sayfayı değiştirelim ama bazıları hariç, yani bize sorsun bunu değiştirip değiştirmeyeceğimi. Bunu da “g” bayrağının yanına bir “c” bayrağı ekleyerek yapıyoruz: “ :%s/eskisi/yenisi/gc”
Harici Bir Komut Çalıştır (Shell Command)
Vim’de “Shell Komutu” çalıştırmak? Çok basit ve kullanışlı:
:!komut
“komut” yerine aklınıza gelen komutu yazabilirsiniz, argüman ve parametre verebilirsiniz.
Ünlem işareti bize harici shell komutu çalıştırmaya yarar. Komutu yazıp <ENTER> a bastıktaon sonra bize komutun çıktısını veren sayfa görünecektir. Burada komut girmeye devam edebilir ya da hiç bir komut girmeden <ENTER> layarak Vim’e geri döneriz.
Farklı Kaydet
Vim kullanarak bişeyler hazırladık, kod parçası, metin ya da herhangi birşey, bunun adını değiştirerek kaydetmek ya da bir ad vererek kaydetmek istiyoruz? Save as, Farklı kaydet.
:w DOSYA_ADI
dosyanın şuanki mevcut konumuna DOSYA_ADI adında bir belge oluşturur. Nerden oluşturduğunu “ :!pwd” ile görebiliriz,
:!del DOSYA_ADI
ile silebiliriz yada shell komutu ile de silebiliriz:
:!rm DOSYA_ADI
Bir Parçayı Farklı Kaydet
Seçtiğimiz bi kaç satırı ya da metnin sadece bir kısmını yeni bir dosyaya yazdırıp kaydetmek istiyoruz?
- “ v” e basıyoruz ve yazdırmak istediğimiz satırları seçiyoruz, ardından “ :” yazıyoruz ve ekranın en altında bize böyle bir satır geliyor: “ :’<,’>” ve biz bunun sonuna dosya kaydettiğimizde yaptığımız gibi :
:’<,’>w deneme
yazıyoruz, seçtiğimiz satırları “deneme” adlı bir dosya içerisine yazdırıyoruz.
- “ v “ Görsel seçimi başaltır, v = visual.
İçeri Dosya Alma ve Dosya Birleştirme
- Bir içeriği editörün içine almamız gerekiyor, bunun için kopyala yapıştırdan ziyade geri alma birleştirme kullanıcaz, içeriği almak istediğimiz yere cursor’umuzu getiriyoruz ve
- “ :r DOSYA “ dosya isimli belge cursor’u koyduğumuz yerden itibaren artık düzenlediğimiz belgenin içerisine eklenmiştir.
- Ama biraz daha geniş düşünebiliriz, öğrendiğimiz bir kaç şeyi birleştirelim. Şu anda işlem yaptığımız konumdaki dosyaları listelemek için Vim’den çıkmadan komut girebiliyorduk değil mi; “ :!ls -l “. Yani ünlem işaretindden sonra kullanacağımız shell komutunun çıktısını Vim editörün içerisine alalım;
:r !ls -l
Araya Gir / Ekle
Araya bilgi eklemenin / girdi yapmanın başka kısayolları da vardır;
- o : cursor’un bir alt satırında girdi yapmayı sağlar, peki neden buna ihiyaç duyuyalım ki? Kod parçacığı incelerken bir metin düzeltmektten ziyade bir komut girdisi yapmak istersek “o” yu kullanabiliriz alt satırdan başlayarak bize yeni bir satır verir, o = open command.
- Üst satırdan girdi yapmak istersek de “ O” büyük/capital “o” harfini kullanabiliriz.
- a : cursordan sonra eklenti yapmayı sağlarken, “ A “ satırın sonundan itibaren eklenti yapmayı sağlar.
- “ e “ kelimenin sonuna götürür, end.
Kopyala Yapıştır
- Peki kopyala yapıştır hiç mi yok tabi ki değil, “ y” kopyala, “ p” yapıştır ama Vim’deki karşılığı tam olarak kopyala yapıştır değil, çek/yapıştır; yanks/paste.
- “ y”yi nasıl kullanıyoruz, yukarıda “ v” kullanımından bahsetmiştik bize görsel seçim açıyordu (visual), aynı şekilde seçeceğimiz kısmın başına cursor ile geliyoruz “v” e basıyoruz ve seçmek istediğimiz yerin sonuna kadar götürüyoruz ardından “ y”e basıyoruz ve çekiyoruz. Nereye yapıştırmak istiyorsak oraya cursor’umuzu götürüp “ p”e basıyoruz ve yapıştı.
Seçenekleri Ayarla
Arama yapıyoruz ama büyük/küçük harf önemsemesin istiyoruz, bu şekilde ayarları ayarlayabiliriz.
:set ic
Büyük/küçük harf önemseme/yoksay, ic = ignore case.
:set hls
Eşleşen kelimeleri vurgula, hls = highlight search
:set is
Kısmi eşleşmeleri de göster, is = including search
Eğer daha önceden set ettiğimiz ayaarlardan birini iptal etmek istiyorsak başına “no” getirmemiz yeterli, set ettiğimiz ayarı kapatır.
:set noic
:set nohls
:set nois
Yardım Al
Peki biz kullanmaya başladık ama detay bir konu var ve yardım almak istiyoruz?
- “ F1”e basabiliriz
:help
Yazıp <ENTER>layabiliriz
- Peki spesifik bir konu hakkında yardım alabilir miyiz? Evet : “help” komutu argüman alabilmektedir.
:help user-manual
Tamamdır
Burada her konuyu ve detayını girebildiğim kadar ifade etmeye çalıştım, anlatmaya çalıştığım herşeyi ve daha fazlasını en başta da söylediğim gibi “vimtutor”da bulabiliriz.