__    __                      __                        __ 
    /  |  /  |                    /  |                      /  |
    $$ |  $$ |  ______    _______ $$ |   __   ______    ____$$ |
    $$ |__$$ | /      \  /       |$$ |  /  | /      \  /    $$ |
    $$    $$ | $$$$$$  |/$$$$$$$/ $$ |_/$$/ /$$$$$$  |/$$$$$$$ |
    $$$$$$$$ | /    $$ |$$ |      $$   $$<  $$ |  $$ |$$ |  $$ |
    $$ |  $$ |/$$$$$$$ |$$ \_____ $$$$$$  \ $$ \__$$ |$$ \__$$ |
    $$ |  $$ |$$    $$ |$$       |$$ | $$  |$$    $$/ $$    $$ |
    $$/   $$/  $$$$$$$/  $$$$$$$/ $$/   $$/  $$$$$$/   $$$$$$$/ 
    
                                                                            
                 

Vim Editörü Nedir? Vim Nasıl Kullanılır?

Vim editörü konusundaki problem, kullanımının zorluğu değil Vim'i kullanmaya devam edip etmeyeceğiniz.

Buradaki esas amacımız, daha önce Vim editörünü kullanmamış bir kullanıcıyı baz alarak ilerlemek ve adım adım gitmek olacak.

Vim konusunda her zaman öğrenilecek bir şeyler olacaktır fakat, bu makaleden sonra bir daha asla en başa dönmek zorunda kalmayacaksınız.

Bu yazı boyunca, şu üç kazanımı elde etmiş olacaksınız:

  1. Vim editörünün felsefesini anlayacaksınız.
  2. Şuan kullandığınız editörde de gelişeceksiniz.
  3. Vim editörünü kullanırken oldukça hızlanacaksınız.

İçerik

Neden Vim Editörünü Kullanalım?

Aşağıdaki üç nedenden dolayı, insanların Vim kullanması gerektiğine inanıyorum.

  1. Her yerde bulunur. Farklı işletim sistemleri veya farklı cihazları için yeni bir düzenleyici öğrenme konusunda endişelenmenize gerek yok.
  2. Ölçeklenebilir. Sadece yapılandırma dosyalarını düzenlemek için kullanabilirsiniz. Tüm yazma ve kodlama platformunuz Vim olabilir.
  3. Güçlüdür. Bir dil gibi çalıştığı için, Vim sizi hüsrana uğratmaz.

Teknolojide bir çok şey, editörünüz ile aranızın iyi olmasına bağlıdır.

Vim Basamakları

Kana, Vim öğrenmenin 5 seviyeden oluştuğunu söylüyor.

Biz de bu yazıda buna benzer adımlardan bahsedeceğiz. Ama ben 4 ana başlık altında anlatmak istiyorum.

  1. Giriş / Temel Bilgiler: Vim editöründe nasıl düşünüleceğini anlamak.
  2. Temiz Kod: Düzenli ve temiz kodlama
  3. Gelişmiş: Vim ile nasıl profesyonel biri olacağınızı anlamak
  4. Vim Tüyoları: İhtiyacınız olan bazı pratik tüyolar

Vim Editörünü Yapılandırma

Vim yapılandırma konusunda bazı tavsiyelerim olacak. Elbette bunları uygulamak zorunda değilsiniz. Vim'i kurduktan sonra ~/.vimrc dosyasında bir takım değişiklikler yapmanız iyi olacaktır.


vi ~/vim/.vimrc
        

Birkaç .vimrc değişikliği

Aşağıdaki komut, ESC'ye basmak yerine jk yazabilmenizi sağlar. Siz istediğiniz herhangi değeri atayabilirsiniz. Yazma hızınıza ve parmaklarınızı kullanma biçiminize göre bir değer verebilirsiniz.


inoremap jk <ESC>

Bu, Vim'de bir eşleme (remapping) komutudur ve "insert" modundayken ardışık olarak "j" ve "k" tuşlarına basıldığında "Escape" (<ESC>) tuşuna basılmış gibi davranmasını sağlar. Kullanıcıların "insert" modundan çıkmak için "Escape" tuşuna uzanmak yerine, daha ergonomik bir şekilde ve daha hızlı bir biçimde "jk" tuş kombinasyonunu kullanarak "normal" moda dönebilmelerine olanak tanır.


syntax  on  #sözdizimi vurgusu  
set  number  #satir numaralari  
set  noswapfile  #swap dosyasini devredisi birak 
set  hlsearch  #tum sonuclari vurgula 
set  ignorecase  #aramada buyuk/kucuk harfi yoksay
set  incsearch  #yazarken arama sonuclarini goster

Vim Eklenti Yönetimi

Eklenti yönetiminizi olabildiğince doğal tutmanızı öneririm. Eklentileri yöneten karmaşık üçüncü taraf işlevlerinden kaçınmak iyi bir tercih olacaktır. Vim editöründe eklentileri kullanmak, Vim 8.x sonrası ve NeoVim'de çok daha kolay. Eklentilerinizi şu dosyaya yazmanız yeterli olacaktır:


~/.vim/pack/eklenti_klasör_adı /start/<kullanacagınız eklentinin adı>

Yukarıdaki yöntemi kullanarak istediğiniz herhangi bir eklenti ile oynayabilirsiniz ve bunlar Vim'i açtığınız otomatik olarak yüklenir. Bu yöntemi, daha önceki Vim sürümlerinde ihtiyaç duyduğumuz üçüncü taraf eklenti yönetimi seçeneklerine tercih ederim.

Vim'in Dil Yapısı

Muhtemelen Vim ile ilgili en güzel şeylerden biri, kullandıkça yeni fikirler kazandırmasıdır. Vim, isimler, fiiller ve zarflarla tamamlanmış bir dil gibi işlev görecek şekilde ayarlanmıştır.

Burada kullanacağım terimler teknik olarak doğru değil. Yani fiiller, değiştiriciler vb. gibi Vim'de anlatılan konu başlıkları yok. Ancak Vim'in nasıl çalıştığını daha iyi anlamanıza yardımcı olması açısından gayet yararlı olacaktır.

Fiiller

Hepinizin bildiği gibi fiiller, gerçekleştirdiğimiz bir takım eylemlerdir. Vim komutlarının bazılarını, fiillere benzetebiliriz.

Değiştiriciler

Değiştiriciler, isimlerden önce bir şeyi nasıl yapacağınızı açıklamak için kullanılır.

İsimler

Burada isim olarak belirttiğimiz şeyler, elbette nesneler olacak.

Şimdi buraya kadar sınıflandırdığımız bazı komutları nasıl kullanabileceğimizi görelim. Yani artık bir nevi cümle kurmaya başlayacağız.

Komut Oluşturmak

İki kelimeyi silmek istersek (delete 2 words):


d2w

Cümle içi değişiklikler (change Inside Sentence):


cis

Bulunduğunuz paragrafı kopyalamak, çekmek (Yank Inside Paragraph):


yip

Vim Editöründe Dosyalar ile Çalışmak

İşte Vim dosyanız ile çalışmanız için bazı temel bilgiler:

Metin Arama

Bir editörle yapmanız gereken önemli şeylerden biri, aradığınız metni bulmaktır. Vim'in son derece güçlü arama yetenekleri var ve şimdi bunlardan bazıları hakkında konuşacağız.

Dizeye Göre Arama

Vim'de arama yapmanın en temel yollarından biri, / komutunu girmek ve ardından ne aradığınızı yazıp ENTER tuşuna basmaktır.


/include<CR>        

Aramanızı yaptıktan sonra, sonucun bir sonraki örneğine gitmek için n (küçük n)'ye , bir önceki örneğine gitmek için N (büyük N) 'ye basabilirsiniz.

Ayrıca / yerine, ? kullanarak, geriye doğru arama yapabilirsiniz.

Metinde Dolaşmak

Temel Dolaşım

Bu kullanımın yeni başlayanlara biraz tuhaf geleceğini biliyorum. Ama biraz kullandıktan sonra alışacağınıza garanti verebilirim.

Aynı Hizada Hareket Etmek

Aşağıdaki komutlar ile bulunduğunuz satır içerisinde kolayca hareket edebilirsiniz.

Kelime Bazında Hareket Etmek

Vim'de kelime bazında da hareket edebilirsiniz.

Büyük harf kullandığınızda, dizeyi iki kelimeye bölebilecek bazı engelleri yok sayarsınız. Bağlaçlar vs.

Cümle veya Paragrafa Göre Hareket Etme

Ekran İçinde Hareket Etme

Diğer Hareketler

Metin Değiştirme

Şimdiye kadar hep hareketlerden bahsettik. Artık metnimiz üzerinde bazı değişiklikler yapmanın vakti geldi.

Vim Editör Modları

Kavramamız gereken ilk şey, mod kavramıdır. İlk başta biraz mantıksız gelebilir ancak yine zamanla alışacağınız bir konudur.

Metni Biçimlendirme

Metni hızlı bir şekilde biçimlendirmek oldukça yararlıdır. Bunu aşağıdaki komutla kolayca yapabilirsiniz:

Mevcut paragrafı biçimlendir:


gq ap

gq: Ortamınıza bağlı olarak, güzel ve düzenli bir yapı için çalışır.

ap: Paragraf etrafındaki standart metin nesnesidir.

Metni Silme

Artık metni nasıl değiştireceğimizi bildiğimize göre, düz silme işlemlerinin nasıl yapılacağını görelim.

Temel silme seçenekleri

Geri Al ve Tekrarla

Geri al ve tekrarla özellikleri bir metin düzenleyicinin olmazsa olmazlarıdır. Elbette Vim kullanırken de çok sık kullanacağımız özellikler arasındalar.

Her iki komut da siz son kayda geri gidene kadar tekrar tekrar kullanılabilir.

Kopyala Yapıştır

Vim, metni hızlı bir şekilde kopyalayıp yapıştırabilme konusunda gayet iyi çalışır.

Ancak Vim, beklenenden biraz farklı kopyalama yapıyor. Beklenildiği gibi komutumuz c değil. Hatırlayacak olursanız c, değişim için kullanılıyordu. Vim bunun yerine y kopyalama komutunu kullanıyor.

Unutmayın, tıpkı diğer herhangi bir kopyalama işleminde olduğu gibi, kaynak metinle uğraşmıyorsunuz, sadece başka bir kopya yapıyorsunuz.

Metni Yapıştırma

Metni yapıştırma konusunda temel olarak p komutu kullanır. Yani, dd kullanarak bir satırı silerseniz, p kullanarak tekrar yapıştırabilirsiniz.

Yapıştırmayla ilgili hatırlanması gereken bir şey de, yapıştırma işleminin genellikle imlecinizden hemen sonra başlaması ve kopyaladığınız karakterleri, kelimeleri, satırları veya sütunları yapıştırmasıdır. Ayrıca, evrensel geri alma komutu u ile herhangi bir yapıştırmayı geri alabileceğinizi unutmayın.
Metin satırlarını değiştirme:

ddp

Bu, iki metin satırının konumunu değiştirmek için kullanabileceğiniz hızlı bir numaradır.

Yazım Denetimi

Yazım denetimi konusunda Vim oldukça başarılıdır. Öncelikle conf dosyamızdaki seçeneği ayarlamamız gerekiyor.

Bunun için ~/.vimrc dosyasına aşağıdaki satırı ekleyin:


:set spell spelllang=tr

Bu Türkçe yazım denetimi konusunda size yardımcı olacaktır. Aynı şeyi diğer diller içinde yapabilirsiniz.

Yanlış yazılmış kelimeleri bulmak

conf dosyanızda yazımı etkinleştirdiğinizde, yanlış yazılan kelimelerin altı sizin için otomatik olarak çizilir. Ek olarak, :set spell ve :set nospell komutlarını çalıştırarak da etkinleştirebilir veya devre dışı bırakabilirsiniz.

Yer Değiştirme

Vim editörün, bir diğer güçlü özelliği de güçlü değiştirmeler yapabilmesidir. Bu işlem, önce ne aradığınızı, sonra neye değiştireceğinizi, sonra da değişikliğin kapsamını belirleyerek yapılır.

Örneğin, tüm satırlarda foo ifadesini boo ile değiştirmek için:

:%s /foo/boo/g

Sadece mevcut satırda foo ifadesini boo ile değiştirmek için:

:s /foo/boo/g

Bunlara benzer birçok farklı kullanım var ancak, yukarıda görmüş olduklarınız en temel olanlar.

Vim Görsel Mod Kullanımı

Belki de Görsel Mod hakkında söylenebilecek en iyi şey, şimdiye kadar öğrendiğiniz her şeyin gücüne güç katması olurdu. Vim görsel mod, vurgulanan metne komutlar uygulamanıza izin verir.

Görsel moda v ile girersiniz. Bunun için üç farklı seçeneğiniz vardır:

Aşağıdaki komutlar v ile başlıyorlar. Bu sizi görsel moda sokacaktır. Sonrasında gelen harfler ise görsel modda gerçekleştireceğiniz eylemler içindir.

Parantezin içini seçin

vi(

Köşe parantezin içini seçin

vi[

Ayrıca iki seviye seçmek için aşağıdakine benzer bir sayı da ekleyebilirsiniz.

v2i[

Vim Makro Kullanımı

Genelde makroların korkutucu olduğu düşünülür. Gerçekten değiller.

Basit, değil mi? Birden çok kayıtta saklanan birden çok makro olabilir.

Örneğin, a, b, c isminde kayıtlar oluşturabilir sonra da onları @a, @b ve @c ile oynatabilirsiniz.

Neden Makro

Bunları okuyorken aklınıza şu soru gelmiş olabilir:

Nokta komutuyla görsel seçim ve tekrar bu kadar güçlüyse, neden makrolar kullanılsın ki?

Harika bir soru ama cevap biraz karmaşık. Makrolar, yapabileceğiniz hemen hemen her şeyi yapabilirler. Ama aydınlatıcı olması için aşağıdaki iş akışına bir bakalım:

  1. bir kelimeyi satırda ara
  2. sözcüğün sonuna git ve -maker ekle
  3. satırın başına git ve iki nokta üst üste ekle
  4. satırın sonuna git ve bir nokta ekle
  5. satırın sonundaki tüm boş alanları sil

50 bin satırlık bir kodda tüm bunları yapmak gerçekten sabır isterdi.

Ancak Vim ile bu eylemleri bir kez gerçekleştirir ve her satırda tekrar oynatabilirsiniz.

Özetlemek Gerekirse

Sonuç olarak bu rehberden çıkarılmasını umduğum iki madde var:

  1. Vim öğrenilebilir
  2. Vim güçlüdür

Burada ele alınan temel bilgilerle kısmen bile rahat ederseniz, yazmaktan daha fazla keyif alacağınızı düşünüyorum. Metinlerle ne kadar rahat uğraşırsanız, fikirlerle o kadar rahat başa çıkarsınız ve bence bu üretim aşamasında gerçekten önemli bir şey.

Her şeyden çok, bu yüzden metin düzenleyicinize hakim olmalısınız. Fikirleri yakalarken kendinizi güçlü hissetmek istersiniz.

Burası Hackod.