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:
- Vim editörünün felsefesini anlayacaksınız.
- Şuan kullandığınız editörde de gelişeceksiniz.
- Vim editörünü kullanırken oldukça hızlanacaksınız.
İçerik
- Neden Vim?
- Vim Basamakları
- Yapılandırma
- Vim'in Dil Yapısı
- Vim'de Dosya ile Çalışmak
- Metin Arama
- Kelime Bazında Hareket Etmek
- Cümle veya Paragrafa Göre Hareket Etme
- Ekran İçinde Hareket Etme
- Diğer Hareketler
- Metin Değiştirme
- Vim Görsel Mod Kullanımı
- Vim Makro Kullanımı
- Özetlemek Gerekirse
Neden Vim Editörünü Kullanalım?
Aşağıdaki üç nedenden dolayı, insanların Vim kullanması gerektiğine inanıyorum.
- Her yerde bulunur. Farklı işletim sistemleri veya farklı cihazları için yeni bir düzenleyici öğrenme konusunda endişelenmenize gerek yok.
- Ölçeklenebilir. Sadece yapılandırma dosyalarını düzenlemek için kullanabilirsiniz. Tüm yazma ve kodlama platformunuz Vim olabilir.
- 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.
- Seviye 0: Vim Editörü
- Seviye 1: Temel Vim bilgilerini bilmek
- Seviye 2: Görsel modu bilmek
- Seviye 3: Çeşitli pratik özellikleri kullanmak
- Seviye 4: Görsel moda gerek duymamak
Biz de bu yazıda buna benzer adımlardan bahsedeceğiz. Ama ben 4 ana başlık altında anlatmak istiyorum.
- Giriş / Temel Bilgiler: Vim editöründe nasıl düşünüleceğini anlamak.
- Temiz Kod: Düzenli ve temiz kodlama
- Gelişmiş: Vim ile nasıl profesyonel biri olacağınızı anlamak
- 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
- ESC Tuşunu Yapılandırın: İlk olarak, ekleme modundan çıkmak için <ESC> tuşu kullanmanın, bence oldukça modası geçmiş. Vim verimlilikle ilgilidir ve mecbur değilseniz bu tip kullanımları görmezden gelebilirsiniz. Böyle kullanmak zorunda değilsiniz.
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.
-
Leader Anahtarınızı Değiştirin: Leader, kısayollar
için bir etkinleştirme anahtarıdır ve oldukça güçlüdür. Yani, örneğin
c harfiyle bir kısayol yapacaksanız, leader
anahtarınızın ardından c harfini yazarsınız. Bu
yüzden onu sağ serçe parmağınıza denk gelen, bir tuşun üzerine
atamanız mantıklı olabilir. Kullandığınız klavyeye göre buna kendiniz
karar verebilirsiniz.
let mapleader = "<sececeginiz-tus>"
Küçük ve gereksiz gibi görünen ama hızınızı artıracak detaylara aşağıdaki hususları da ekleyebiliriz.
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.
-
d
: sil -
c
: değiştir -
y
: kopyala -
v
: satır veya karakter için görsel olarak seç
Değiştiriciler
Değiştiriciler, isimlerden önce bir şeyi nasıl yapacağınızı açıklamak için kullanılır.
-
i
: içeride -
a
: etrafında -
NUM
: sayı (örneğin 1, 12, 37) -
t
: bir şeyi arar ve ondan önce durur -
f
: bir şeyi arar ve üzerine gelir -
/
: bir dizeyi bul
İsimler
Burada isim olarak belirttiğimiz şeyler, elbette nesneler olacak.
-
w
: kelime -
s
: cümle -
)
: cümle (ikinci bir yöntem) -
p
: paragraf -
}
: paragraf (ikinci bir yöntem) -
t
: etiket (HTML/XML gibi düşünebilirsiniz) -
b
: blok (programlamadaki gibi düşünebilirsiniz)
Ş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:
- vim <dosya adiniz>: dosyanızı vim ile açın
- :w: değişikliklerinizi dosyaya yazın
- :q!: vim'den çıkın, ancak değişiklikleri KAYDETMEDEN!
- :wq: değişikliklerinizi KAYDEDEREK, vim'den çıkın.
-
saveas ~/klasor/dosya_yolu/:
vim
dosyanızı, belirtilen adrese kaydedin. - ZZ: :wq yapmanın, farklı bir alternatifi.
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
- j: bir satır aşağı git
- k: bir satır yukarı git
- h: bir karakter sola git
- l: bir karakter sağa git
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.
- 0: satırın başına git
- $: satırın sonuna git
Kelime Bazında Hareket Etmek
Vim'de kelime bazında da hareket edebilirsiniz.
- w: bir kelime ileri git
- b: bir kelime geri git
- e: kelimenin sonuna git
Büyük harf kullandığınızda, dizeyi iki kelimeye bölebilecek bazı engelleri yok sayarsınız. Bağlaçlar vs.
- W: bir kelime ileri git
- B: bir kelime geri git
Cümle veya Paragrafa Göre Hareket Etme
- ): bir cümle ileri git
- }: bir paragraf ileri git
Ekran İçinde Hareket Etme
- H: ekranın en üstüne git
- M: ekranın ortasına gitme
- L: ekranın altına gitme
- gg: dosyanın en üstüne git
- G: dosyanın altına git
- CTRL + U: yarım ekran yukarı git
-
CTRL + D
: yarım ekran aşağı git - CTRL + F: sayfa aşağı
- CTRL + B: sayfa yukarı
Diğer Hareketler
-
CTRL + i
: önceki navigasyon konumunuza atlayın -
CTRL + o
: bulunduğunuz yere geri dönün -
satır_numarası + H
: belirli bir satır numarasına git -
CTRL + E
: ekranı bir satır yukarı kaydır
Metin Değiştirme
Şimdiye kadar hep hareketlerden bahsettik. Artık metnimiz üzerinde bazı değişiklikler yapmanın vakti geldi.
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.
- Normal Mod: Yeni başlayanlar için Vim ile ilgili en sinir bozucu şeylerden biri, onu açıp yazmaya başlayamamanızdır. Normal Mod, genellikle komutları girdiğiniz yer olduğu için Komut Modu olarak da bilinir.
- Ekleme Modu: Dosyanızda değişiklik yaptığınız yerdir ve Normal Moddan Ekleme Moduna geçmenin bir çok yolu vardır. Endişelenmenize hiç gerek yok, çünkü biraz pratikle bunların hepsi gülünç derecede basitleşiyor.
- Görsel Mod: Metinleri seçmenin yollarından biridir. Normal Mod'a çok benzer. Metni hem karakter hem de satır bazında seçebilirsiniz. Görsel Modun amacı, seçtiğiniz tüm içerik üzerinde, bazı işlemler gerçekleştirmektir.
- Ex Mod: Bir : isteği aldığınız ve komutlar girebileceğiniz bir moddur.
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
- x: imlecin altındaki karakteri sil
- X: imleçten önceki karakteri sil
- dd: mevcut satırı sil
- D: satırın sonuna kadar sil
- J: mevcut satırı bir sonraki ile birleştir ve aradakileri sil
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.
- u: son eyleminizi geri alın
- CTRL + r: son eyleminizi tekrarlayın
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.
- y: seçili olanı kopyala
- yy: mevcut satırı kopyala
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.
- p: kopyalanan veya silinen metni mevcut imleç konumundan sonra yapıştır
- P: kopyalanan veya silinen metni mevcut imleç konumundan önce yapıştır
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:
- karakter tabanlı :v
- satır tabanlı :V
- paragraf :CTRL + v
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.
- qa: a adlı bir makro kaydetmeye başlayın
- q: kaydı durdur
- @a: makroyu oynat
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:
- bir kelimeyi satırda ara
- sözcüğün sonuna git ve -maker ekle
- satırın başına git ve iki nokta üst üste ekle
- satırın sonuna git ve bir nokta ekle
- 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:
- Vim öğrenilebilir
- 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.