Vim Nedir? Komutlardan Eklentilere Kapsamlı Başlangıç Rehberi

Hızlı Bakış

Vim, metin düzenleme ve kod yazma süreçlerini hızlandıran güçlü bir editör sunuyor. Bu araç, modlar sayesinde yazma ve komut çalıştırma işlemlerini ayrıştırıyor. Ayrıca klavye kısayolları ve renkli sözdizimi vurgusu işleri kolaylaştırıyor. Örneğin, birden fazla pencereyi aynı anda yönetmek mümkündür. Bu sayede kullanıcılar düzenleme ve hata düzeltme süreçlerini hızlı şekilde tamamlıyor. Böylece programcılar, her ortamda verimli çalışabiliyor ve Vim deneyiminden maksimum fayda sağlıyor.

Bir metin düzenleyici düşünün. 1991’den beri hayatta kalmayı başarmış. Üstelik her geçen yıl daha da güçleniyor. İşte bu konsol editörü, Bram Moolenaar’ın geliştirdiği Vi Improved yani kısaca Vim.

Peki Vim nedir sorusunun cevabı aslında oldukça katmanlı. Yüzeyde sıradan bir terminal editörü olarak görünür. Ancak derinde bir düzenleme dili ve yaşam tarzı yatar. Çoğu yazılım geliştirici Vim’i yalnızca uzak sunucu işleri için tanır.

Oysa gerçek çok daha heyecan verici. Vim sizi fare kullanmama ergonomisi ile tanıştırır. Klavye odaklı çalışmanın doruk noktasını yaşatır. Üstelik Vim modern IDE’lere kafa tutacak kadar genişler. Hatta Vim çoğu durumda onları açık ara geride bırakır.

Vim’in en büyük rakibi yıllardır Emacs olarak biliniyor. Her iki editör de inanılmaz özelleştirilebilir. Açık konuşmak gerekirse, Emacs metin düzenleyicisi ile Vim arasındaki rekabet topluluğu hep beslemiştir. Bu iki aracın farklı felsefeleri vardır.

Yıllardır Vim ile projeler geliştiriyorum. Kendi deneyimimden şunu net söyleyebilirim. Vim’in öğrenme eğrisi dik görünür ama zirveye vardığınızda manzara büyüleyicidir. Verimlilik artışı inanılmaz boyutlara ulaşır.

Nitekim bu rehber tam da bu yüzden var. İster yeni başlayan olun ister deneyimli bir sistem yöneticisi. Burada Vim’in tüm sırlarını bulacaksınız. Temel komutlardan ileri düzey eklentilere, Neovim farkından Türkçe klavye ipuçlarına kadar her şeyi ele alacağız. Hazırsanız başlayalım!

Vim Editörü Tanımı, Özellikleri ve Kullanımı

Vim Nedir? Efsanevi Editörün Tanımı ve Felsefesi

Bu başlık altında işin temellerine ineceğiz. Tarihçesinden felsefesine kadar her şeyi ele alacağız. Çünkü Vim’i anlamak, sadece tuş kombinasyonlarını ezberlemekten ibaret değildir. Vim’in ruhunu kavramak gerekir.

Yıllar önce ben de acemi bir kullanıcıydım. Vim’le ilk karşılaşmamız tam bir felaketti. Çıkamıyordum, yazdıklarımı silemiyordum. Ne var ki pes etmedim. Sonuç olarak hayatımın en verimli dönemi başladı.

Vim, özgür yazılım dünyasının en gurur duyduğu projelerden biridir. GNU/Linux ekosistemi bu editörün doğal yaşam alanıdır. Hemen her dağıtımda kurulu geliyor. Deneyimlerime dayanarak söyleyebilirim ki, bu evrensellik editörü benzersiz kılan bir faktördür.

Vi’den Vim’e: Kısaltmanın Ardındaki Hikaye (Vi IMitation’dan Vi Improved’a)

Hikaye 1976 yılında başlar. Bill Joy, Berkeley’de öğrenciyken Vi’yi geliştirir. O dönemde terminal pager olarak kullanılan ex editörüne görsel bir katman ekler. İşte bu yüzden Vi adı da “visual” kelimesinden gelir.

Vi editörü ilk olarak Unix işletim sistemi üzerinde hayat buldu. Bill Joy’un bu sistemdeki çalışmaları günümüze miras kaldı. O günlerin kısıtlı terminal ortamı bugünkü verimliliğin tohumlarını attı.

Aradan yıllar geçer. 1991’de Bram Moolenaar, Amiga bilgisayarlar için bir Vi klonu geliştirir. Başlangıçta adı “Vi IMitation” yani Vi Taklidi’dir.

Ancak kısa sürede Vim orijinal Vi’yi özellikler bakımından katlar. Böylece isim “Vi Improved” yani Vi Geliştirilmiş haline dönüşür.

Bugün Vim, açık kaynak ve özgür yazılım dünyasının en parlak yıldızlarından biridir. Geliştiriciler bu yazılımı Charityware lisansıyla dağıtır.

Yani bu lisans, kullanıcıları Uganda’daki çocuklara bağış yapmaya teşvik eder. Bu eşsiz yaklaşım, Vim topluluğunun kalitesini de yansıtır.

Vim Temel İlkeleri: Modal Editing, Klavye Odaklılık & Genişletilebilirlik

Vim’in kalbinde üç temel ilke yatar. İlki modal editing yani modlu düzenleme anlayışıdır. İkincisi klavye odaklı tasarımdır. Üçüncüsü ise sınırsız genişletilebilirlik özelliğidir.

  • Modal Editing: Normal mod, insert mod, visual mod ve command-line mod gibi farklı kipler arasında geçiş yaparsınız. Her modun ayrı bir görevi vardır. Bu sayede aynı tuş farklı bağlamlarda farklı işler yapar.
  • Klavye Odaklılık: Vim’de fareye uzanmak yasaktır adeta. Tüm işlemleri klavye kısayolları ile halletmeniz gerekir. Dolayısıyla elleriniz ana klavye sırasından asla ayrılmaz.
  • Genişletilebilirlik: Vimscript veya Lua dili ile sınırsız özelleştirme yaparsınız. Eklenti ekosistemi devasadır. Bu yönüyle Vim basit bir editörden çok daha fazlasına dönüşür.

Vim’de kod yazdıktan sonra derleme aşamasına geçersiniz. GCC derleyici koleksiyonu bu noktada devreye giriyor. Terminalden hızlıca derleme yapmak iş akışınızı bölmez.

Bu ilkeleri kavradığınızda işler değişir. Başlangıçta garip gelen yapı, zamanla benzersiz bir hız sunar. İşte bu felsefe, onlarca yıldır geliştiricileri Vim’e bağlar.

Vim’in Gücü: Neden Hala Kullanılıyor? (Dik Öğrenme Eğrisinin Ardındaki Faydalar)

Birçok kişi sorar. Neden bu kadar eski bir araç hala popüler? Cevap basit aslında. Çünkü Vim’in sunduğu tuş vuruşu optimizasyonu benzersizdir. Ayrıca Vim her yerde çalışır.

Yazılım geliştirme dünyası sürekli yeni araçlar üretir. Ancak Vim dimdik ayakta durur. Zira Vim, metin düzenleme işini adeta bir sanata dönüştürür. Siz de kısa sürede bu sanatın tutkunu olursunuz.

Gerçek
Stack Overflow 2024 anketine göre geliştiricilerin %30’undan fazlası Vim ve Neovim’i aktif kullanıyor. Bu oran Vim’i en popüler 5. editör yapıyor. Terminal tabanlı editörler arasında ise Vim açık ara lider.

Öğrenme eğrisi diktir buna şüphe yok. Ne var ki bu eğriyi aşanlar pişman olmaz. Çünkü Vim’le kazanılan hız ve konfor kalıcıdır. Başka hiçbir editör bu deneyimi sunamaz.

Sadece SSH İçin Değil: Günlük Geliştirme Akışınıza Vim’i Entegre Etmek

Bir sunucuya SSH ile bağlandığınızda karşınıza genelde Debian dağıtımı çıkar. Vim bu sistemlerde neredeyse her zaman kuruludur. Konfigürasyon dosyalarını düzenlemek için hemen işe koyulabilirsiniz.

Pek çok kişi Vim’i sadece uzak sunucu bağlantılarında açar. Oysa bu büyük bir potansiyel kaybıdır. Günlük yazılım geliştirme rutininizin tamamını Vim’de toplayabilirsiniz.

Ben kendi iş akışımda tamamen Vim’e geçtim. Artık IDE’lere dönüp baktığımda yavaşlık hissediyorum. Fareye uzanmak bile rahatsız edici geliyor. Çünkü Vim’de klavye kısayolları ile her şey anında gerçekleşiyor.

Ayrıca tmux ile birleştirdiğinizde ortaya müthiş bir ikili çıkar. Terminal içinde çoklu oturumlar, bölünmüş pencereler ve anlık geçişler. Üstelik dotfiles yönetimi sayesinde Vim konfigürasyonunu tüm makinelerinize taşırsınız.

En Önemli 5 Vim Komutu ile Hemen Başlangıç (Kurtarma Çıkışı İçin)

Vim’i ilk açtığınızda panik yapmayın. Herkes aynı şoku yaşar. İşte sizi hayatta tutacak beş temel komut. Bunları öğrenirseniz ilk günü atlatırsınız.

  • i — Insert moduna geçer. Yazmaya başlarsınız. Normal moda dönmek için Esc tuşuna basmalısınız.
  • :w — Dosyayı kaydeder. İsmini siz belirlersiniz. :w dosya.txt şeklinde kullanın.
  • :q — Vim’den çıkar. Ancak değişiklik varsa uyarı alırsınız.
  • :wq — Kaydedip çıkar. En sık kullanılan çıkış yöntemidir.
  • :q! — Değişiklikleri kaydetmeden zorla çıkar. Kurtarma butonu gibidir.
İpucu
Vim’den çıkamıyorum diyenlerdenseniz yalnız değilsiniz. Bu espri konusu bile oldu. Çözüm basit: Esc tuşuna birkaç kez basın, sonra :q! yazıp Enter’a basın. İşte bu kadar!

Vim’i Anlamak: Modal Düzenleme (Normal, Insert, Visual, Command-line ve Diğer Modlar)

Modal editing kavramı Vim’in can damarıdır. Alışık olduğunuz editörlerden en büyük farkı budur. Vim’de her modun ayrı bir amacı ve gücü vardır.

Yeni başlayanlar genelde Vim’de zorlanır. Çünkü diğer editörlerde yazdığınız her şeyi doğrudan ekranda görürsünüz.

Vim’de ise önce hangi modda olduğunuzu bilmeniz gerekir. Ancak bu farkındalık geliştiğinde verimlilik patlaması yaşarsınız.

Normal Mod: Vim’in Kalbi (Hareket, Silme, Kopyalama, Yapıştırma)

Normal mod, Vim’i açtığınızda sizi karşılayan varsayılan kiptir. Burada yazı yazamazsınız. Bunun yerine cursor hareketleri ve metin manipülasyonu yaparsınız. İşte bu mod, Vim’in asıl gücünün kaynağıdır.

Temel hareket için h, j, k, l tuşlarını kullanırsınız. Sırasıyla sol, aşağı, yukarı, sağ yönlere gidersiniz. Başlangıçta garip gelebilir. Ne var ki eliniz klavyenin ana satırından hiç ayrılmaz. Bu büyük bir ergonomik avantajdır.

Ayrıca silme komutları da bu modda çalışır. x ile tek karakter, dd ile tüm satırı silersiniz. Kopyalama için yy, yapıştırma için p kullanırsınız. Tüm bu işlemleri Vim saniyenin onda birinde gerçekleştirir.

Insert Modu: Yazma Zamanı (Ve Farklı Giriş Yöntemleri)

Insert mod yazı yazdığınız yerdir. Vim’de buraya geçmek için birçok yol vardır. i ile cursor’un bulunduğu yerden başlarsınız. a ile bir karakter sonrasından yazmaya geçersiniz. o ise alt satıra yeni bir satır açar.

Ben kendi pratiğimde en çok o ve a kombinasyonlarını kullanıyorum. Özellikle satır sonuna ekleme yaparken A tuşu hayat kurtarıcıdır. Büyük harf kullanımına dikkat edin. Çünkü Vim’de aynı tuşun küçük ve büyük hali farklı işler yapar.

Insert moddan çıkmak için Esc veya Ctrl+[ tuşlarına basarsınız. Bazı kullanıcılar jj veya jk gibi özel çıkış kombinasyonları da tanımlar. Bu tamamen konfigürasyon yönetimi tercihinize bağlıdır.

Visual Mod: Metni Seçmenin Etkili Yolu (Karakter, Satır, Blok)

Visual mod, fareyle sürükleme yapmadan metin seçmenizi sağlar. v ile karakter bazlı, V ile satır bazlı seçim yaparsınız. Ctrl+v ise visual mode blok seçimi başlatır.

Blok seçim özelliği gerçekten büyüleyicidir. Birden fazla satırda aynı sütuna aynı metni ekleyebilirsiniz. Düşünün ki yüz satırlık bir dosyada tüm satırların başına yorum işareti ekleyeceksiniz. Vim’de üç tuş hareketiyle bu iş tamamdır.

Seçim yaptıktan sonra y ile kopyalar, d ile siler, c ile değiştirirsiniz. Vim tüm bu işlemleri anlık ve akıcı şekilde yapar. Fareyle uğraşmaya kıyasla en az beş kat hızlısınızdır.

Command-line Modu: Dosya İşlemleri, Arama ve Global Komutlar

Command-line mod, : tuşuyla eriştiğiniz güçlü bir komut satırı arayüzü sunar. Buradan dosya açma, kaydetme ve çıkma gibi temel işlemleri yönetirsiniz. Üstelik arama ve değiştirme işlemlerini de buradan yaparsınız.

Örneğin :%s/eski/yeni/g komutu tüm dosyadaki değişiklikleri tek seferde yapar. /kelime ile ileri doğru arama başlatırsınız. ?kelime ile geriye doğru tararsınız. Her arama sonucunda n ile sonrakine, N ile öncekine atlarsınız.

Ayrıca :g global komutu desene uyan satırlarda toplu işlem yapar. Bu özellik büyük log dosyası analizinde adeta sihirlidir. Yüz binlerce satır içinde Vim saniyeler içinde istediğiniz veriyi ayıklar.

Vim Dili: Metin Nesneleri (Text Objects) ile Düzenleme Devrimi

Şimdi işin büyüleyici kısmına geliyoruz. Metin nesneleri Vim’i diğerlerinden ayıran en kritik özelliktir. Dilbilgisi tabanlı düzenleme anlayışı sayesinde Vim metni yapısal olarak kavrar.

Düşünün ki bir kelimenin içini değiştirmek istiyorsunuz. Kelimenin başına gidip seçip silmeniz gerekmez. Vim’de sadece ciw yazarsınız. İşte bu kadar basit. Bu yaklaşım zamanla refleks haline gelir.

Operatörler ve Metin Nesneleri: Birleştirerek Güçlü Komutlar Oluşturma

Vim dilinin grameri üç bileşenden oluşur. Fiil operatör, sayı ve metin nesnesi. Bu yapıyı anladığınızda sayısız kombinasyon üretebilirsiniz. İşte temel yapı taşları.

  • Fiil (Operatör): d sil, c değiştir, y kopyala, v seç, gU büyük harfe çevir.
  • Sayı (Tekrar): 2, 5, 10 gibi kaç kez uygulanacağını belirtir.
  • Metin Nesnesi: w kelime, p paragraf, " tırnak içi, ( parantez içi gibi yapısal birimler.

Bu üçünü birleştirirsiniz. Örneğin d2w iki kelime siler. ci" tırnak içindekini değiştirir. yap paragrafı kopyalar. Her kombinasyon Vim’de yeni bir süper güçtür.

“ciw”, “da(“, “yap” Gibi Sihirli Kombinasyonlar: Gerçek Hayat Örnekleri

Bu komutları günlük hayatta nasıl kullanacağınızı adım adım görelim. Her biri inanılmaz zaman kazandırır. Hatta bir kez alıştığınızda geri dönüşü imkansız hale gelir.

Adım 1: ciw — Kelime içini değiştir. İmleci herhangi bir kelimenin üzerine getirin. ciw yazın. Kelime silinir, insert moda geçersiniz. Yeni kelimeyi yazıp Esc ile çıkın.

Adım 2: da( — Parantez içini parantezle birlikte sil. Bir fonksiyon çağrısının tamamından kurtulmak istiyorsunuz. İmleci parantezin içine getirin, da( yazın. Böylelikle herşeyi temizlemiş olursunuz.

Adım 3: yap — Paragrafı kopyala. Herhangi bir yerde yap yazın. Böylece imlecin bulunduğu paragrafın tamamını kopyalarsınız. Ardından p ile istediğiniz yere yapıştırırsınız.

Tavsiye
Vim’de metin nesnelerini öğrenmek için en iyi yöntem bilinçli pratik yapmaktır. Her gün bir yeni kombinasyon seçin ve o gün boyunca onu kullanmaya çalışın. İki haftada kas hafızanız oluşur.

İleri Düzey Vim: Makrolar, Registerlar ve Otomasyon

Temel seviyeyi geçtiniz. Artık sıra gerçek güçte. Makrolar ve registerlar Vim’i Turing complete yapan özelliklerin başında gelir. Bu özellikler sayesinde otomasyonu burada başka bir boyuta taşırsınız.

Kendi iş akışımda makrolar olmazsa olmazımdır. Tekrarlayan işleri bir kez kaydedip sonsuz kez oynatırım. Üstelik Vim bunu eklentisiz, sadece yerleşik özelliklerle yapar.

Makro Kaydetme ve Oynatma: Tekrarlayan İşleri Otomatikleştirme

Makro kaydı şu adımlarla çalışır. Önce bir kayıt defteri seçersiniz. Sonra işlemleri yaparsınız. En sonda kaydı durdurup istediğiniz kadar oynatırsınız.

Adım 1: Normal modda q tuşuna basın. Ardından bir harf seçin, örneğin a. Ekranda “recording @a” yazısını görürsünüz.

Adım 2: Yapmak istediğiniz işlemleri sırayla gerçekleştirin. Satır başına git, kelime ekle, satır sonuna nokta koy gibi. Bununla birlikte her tuş vuruşunuz kaydedersiniz.

Adım 3: İşlem bitince tekrar q tuşuna basın. Kayıt durur. Şimdi @a yazarak makroyu bir kez oynatırsınız. 5@a ile beş kez tekrarlarsınız.

Deneyim
Geçen ay 2000 satırlık bir JSON dosyasını yeniden yapılandırmam gerekti. Her satıra aynı üç düzenlemeyi yapacaktım. Vim’de bir makro kaydettim, sonra 2000@q ile hepsini 10 saniyede hallettim. Manuel yapsaydım en az 2 saat sürerdi.

Registerlar: Birden Fazla Panonun Gücü

Çoğu editörde tek bir pano vardır. Kopyaladığınız şey öncekinin üzerine yazar. Vim’de ise register adı verilen çoklu depolama alanları bulunur. Adeta 26 farklı panonuz vardır.

  • İsimli Registerlar: "a ile "z arası 26 adet. "ayy bir satırı a registerına kopyalar. "ap ile geri yapıştırırsınız.
  • Özel Registerlar: "+ sistem panosu, "* seçim panosu, "% dosya adı, ". son eklenen metin.
  • Sayılı Registerlar: "0 son kopyalanan, "1 ile "9 arası son silinenler.
  • Okunabilir Registerlar: ": son komut, "/ son arama, ": komut geçmişi.

Bu sistem sayesinde Vim’de asla veri kaybetmezsiniz. Sildiğiniz her şey registerlarda saklanır. Daha sonra ihtiyacınız olduğunda "1p ile geri getirirsiniz.

Makro + Register + “.” Komutu ile Süper Verimlilik

Şimdi tüm bu güçleri birleştirelim. Vim’de makro ile registerı birlikte kullanmak sizi durdurulamaz yapar. Ayrıca . komutu son işlemi tekrarlar. Bu üçlü, verimliliğin kutsal üçgenidir.

Diyelim ki bir log dosyasında belirli satırları ayıklayıp başka bir dosyaya kopyalamanız gerekiyor. Vim’de makro kaydedersiniz. İçinde register komutları olur. Kayıt bittiğinde defalarca oynatırsınız. İşte gerçek zamanlı düzenleme budur.

Kendi pratiğimde bu üçlüyü her gün kullanıyorum. Özellikle refactoring yaparken . komutu inanılmaz işlevseldir. Bir değişikliği yapıp sonra j. ile alt satırda tekrarlamak saniyeler alır.

Vim’i Özelleştirmek: .vimrc Dosyası ile Kişisel Ortamınızı Yaratın

Varsayılan haliyle bile Vim güçlüdür. Ancak asıl potansiyel özelleştirmede yatar. Yapılandırma dosyası .vimrc veya init.lua ile Vim bambaşka bir seviyeye çıkar. Burası sizin dijital evinizdir.

Masaüstünde Vim kullanmaya başlayanların çoğu Ubuntu ortamı ile yola çıkıyor. Kullanıcı dostu yapısı sayesinde terminal korkusunu hemen yeniyorsunuz. .vimrc dosyanızı burada özgürce şekillendirebilirsiniz.

Yıllar içinde sayısız Vim konfigürasyonu denedim. Her seferinde yeni bir şey keşfettim. Şimdi en temel ve en etkili ayarları paylaşacağım. Bunları kopyalayıp hemen kullanmaya başlayabilirsiniz.

Örnek Bir .vimrc Dosyası ile Başlangıç (Kopyala-Yapıştır)

Aşağıdaki yapılandırma örneği yeni başlayanlar için idealdir. Temel ayarları içerir ve hemen üretken olmanızı sağlar. Kendi ~/.vimrc dosyanıza yapıştırın.

" Temel Ayarlar
syntax on                  " Sözdizimi vurgulama aktif
set number                 " Satır numaralarını göster
set relativenumber         " Göreceli satır numaraları
set tabstop=4              " Tab genişliği 4 boşluk
set shiftwidth=4           " Otomatik girinti genişliği
set expandtab              " Tab'ları boşluğa çevir
set smartindent            " Akıllı girintileme
set autoindent             " Otomatik girinti
set cursorline             " İmleç satırını vurgula
set hlsearch               " Arama sonuçlarını vurgula
set incsearch              " Anlık arama
set ignorecase             " Büyük/küçük harf duyarsız
set smartcase              " Büyük harf varsa duyarlı ol
set showmatch              " Eşleşen parantezi göster
set wildmenu               " Komut tamamlama menüsü
set encoding=utf-8         " UTF-8 kodlama
set clipboard=unnamedplus  " Sistem panosu ile entegre
set mouse=a                " Fare modu aktif
set history=1000           " Komut geçmişi
set undofile               " Kalıcı geri alma
set undodir=~/.vim/undodir " Geri alma dizini
set backupdir=~/.vim/backup " Yedekleme dizini

Bu ayarlar dosyasını kaydettikten sonra Vim’i yeniden başlatın. Artık sözdizimi vurgulama, satır numaraları ve akıllı girintileme aktif olur. Ayrıca fare modu sayesinde tıklama da yapabilirsiniz.

Dosya Türüne Özel Ayarlar: ftplugin ve autocmd Kullanımı

Her dosya türü farklı ayarlar gerektirir. Python için 4 boşluk, Makefile için tab karakteri gibi. Vim’de bu özelleştirmeleri ftplugin veya autocmd ile yaparsınız.

autocmd olay tabanlı çalışır. Editör bu özelliği belirli bir dosya türünü açtığınızda tetikler. Örneğin Python dosyaları için özel girinti ayarlarını Vim’de şöyle tanımlarsınız. autocmd FileType python setlocal tabstop=4 shiftwidth=4 yazmanız yeterlidir.

Daha temiz bir yaklaşım ise ~/.vim/after/ftplugin/python.vim dosyası oluşturmaktır. Bu dosyaya sadece Python’a özel ayarları yazarsınız. Konfigürasyon yönetimi böylece düzenli kalır. Vim’de her dil için ayrı dosya oluşturmanız mümkündür.

Renk Şemaları (Color Schemes) Kurulumu ve Değiştirme

Göz yorgunluğunu azaltmak için iyi bir renk şeması şarttır. Vim’in varsayılan teması işlevseldir ama göz alıcı değildir. Neyse ki binlerce alternatif mevcuttur.

  • Yerleşik Temalar: :colorscheme yazıp Tab tuşuna basın. Vim yüklü tüm temaları listeler. desert, elflord, morning gibi seçenekler hazırdır.
  • Popüler Üçüncü Parti Temalar: gruvbox, nord, catppuccin, tokyonight ve onedark en sevilenlerdir. Vim’e eklenti yöneticisi ile kolayca kurarsınız.
  • Terminal Teması Uyumu: Terminalinizin renk paleti ile uyumlu tema seçin. Aksi halde renkler bozuk görünür. Vim’de set termguicolors ile gerçek renk desteğini açın.

Ben şahsen gruvbox temasını yıllardır kullanıyorum. Gözlerimi asla yormaz. Üstelik hem açık hem koyu mod seçeneği sunar. Gece geç saatlerde bile Vim’de konforlu çalışma imkanı verir.

Vim’i Bir IDE’ye Dönüştürmek: Eklentiler ve Yapılandırmalar (2026 Güncel)

Bu bölüm en heyecan verici kısımdır. Bu konsol metin düzenleyici, doğru eklentilerle tam teşekküllü bir IDE katmanı haline gelir. Otomatik tamamlama, hata yakalama, dosya gezgini, Git entegrasyonu hepsi Vim’de mümkündür.

2026 yılı itibarıyla Vim’in eklenti ekosistemi inanılmaz olgunlaştı. Treesitter ile gelişmiş sözdizimi analizi, LSP ile akıllı kod desteği artık standart hale geldi. Üstelik kurulumu hiç olmadığı kadar kolay.

Kendi Vim konfigürasyonumu yüzlerce kez yeniden yazdım. Şimdi en verimli eklenti setini sizlerle paylaşacağım. Bunlar yılların süzgecinden geçmiş, gerçekten işe yarayan araçlardır.

Eklenti Yöneticisi Seçimi: vim-plug vs lazy.nvim (Neovim için)

Eklenti yöneticisi seçimi kritik bir karardır. İki ana aday öne çıkar. Klasik tarafta vim-plug, modern tarafta lazy.nvim vardır. İşte detaylı karşılaştırma.

Özellikvim-pluglazy.nvim
Dil DesteğiVimscriptLua dili
Hızlı YüklemeParalel yüklemeTembel yükleme (lazy loading)
ArayüzMinimal komut satırıGörsel kontrol paneli
UyumlulukHem Vim hem NeovimSadece Neovim 0.7+
KilitlemeManuelOtomatik sürüm kilitleme
Öğrenme EğrisiÇok kolayOrta seviye

Eğer klasik Vim kullanıyorsanız vim-plug tek mantıklı seçenektir. Ancak Neovim fork tarafındaysanız lazy.nvim bariz üstünlük sunar. Özellikle başlangıç hızı konusunda fark gece gündüz gibidir.

Adım Adım vim-plug Kurulumu ve Eklenti Ekleme

vim-plug kurulumu son derece basittir. Vim için tek bir dosya indirir ve birkaç satır konfigürasyon eklersiniz. Hemen başlayalım.

Adım 1: Terminalde şu komutu çalıştırın. curl -fLo ~/.vim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim Bu komut gerekli dosyayı indirir.

Adım 2: ~/.vimrc dosyanıza aşağıdaki bloğu ekleyin. call plug#begin('~/.vim/plugged') ile başlayıp call plug#end() ile bitirin. Eklentileri bu iki satır arasına yazın.

Adım 3: :PlugInstall komutu ile tüm eklentileri yükleyin. Güncellemek için :PlugUpdate, silmek için :PlugClean komutlarını kullanırsınız. İşte bu kadar kolay.

LSP (Language Server Protocol) ile Otomatik Tamamlama ve Hata Yakalama

LSP (Language Server Protocol), modern kod editörlerinin bel kemiğidir. Bu protokol sayesinde otomatik tamamlama, hata yakalama, kod navigasyonu gibi özellikler gelir. Vim’i gerçek bir IDE’ye dönüştüren ana unsur budur.

Adım 1: Bir LSP eklentisi kurun. Neovim için neovim/nvim-lspconfig, klasik Vim için yegappan/lsp öneririm. Eklenti yöneticinize ekleyip yükleyin.

Adım 2: Dil sunucularını yükleyin. mason.nvim bu işi otomatikleştirir. :Mason komutu ile görsel bir arayüz açılır. İstediğiniz dil sunucusunu seçip kurarsınız.

Adım 3: Otomatik tamamlama için bir snippet motoru ekleyin. hrsh7th/nvim-cmp en popüler seçenektir. Kaynak olarak LSP, buffer ve path tanımlarsınız. Artık Vim editörde kod yazarken akıllı öneriler alırsınız.

Not
Klasik Vim 9.x sürümünde LSP desteği yerleşik olarak gelir. Ancak Neovim’in Lua dili ile yapılandırılmış LSP desteği daha performanslıdır. İkisi arasında karar verirken bu farkı göz önünde bulundurun.

Dosya Gezgini (NERDTree) ve Fuzzy Finder (fzf/telescope) ile Navigasyonu Hızlandırma

Projeler büyüdükçe dosyalar arasında hızlı gezinmek kritikleşir. NERDTree klasik bir kenar çubuğu dosya gezginidir. Sol tarafta ağaç yapısı sunar. Vim’de dosya açma, taşıma, silme işlemlerini klavyeden yaparsınız.

Ancak asıl hız fuzzy finder araçlarındadır. fzf veya telescope.nvim ile dosya adının bir kısmını yazıp anında sonuca ulaşırsınız. Bu yaklaşım, derin klasör yapılarında inanılmaz zaman kazandırır. Ayrıca ripgrep entegrasyonu ile Vim’de dosya içeriklerinde de arama yaparsınız.

Ben kendi iş akışımda NERDTree’yi neredeyse hiç kullanmıyorum. Bunun yerine telescope.nvim ile bulanık arama yapıyorum.

Üç harf yazıp istediğim dosyaya sıçramak paha biçilmez bir lüks. Hele büyük monorepo yapılarında bu özellik hayat kurtarıcı olur.

Treesitter ile Gelişmiş Sözdizimi Vurgulama ve Kod Anlama

Treesitter, kaynak kodunu yapısal olarak anlayan devrimsel bir araçtır. Basit regex tabanlı sözdizimi vurgulama yerine somut sözdizimi ağacı oluşturur. Bu sayede Vim’de kod katlama, seçme ve vurgulama çok daha isabetli çalışır.

Kurulumu artık çok kolay. nvim-treesitter/nvim-treesitter eklentisini yükleyin. Ardından :TSInstall python javascript rust gibi komutlarla dil parserlarını indirin. Anında farkı görürsünüz.

Özellikle çok dilli projelerde Treesitter’ın değeri ortaya çıkar. Her dilin kendine özgü yapısını doğru analiz eder.

Kod seçimi, hareket ve düzenleme işlemleri Vim’de çok daha akıllı hale gelir. Bu teknoloji olmadan modern bir Vim kurulumu düşünemiyorum artık.

Vim vs. Neovim: 2026’da Hangisini Seçmelisiniz? (Detaylı Karşılaştırma)

Bu karşılaştırma yıllardır sürer. Her iki tarafın da ateşli savunucuları vardır. Ben hem Vim’i hem Neovim’i uzun süre kullandım. Şimdi objektif bir değerlendirme yapacağım.

Klasik Vim, Bram Moolenaar’ın mirasıdır. Stabilite ve gelenek ön plandadır. Neovim ise 2014’te başlayan bir neovim fork hareketidir. Geliştiriciler bu projeyle modernizasyon ve genişletilebilirliği hedefler.

Lua vs Vimscript: Konfigürasyon Dili Farkı

Konfigürasyon dili seçimi sandığınızdan daha önemlidir. Vimscript yıllardır var olan, özgün ama bazen garip bir dildir. Lua dili ise modern, hızlı ve genel amaçlıdır.

KriterVimscriptLua Dili
HızYavaş (büyük config’lerde)Çok hızlı (JIT derlemeli)
ÖğrenmeSadece Vim içinBu araç genel amaçlıdır. Dolayısıyla onu başka yerlerde de kullanırsınız
EkosistemGeniş ama eskiyenHızla büyüyen, modern
Hata AyıklamaZorKolay
EntegrasyonSadece VimNeovim API’si tam erişim

Şahsi görüşüm nettir. Yeni başlıyorsanız kesinlikle Lua dili ve init.lua tarafını seçin. Daha hızlı, daha modern, daha keyifli. Ayrıca öğrendiğiniz Lua bilgisi başka projelerde de işinize yarar.

Yerleşik LSP ve Treesitter: Neovim’in Doğuştan Gelen Güçleri

Neovim’in en büyük avantajı yerleşik özellikleridir. LSP istemcisi çekirdeğe gömülüdür. Treesitter desteği keza öyle. Ek bir katman olmadan, son derece performanslı çalışırlar.

Bu yerleşik destek sayesinde başlangıç süresi dramatik şekilde kısalır. Ayrıca Lua desteği ile yapılandırma hem daha okunaklı hem daha hızlıdır. Büyük eklenti setleri bile saniyeler içinde yüklenir.

Klasik Vim’de ise bu özellikleri sonradan eklersiniz. Çalışırlar elbette ama entegrasyon kalitesi aynı seviyede değildir. Özellikle performans optimizasyonu konusunda Neovim açık ara öndedir.

Uyumluluk, Topluluk ve Gelecek: Hangi Yola Yatırım Yapmalısınız?

Uyumluluk konusunda klasik Vim kazanır. Her Unix sistemde kuruludur. Herhangi bir sunucuya bağlandığınızda Vim oradadır. Neovim ise ayrıca kurulum gerektirir.

Ancak gelecek perspektifinden bakarsak tablo değişir. Neovim topluluğu çok daha aktif ve yenilikçidir. Yeni özellikler önce buraya gelir. Klasik Vim daha muhafazakardır.

Benim tavsiyem şudur. Günlük geliştirme için Neovim kullanın. Uzak sunucu bağlantıları için klasik Vim komutlarını bilin. Zaten temel tuş kombinasyonları aynıdır. İkisini birden öğrenmek ek bir yük getirmez.

Türkçe Klavye Kullanıcıları İçin Vim İpuçları (Özel Karakter Sorunlarına Çözümler)

Türkçe Q klavye ile Vim kullanmak başlangıçta eziyet gibi gelir. Özel karakterler farklı yerlerdedir. Ancak birkaç akıllı ayarla Vim’de bu sorunu kökten çözersiniz.

Yıllarca Türkçe klavye ile Vim’de kod yazdım. İngilizce klavyeye geçmek zorunda değilsiniz. Sadece doğru konfigürasyonu yapmanız gerekir. İşte size yılların tecrübesiyle harmanlanmış çözümler.

Türkçe Q Klavyede Özel Karakter Sorunu: /, \, |, #, {, }, [, ], ~ Tuşları

Türkçe Q klavyede en büyük sorun özel karakterlerin yer değiştirmesidir. Bu durum özellikle Vim’de kod yazarken can sıkıcı olur. İşte sorunlu karakterler ve çözümleri.

  • / ve \: Türkçe klavyede Shift+7 ve AltGr+?, ile yazılır. Arama ve dosya yolu için kritiktir. Vim’de :nmap ç / ile ç tuşunu / olarak eşleştirebilirsiniz.
  • | (Pipe): Türkçe klavyede AltGr+-, ile yazılır. Çok sık kullanılan bir karakterdir. Vim’de terminal komutlarında vazgeçilmezdir.
  • { }, [ ]: Türkçe klavyede AltGr+7/0 ve AltGr+8/9 kombinasyonlarıdır. Kod blokları için sürekli ihtiyaç duyarsınız.
  • ~ (Tilde): Türkçe klavyede AltGr+ü ile yazılır. Home dizini ve bitwise operatörler için gereklidir.
Dikkat
Bu özel karakter sorunları özellikle sunucu yönetimi için Vim kullanırken kritik hale gelir. Yanlış bir karakter tüm komutu bozabilir. Bu nedenle sunucu yönetimi sırasında Vim’de klavye düzeninizden emin olun.

langmap veya keymap ile Vim Komutlarını Türkçe Klavyede Çalışır Hale Getirme

En temiz çözüm langmap kullanmaktır. Bu özellik, belirli tuşları otomatik olarak eşleştirir. Siz Türkçe tuşa basarsınız, Vim onu İngilizce karşılığı olarak algılar.

" Türkçe Q klavye için langmap ayarı
set langmap=ç\/,ğ\;,ı\.,ö\',ş\[,ü\],Ğ\:,İ\<,Ö\",Ş\{,Ü\}
" Alternatif olarak keymap kullanımı
set keymap=turkish-q
" Insert modda Ctrl+^ ile klavye düzeni değiştirme
inoremap <C-^> <C-^>

Bu ayarları .vimrc dosyanıza ekleyin. Artık ç tuşuna bastığınızda Vim onu / olarak algılar. ş tuşu [ olur. Böylece tüm kısayollar sorunsuz çalışır. Türkçe klavye ile Vim’de kod yazmak artık keyifli hale gelir.

Vim ile Verimlilik Artırma: Splits, Tamponlar, Sekmeler ve Pencere Yönetimi

Çoklu dosya düzenleme Vim’in en güçlü yönlerinden biridir. Aynı anda onlarca dosyayı açıp aralarında ışık hızında geçiş yaparsınız. Modern IDE’lerin sekme sisteminden çok daha verimlidir.

Ben büyük projelerde çalışırken genelde 15-20 dosyayı aynı anda açarım. Hepsi anında erişilebilirdir. Bellek kullanımı ise şaşırtıcı derecede düşüktür.

Yatay ve Dikey Bölmeler (Splits) ile Aynı Anda Birden Çok Dosya Görüntüleme

Pencere bölme özelliği ekran alanınızı verimli kullanmanızı sağlar. Aynı anda iki, üç hatta dört dosyayı yan yana görebilirsiniz. Referans koda bakarken yeni kod yazmak için idealdir.

Adım 1: :split dosya.py veya kısaca :sp dosya.py yatay bölme açar. Alt pencereye belirttiğiniz dosya yüklenir.

Adım 2: :vsplit dosya.js veya :vs dosya.js dikey bölme oluşturur. Sağ tarafa yeni dosya açarsınız.

Adım 3: Pencereler arası gezinmek için Ctrl+w h/j/k/l kombinasyonlarını kullanırsınız. Ctrl+w w ile sonraki pencereye atlarsınız. Pencere boyutlandırma için Ctrl+w + ve Ctrl+w - işinizi görür.

Tamponlar (Buffers): Açık Dosyalar Arasında Hızlı Geçiş

Tampon bölge kavramı, açık dosyaların bellekteki temsilidir. Vim’de her açtığınız dosya bir tampon olur. Görünür olmasa bile arka planda durur. İstediğiniz zaman anında erişirsiniz.

:ls komutu Vim’de tüm açık tamponları listeler. Her birinin bir numarası vardır. :b 3 yazarak 3 numaralı tampona anında geçersiniz. :b dosya_adı kısmi eşleşme ile de çalışır.

Daha da hızlısı :bnext ve :bprev komutlarıdır. Bunları kısayol tuşlarına bağlarsanız Vim’de tek tuşla tamponlar arası dolaşırsınız. Ben Ctrl+n ve Ctrl+p eşleştirmesini kullanıyorum. Bu sayede hiç duraksamadan geçiş yapıyorum.

Sekmeler (Tabs): Farklı Çalışma Alanları Oluşturma

Sekmeler, farklı düzenleri gruplandırmanın yoludur. Her sekme kendi pencere bölme düzenine sahiptir. Bir sekmede frontend dosyalarını, diğerinde backend kodlarını tutabilirsiniz.

:tabnew dosya.py yeni sekme açar. :tabnext veya gt sonraki sekmeye geçer. :tabprev veya gT öncekine döner. :tabclose aktif sekmeyi kapatır.

Sekmeleri çok sık kullanmam şahsen. Vim’de tampon yönetimi bana genelde yeterli geliyor. Ancak çok farklı bağlamlar arasında geçiş yapıyorsanız sekmeler düzen sağlar. Özellikle full-stack geliştirmede kullanışlıdır.

Vim’de Arama ve Değiştirme Gücü: Düzenli İfadeler (Regex) ve Global Komutlar

Arama ve değiştirme yetenekleri Vim’i metin işleme canavarı yapar. Basit bir bul-değiştir işlemi bile Vim’de çok katmanlıdır. Düzenli ifadelerle birleşince ortaya sihir çıkar.

Yıllar içinde yüzlerce gigabyte log dosyası analiz ettim. Vim her seferinde beni yarı yolda bırakmadı. İşte size sahada test edilmiş teknikler.

Temel Arama: /, ?, *, # ve Arama Sonuçlarında Gezinme

Arama işlevselliği son derece zengindir. Sadece kelime bulmakla kalmaz, desenleri de yakalarsınız. Üstelik Vim tüm bunları anlık ve etkileşimli yapar.

  • /kelime: İleri doğru arama yapar. Yazarken anlık vurgulama görürsünüz. Enter ile ilk sonuca atlarsınız.
  • ?kelime: Geriye doğru arama başlatır. Dosyanın sonundan başa doğru tarar.
  • * ve #: İmlecin altındaki kelimeyi ileri/geri arar. Vim’de en sık kullandığım kısayollardandır.
  • n ve N: Sonraki ve önceki arama sonucuna gider. Aramayı tekrar yazmanız gerekmez.

Arama sonuçlarını temizlemek için :nohlsearch komutunu kullanırsınız. Veya :noh kısaltmasıyla hızlıca vurgulamayı kaldırırsınız. Bu küçük detaylar Vim’de iş akışınızı hızlandırır.

:s ve :%s ile Değiştirme (Substitute) Komutunun Tüm Gücü

Değiştirme komutu adeta bir İsviçre çakısıdır. Basit metin değişiminden karmaşık regex operasyonlarına kadar her şeyi yapar. İşte Vim’de adım adım kullanım kılavuzu.

Adım 1: Temel formül :s/eski/yeni/ şeklindedir. Bu komut sadece imlecin bulunduğu satırdaki ilk eşleşmeyi değiştirir.

Adım 2: Tüm satırdaki eşleşmeler için :s/eski/yeni/g kullanın. g bayrağı global anlamına gelir. Satırdaki tüm eşleşmeleri değiştirir.

Adım 3: Tüm dosyadaki değişiklikler için :%s/eski/yeni/g yazın. % işareti tüm satırları kapsar. gc bayrağı ekleyerek her değişiklikte onay isteyebilirsiniz.

:g ile Desene Göre Satırlarda Toplu İşlem (Global Komut)

Global komut benzersiz bir güçtür. Belirli bir desene uyan satırlarda toplu işlem yapmanızı sağlar. Bu özellik Vim’de log analizi ve veri temizleme için mükemmeldir.

Adım 1: Temel yapı :g/desen/komut şeklindedir. Desene uyan tüm satırlarda belirtilen komutu çalıştırır.

Adım 2: Örneğin :g/DEBUG/d komutu DEBUG içeren tüm satırları siler. Büyük log dosyalarında gereksiz satırlardan kurtulmak için birebirdir.

Adım 3: Daha karmaşık işlemler için :g/desen/normal @a yapısını kullanın. Bu, desene uyan her satırda a makrosunu oynatır. Binlerce satırda aynı düzenlemeyi saniyeler içinde yaparsınız.

Vim ile Git: Fugitive Eklentisi ve Sürüm Kontrolü Entegrasyonu

Sürüm kontrolü entegrasyonu modern geliştirme için şarttır. Fugitive eklentisi bu konuda rakipsizdir. Tim Pope tarafından yazılan bu harika, Git işlemlerini Vim’in kalbine taşır.

Terminal ile editör arasında gidip gelmek zorunda kalmazsınız. Commit, push, diff, blame gibi tüm işlemleri Vim’den yaparsınız. Böylece bu entegrasyon sayesinde bağlam değiştirme maliyetini sıfırlarsınız.

Fugitive Kurulumu ve Temel Komutlar: :Gstatus, :Gcommit, :Gpush

Kurulum vim-plug ile tek satırdır. Plug 'tpope/vim-fugitive' satırını ekleyip :PlugInstall çalıştırmanız yeterlidir. Şimdi Vim’de temel komutlara bakalım.

Adım 1: :Gstatus komutu Git durum penceresini açar. Burada değişen dosyaları görürsünüz. - tuşu ile dosyaları stage eder veya unstaged yaparsınız.

Adım 2: :Gcommit ile commit mesajı yazma ekranına geçersiniz. Mesajınızı yazıp :wq ile kaydedip çıkın. Yani Commit tamamlarsınız.

Adım 3: :Gpush ve :Gpull ile uzak depoya gönderip çekersiniz. Tüm bu işlemler Vim’de tek bir ekranda, klavyeden elleriniz ayrılmadan gerçekleşir.

:Gdiff ile Değişiklikleri Karşılaştırma ve :Gblame ile Satır Tarihçesi

:Gdiff komutu çalışma dizininiz ile HEAD arasındaki farkları gösterir. Yatay bölünmüş pencerede değişiklikleri satır satır görürsünüz. Hangi değişikliği keep edeceğinize karar vermek çok kolaylaşır.

Öte yandan :Gblame komutu her satırın geçmişini gözler önüne serer. Hangi commit’te, kim tarafından, ne zaman değiştirildiğini anında görürsünüz. Bu özellik hata ayıklama sırasında paha biçilmezdir.

Ben özellikle eski kodları incelerken Vim’de blame komutunu sık kullanırım. Bir satırın neden öyle yazıldığını anlamak için commit mesajına bakarım. Çoğu zaman tarihsel bağlamı çözmek sorunu çözmekten daha zordur.

:Glog ve :Gedit ile Commit Geçmişinde Gezinme

:Glog komutu commit geçmişini hızlıca listeler. Belirli bir dosyanın tüm geçmiş sürümlerini görmek için birebirdir. Listeden bir commit seçip :Gedit SHA ile o ana ait dosya halini açarsınız.

Bu özellik sayesinde kodun evrimini adım adım izlersiniz. Bir hatanın ne zaman eklendiğini bulmak çocuk oyuncağı haline gelir. Ayrıca :Glog -- ile sadece mevcut dosyanın geçmişini filtrelemek de mümkündür.

Tüm bu Git entegrasyonu, terminalde ayrı komutlar yazmaktan katbekat hızlıdır. Bağlam değiştirmeden, Vim’de aynı pencerede tüm versiyon kontrol işlerini halletmek verimliliği zirveye taşır.

Vim Performans Optimizasyonu: Büyük Dosyalar, Log Analizi ve Yavaşlık Sorunları

Her şey yolunda giderken devasa bir log dosyası açarsınız. Vim aniden yavaşlar, takılır, hatta çöker. Bu bölüm tam da bu sorunların çözümü için var.

Yıllarca sunucu loglarını Vim’de analiz ettim. 500 MB’lık dosyaları bile akıcı şekilde düzenledim. Doğru ayarlarla Vim inanılmaz performans sunar. İşte optimizasyon sırları.

Büyük Dosyalar için Vim’i Hafifletme: -u NONE, syntax off, diğer ayarlar

Büyük dosyaları açarken tüm özellikleri kapatmak en akıllıca yoldur. Sözdizimi vurgulama, eklentiler ve otomatik komutlar büyük dosyalarda ciddi yavaşlık yaratır.

  • vim -u NONE dosya.log: Hiçbir konfigürasyon olmadan başlatır. En saf ve hızlı halidir.
  • :syntax off: Sözdizimi vurgulamayı kapatır. Büyük dosyalarda en büyük yavaşlık kaynağı budur.
  • :set synmaxcol=0: Uzun satırlarda sözdizimi analizini sınırlar.
  • :set lazyredraw: Makro oynatırken ekran yenilemeyi atlar. Ciddi hız kazandırır.
  • :set nofoldenable: Kod katlama özelliğini kapatır. Bellek kullanımını düşürür.
Uyarı
Büyük dosyalarda set swapfile ve set undofile ayarlarını da kapatın. Bu özellikler disk yazma işlemleri nedeniyle ciddi yavaşlamaya yol açar. Vim’i vim -n ile swap dosyası olmadan başlatabilirsiniz.

Log Dosyalarında Hızlı Arama ve Filtreleme Teknikleri

Log dosyası analizi ayrı bir sanattır. Milyonlarca satır arasında anlamlı veriyi bulmak için doğru teknikleri bilmeniz gerekir. İşte Vim’de sahada test edilmiş adımlar.

Adım 1: Dosyayı açmadan önce vim -R buyuk.log ile salt okunur modda açın. Yanlışlıkla değişiklik yapma riskini ortadan kaldırırsınız.

Adım 2: :g/ERROR/p komutu ile sadece hata satırlarını listeleyin. Veya :v/DEBUG/d ile DEBUG satırları hariç her şeyi silin.

Adım 3: Ctrl+v ile blok seçim yapıp gereksiz sütunları topluca silin. Log formatı genelde sabit sütunludur. Bu yöntemle sadece ihtiyacınız olan veriyi bırakırsınız.

Vim Ekolojisi: Kaynaklar, Topluluk ve Öğrenme Yol Haritası

Öğrenme yolculuğu yalnız geçmez. Neyse ki Vim’in arkasında devasa bir topluluk vardır. Ücretsiz kaynaklar, kitaplar, video eğitimler ve interaktif araçlar boldur.

Ben kendi Vim yolculuğumda birçok kaynaktan beslendim. Şimdi en değerli bulduklarımı sizinle paylaşacağım. Bu yol haritası ile sıfırdan uzmanlığa giden yolu kısaltacaksınız.

En İyi Ücretsiz Kaynaklar: vimtutor, :help, Vim Genius, Open Vim

Ücretsiz kaynaklar inanılmaz kalitelidir. Hiç para harcamadan Vim’de uzmanlaşabilirsiniz. İşte mutlaka denemeniz gerekenler.

  • vimtutor: Terminalde bu komutu yazın. 30 dakikalık interaktif bir eğitim başlar. Vim’in temel komutlarının çoğunu uygulamalı öğretir. İlk gün mutlaka tamamlayın.
  • :help: Dahili yardım sistemi ansiklopedi gibidir. :help usr_01.txt ile Vim kullanıcı kılavuzuna ulaşırsınız. Arama için :help konu yeterlidir.
  • Vim Genius: Web tabanlı interaktif bir oyundur. Seviye seviye ilerler, Vim komutlarını pratik ettirir.
  • Open Vim: Tarayıcıda çalışan bir Vim simülatörüdür. Kurulum yapmadan Vim deneyimleme şansı verir.

Önerilen Kitaplar ve YouTube Kanalları (Türkçe ve İngilizce)

Daha derinlemesine öğrenmek isteyenler için kitap ve video kaynakları da mevcuttur. İşte Vim için en değerlileri.

  • Practical Vim (Drew Neil): Bu kitap bir başyapıttır. Yazar bu metni ipucu formatında hazırladı. Her sayfada yeni bir şey öğrenirsiniz.
  • Modern Vim (Drew Neil): Eklentiler ve modern iş akışlarına odaklanır. Neovim çağına uyumludur.
  • ThePrimeagen (YouTube): Enerjik ve eğlenceli anlatımıyla Vim konusunda bir fenomendir. Günlük iş akışı videoları ilham vericidir.
  • DistroTube (YouTube): Unix felsefesi ve terminal yaşam tarzı üzerine içerikler üretir. Türkçe altyazı seçeneği genelde mevcuttur.

Sıfırdan İleri Seviyeye Vim Öğrenme Yol Haritası (Zaman Planı ile)

Planlı öğrenme her zaman daha verimlidir. İşte size 12 haftalık bir yol haritası. Bu planı uygulayarak Vim’de sıfırdan ileri seviyeye ulaşabilirsiniz.

  • 1. Hafta: vimtutor ile temel hareket ve düzenleme. Her gün 15 dakika pratik. Sadece h j k l i Esc :w :q komutlarını öğrenin.
  • 2-3. Hafta: Normal mod komutlarında ustalaşma. w b e 0 $ gg G dd yy p gibi temel hareket ve düzenleme. Günlük 20 dakika.
  • 4-5. Hafta: Visual mod ve metin nesneleri. ciw da( yap ci" gibi kombinasyonlar. Kendi .vimrc dosyanızı oluşturma.
  • 6-8. Hafta: Makrolar, registerlar ve arama-değiştirme. q @ :%s :g komutlarında derinleşme.
  • 9-10. Hafta: Eklenti ekosistemi. vim-plug veya lazy.nvim kurulumu. NERDTree, fzf, tema kurulumu.
  • 11-12. Hafta: LSP, Treesitter ve Fugitive entegrasyonu. Tam IDE deneyimi. Kendi dotfiles reponuzu oluşturma.

Vim ile Verimlilik Artırma: Splits, Tamponlar, Sekmeler ve Pencere Yönetimi

Bu başlığı daha önce ele aldık. Şimdi biraz daha derine inelim. Çünkü Vim’de çoklu dosya yönetimi, profesyonel kullanımın temel taşıdır.

Ustalaştıkça fark edeceğiniz şey şudur. Fare kullanmama ergonomisi bilek sağlığınızı korur. Ayrıca Vim’de işlem hızınız gözle görülür şekilde artar.

Yatay ve Dikey Bölmeler (Splits) ile Aynı Anda Birden Çok Dosya Görüntüleme

Pencere bölme özelliği Vim’in en güçlü taraflarındandır. Aynı dosyayı iki farklı yerden görüntüleyebilirsiniz. Veya tamamen farklı dosyaları yan yana açabilirsiniz.

Adım 1: Ctrl+w s mevcut pencereyi yatay böler. Aynı dosya her iki pencerede de görünür.

Adım 2: Ctrl+w v dikey bölme oluşturur. Yan yana iki dosya görürsünüz.

Adım 3: Ctrl+w q aktif pencereyi kapatır. Ctrl+w o ise diğer tüm pencereleri kapatıp sadece aktif olanı bırakır.

Tamponlar (Buffers): Açık Dosyalar Arasında Hızlı Geçiş

Tampon yönetimi akıcı bir iş akışı için şarttır. Vim’de her dosya bir tampon olarak bellekte durur. Aralarında geçiş yapmak için birçok yol vardır.

:buffers veya kısaca :ls tüm tamponları listeler. :bdelete veya :bd tampon kapatır. :bnext ve :bprev sırayla gezinir.

Ben :b komutuna kısmi dosya adı yazarak geçiş yaparım. Örneğin :b conf yazdığımda config dosyasına anında atlar. Bu yöntem Vim’de sekme kullanmaktan çok daha hızlıdır.

Sekmeler (Tabs): Farklı Çalışma Alanları Oluşturma

Sekmeler, pencere düzenlerini gruplandırır. Her sekme bağımsız bir çalışma alanı gibidir. Birinde kod yazarken diğerinde test sonuçlarını incelersiniz.

:tabedit dosya.py veya :tabe dosya.py yeni sekmede dosya açar. gt ve gT ile sekmeler arası geçiş yaparsınız. :tabm 0 sekmeyi en başa taşır.

Şahsen sekmelerden çok tamponları kullanıyorum. Ancak bu tamamen kişisel tercih meselesidir. Vim’de her iki yöntemi de bilmek cephanenizi genişletir.

Vim Arama ve Değiştirme Gücü: Düzenli İfadeler (Regex) ve Global Komutlar

Arama ve değiştirme konusuna derinlemesine daldık. Şimdi birkaç ileri düzey tekniği daha paylaşacağım. Çünkü bu özellikler Vim’de günlük hayatta inanılmaz zaman kazandırır.

Düzenli ifadelerle birleşen değiştirme komutları sınırsız güç sunar. Karmaşık metin dönüşümlerini Vim’de saniyeler içinde yaparsınız.

Temel Arama: /, ?, *, # ve Arama Sonuçlarında Gezinme

Arama özelliklerini daha önce detaylandırdık. Ek olarak :set hlsearch ve :set incsearch ayarlarını mutlaka aktif edin. Bu iki ayar Vim editör arama deneyimini tamamen değiştirir.

  • Arama vurgulama: :set hlsearch ile tüm eşleşmeler vurgulanır. :nohl ile geçici olarak kaldırabilirsiniz.
  • Anlık arama: :set incsearch yazarken anında sonuçları gösterir. Doğru kelimeyi bulmak kolaylaşır.
  • Büyük/küçük harf: :set ignorecase smartcase kombinasyonu akıllı davranır. Küçük harfle ararsanız duyarsız, büyük harf varsa duyarlı olur.

:s ve :%s ile Değiştirme (Substitute) Komutunun Tüm Gücü

Değiştirme komutunun inceliklerini keşfedelim. Regex grupları ve özel karakterler ile Vim’de neler yapabileceğinizi görelim.

Adım 1: Grup yakalama için \( \) kullanın. :%s/\(foo\)\(bar\)/\2\1/g komutu foobar’ı barfoo yapar.

Adım 2: Özel karakterler için \v (very magic) modunu kullanın. Bu modda parantezleri escape etmek gerekmez. :%s/\v(foo)(bar)/\2\1/g daha okunaklıdır.

Adım 3: Onaylı değiştirme için c bayrağını ekleyin. :%s/eski/yeni/gc her eşleşme için onay sorar. y evet, n hayır, q iptal, a kalanları otomatik onaylar.

:g ile Desene Göre Satırlarda Toplu İşlem (Global Komut)

Global komutun tersi :v komutudur. Desene uymayan satırlarda işlem yapar. Bu ikili Vim’de birlikte çok güçlüdür.

Adım 1: :g/pattern/m$ desene uyan satırları dosyanın sonuna taşır. Veri sıralama için idealdir.

Adım 2: :g/^$/d boş satırları siler. Kod temizliğinde sık sık kullanabilirsiniz.

Adım 3: :g/pattern/t$ desene uyan satırları kopyalayıp sona ekler. Böylece eşleşen satırlardan yeni bir liste oluşturursunuz.

Vim Editörü İçin İleri Okuma Kaynakları

Bu rehberde paylaştıklarım buzdağının sadece görünen kısmıdır. Daha derine inmek isteyenler için seçkin kaynaklar öneriyorum. Her biri alanında otorite kabul edilen referanslardır.

  • Resmi Vim Dokümantasyonu, her seviyeden kullanıcı için nihai başvuru kaynağıdır. :help sisteminin çevrimiçi halidir. Sürekli güncellenir ve Bram Moolenaar’ın doğrudan katkılarıyla şekillenir.
  • Neovim Resmi Belgeleri, Lua API’si ve yerleşik LSP desteği dahil tüm modern özellikleri kapsar. Neovim tarafına geçiş yapmayı düşünüyorsanız başlangıç noktanız burasıdır.
  • fzf-lua GitHub Deposu, modern fuzzy finder entegrasyonu için en güncel referanstır. Performans odaklı yapısıyla büyük projelerde dahi akıcı çalışır.

Vim Hakkında En Çok Sorulan 10 Soru

Vim’den nasıl çıkılır? Dosyayı kaydetmeden veya kaydederek çıkma komutları nelerdir?

İlk karşılaşmada herkesin paniklediği o meşhur anı konuşalım. Sizi hemen rahatlatayım, yalnız değilsiniz. Çıkış için önce Esc tuşuna birkaç kez basarak Normal moda dönersiniz.
Ardından yapmak istediğiniz işleme göre farklı komutlar girersiniz. Kaydedip çıkmak için :wq yazıp Enter’a basarsınız. Bu kombinasyon en sık kullanılan çıkış yöntemidir.
Sadece kaydetmeden zorla çıkmak istiyorsanız :q! komutu imdadınıza yetişir. Yaptığınız değişiklikler silinir, eski dosyayla yolunuza devam edersiniz. Dosyayı kaydedip çıkmadan kalmak isterseniz :w ile kaydeder, sonra işlemlere dönersiniz. Bu dört komut ilk günün kurtarıcılarıdır.

Vim’de kaç mod vardır ve bu modlar arasında nasıl geçiş yapılır?

Bu sorunun cevabı editörün can damarına dokunur. Temelde dört ana modla çalışırsınız. Normal mod, varsayılan kiptir. Insert mod yazma alanıdır. Visual mod seçim yapar. Command-line mod ise komutları işler.
Normal moda Esc tuşuyla her an dönebilirsiniz. Insert moda i, a veya o tuşlarıyla geçersiniz. Ben özellikle satır sonuna ekleme yaparken büyük A tuşuna bayılırım.
Visual modu v ile başlatırsınız. Command-line mod içinse : tuşu yeterlidir. Bu geçişleri otomatik hale getirdiğinizde parmaklarınız klavyeden hiç ayrılmaz. Bu ergonomi, gün sonunda omuz ağrılarınızı bile azaltır.

Vim öğrenmek ne kadar zaman alır? Başlangıç için en iyi kaynak nedir?

Çoğu kişi bu soruyu sorar. Dürüst olayım, temel seviye iki hafta içinde oturur. Her gün 20 dakika pratik yaparsanız, bir ay sonra eski editörünüzü aratmaz hale gelirsiniz.
İleri seviye ustalık ise birkaç ay sürebilir. Fakat her aşamada yeni bir süper güç kazanırsınız. Başlangıç için en iyi kaynak terminalde çalışan vimtutor komutudur. Etkileşimli bir ders sunar, hemen pratik yaparsınız.
Bunun dışında Drew Neil’in Practical Vim kitabı harikadır. YouTube’da ThePrimeagen kanalı da enerjik ve öğreticidir. Kaynağı seçip hemen bugün başlamanızı öneririm. Öğrendikçe metin düzenleme keyfine varacaksınız.

Vim ile Nano arasındaki temel farklar nelerdir? Hangisi yeni başlayanlar için daha uygundur?

İkisi de terminal editörüdür ancak felsefeleri tamamen ayrışır. Nano, açtığınız anda yazmaya başladığınız basit bir araçtır. Tüm kısayollar ekranın altında yazılıdır, öğrenme süresi sıfırdır.
Bu editör ise modlu bir yapı sunar. Açılışta yazı yazamazsınız, bu da yeni kullanıcıları şaşırtır. Fakat sunduğu metin nesneleri, makrolar ve özelleştirme gücü karşısında Nano’nun yetenekleri oldukça sınırlı kalır.
Yeni başlayanlar için Nano daha az korkutucudur. Ancak uzun vadede hız ve konfor arıyorsanız, modlu editörü öğrenmeye zaman ayırın. Nano’da 10 tuşla yapacağınız işi burada 2 tuşla halletmek mümkündür. Tercih sizin, ben şahsen emeğe değer diyorum.

Vim’de yaptığım değişikliği geri almak (undo) ve ileri almak (redo) için hangi tuşları kullanmalıyım?

Hatalar en iyi öğretmendir. Neyse ki bu editörde geri dönmek çok kolay. Normal modda u tuşuna basarak son işleminizi geri alırsınız. Buna basmaya devam ettikçe geçmişe doğru yolculuğunuz sürer.
Yanlışlıkla geri aldığınız bir adımı ileri sarmak isterseniz Ctrl+r kombinasyonunu kullanırsınız. Bu ikili, düzenleme sırasında size büyük bir güven verir.
Bir satırı silip hemen geri getirmek, hatta beş adım öncesine dönüp oradan devam etmek saniyeler alır. Bu özellik özellikle deneysel refactoring yaparken hayat kurtarır. Korkmadan değişiklik yapın, u ve Ctrl+r her zaman yanınızda.

Vim ile aynı anda birden fazla dosya nasıl düzenlenir? Pencere bölme ve dosyalar arası geçiş komutları nelerdir?

Tek bir terminalde çoklu dosya keyfi budur. Ekranı yatay bölmek için :split, dikey bölmek içinse :vsplit komutunu kullanırsınız. Hemen ardından :e dosya_adı ile yeni bir dosya açabilirsiniz.
Pencereler arasında Ctrl+w ve yön tuşlarıyla geçiş yaparsınız. Ctrl+w sonra h ile sola, l ile sağa atlarsınız. Ben bu kısayolu o kadar sık kullanırım ki parmaklarım otomatik hareket eder.
Bir dosyada değişiklik yapıp diğerine kopyalamak inanılmaz hızlanır. Buffer listesiyle :bn ve :bp kullanarak açık dosyalar arasında sekme mantığıyla dolaşırsınız. tmux ile birleşince ortaya tam bir terminal stüdyosu çıkar.

Vim içinde terminal komutlarını çalıştırabilir miyim? :! ve :sh komutları ne işe yarar?

Editörünüzden çıkmadan sistemle konuşmak büyük nimettir. :! ile başlayan her komut doğrudan terminale gönderilir. Mesela :!ls yazdığınızda bulunduğunuz dizindeki dosyalar listelenir. İşiniz bitince Enter ile editöre dönersiniz.
:sh komutu ise sizi geçici bir alt kabuğa düşürür. Burada dilediğiniz kadar komut çalıştırır, işiniz bitince exit yazarak geri dönersiniz. Günlük iş akışında bu iki özellik sıkça kurtarıcı olur.
Ben özellikle log analizi yaparken :!grep ile hızlı filtreleme yapar, sonuçları hemen tampona çekerim. Kod yazarken derleme, test çalıştırma gibi işlemleri de editörden ayrılmadan hallederim. Konser salonunu terk etmeden sahne arkasına uğramak gibidir.

Vim’de kendi kısayol tuşlarımı nasıl oluşturabilirim? .vimrc dosyasına örnek bir mapping nasıl eklenir?

Kendi kısayollarınızı yaratmak editörü eviniz yapmanın ilk adımıdır. Yapılandırma dosyanızda nnoremap komutuyla Normal mod için yeni tuş atamaları yaparsınız. Örneğin nnoremap w :w satırı, lider tuşu ve w ile dosyayı kaydeder.
Insert mod içinse inoremap kullanırsınız. Ben jj tuşuna basınca Esc işlevi görmesi için inoremap jj eklerim. Bu küçük dokunuş, mod geçişlerini inanılmaz hızlandırır.
Örnek bir ekleme şöyledir: ” Hızlı kaydetme nnoremap :w ” Pencere geçişi nnoremap h. Bu satırları .vimrc dosyanıza koyup kaydettikten sonra :source $MYVIMRC ile aktif edersiniz. Artık editör tamamen sizin kurallarınızla çalışır.

Vim’de makro kaydetmek ve oynatmak nasıl yapılır? Tekrarlayan işlemleri nasıl otomatikleştirebilirim?

Makrolar işin sihirli değneğidir. Normal modda q ve ardından bir harf (mesela a) tuşlayarak kayda başlarsınız. Ekranda “recording @a” yazısını gördüğünüz an yapacağınız her işlem hafızaya alınır.
İşlemler bittiğinde tekrar q ile kaydı durdurursunuz. Artık @a yazarak o seriyi bir kez, 10@a yazarak on kez oynatırsınız. Bu yöntemle yüzlerce satırı saniyeler içinde yeniden yapılandırabilirsiniz.
Geçen hafta bir JSON dosyasının her satırına aynı üç düzenlemeyi yapmam gerekiyordu. Bir makro kaydettim ve 2000@q ile tüm işi 15 saniyede bitirdim. Manuel yapsam en az iki saat sürerdi. Tekrarlayan her iş için bu yöntemi kullanın, parmaklarınız size dua edecek.

Vim’in eklenti yöneticileri nelerdir? vim-plug ile ilk eklentimi nasıl kurarım?

Eklenti yöneticileri bu düzenleyiciyi tam teşekküllü bir IDE’ye dönüştürür. En popülerleri vim-plug, Vundle ve Pathogen’dir. Ben yıllardır vim-plug kullanırım, son derece hızlı ve paralel kurulum yapar. Ayrıca yapılandırması çok basittir.
Kurmak için terminalde tek bir curl komutu çalıştırmanız yeterli. Bu, plug.vim dosyasını doğru dizine indirir. Sonrasında .vimrc dosyanıza call plug#begin() ve call plug#end() blokları arasına istediğiniz eklentileri yazarsınız.
İlk eklenti olarak NERDTree’yi öneririm. plug ‘preservim/nerdtree’ satırını ekleyip :PlugInstall komutunu verdiğinizde dosya gezgini hazır olur. Bu andan itibaren renk temaları, dil sunucuları, statü çubukları derken ekosistem sizi içine çeker. Bağımlılık yapar, şimdiden uyarayım.

Sonuç: Vim Öğrenmek Bir Yatırımdır

Bu uzun yolculuğun sonuna geldik. Artık temel bilgiden ileri düzey tekniklere kadar geniş bir yelpazeyi gördünüz. Şimdi karar zamanı.

Vim öğrenmek gerçekten bir yatırımdır. İlk haftalar zorlayıcı olabilir. Ancak sonrasında kazandığınız hız ve verimlilik her şeye değer.

Hemen bugün vimtutor komutu ile başlayın. Her gün on beş dakika ayırın. İki hafta içinde temel seviyeye ulaşırsınız. Üç ay sonra eski editörünüze dönüp bakmak bile istemezsiniz.

Unutmayın, her usta bir zamanlar acemiydi. İlk gün Vim’den çıkamama travmasını herkes yaşadı. Siz de yaşayacaksınız, bu normal. Yeter ki pes etmeyin. Çünkü Vim öğrenildiğinde, metinler üzerinde adeta sihir yapmanızı sağlar.

Yolunuz açık olsun. Klavyenizden elleriniz hiç ayrılmasın.

Bu Rehberi Keşfettikleri İçin Sana Teşekkür Edecekler!

Sadece bir tıkla sevdiklerine dev bir iyilik yapmaya hazır mısın? Bilgi paylaştıkça devleşir.

İlk yorumu sen paylaş