Linux’ta Metin Editörleri: Vim ve Nano Temel Kullanımı

Terminal açtığınızda karşınıza çıkan ilk gerçek sınavlardan biri, bir dosyayı düzenlemek istediğinizde hangi editörü kullanacağınızı bilmektir. Uzak bir sunucuya SSH ile bağlandınız, bir config dosyasını düzenlemeniz gerekiyor ve elinizde sadece terminal var. İşte bu noktada vim ya da nano devreye giriyor. Her ikisi de terminalde çalışan metin editörleri olsa da karakterleri, kullanım felsefeleri ve öğrenme eğrileri birbirinden oldukça farklı. Bu yazıda her ikisini de gerçek dünya senaryolarıyla ele alacağız.

Nano: Başlangıç Dostu Editör

Nano, “Ben sadece bu dosyayı düzenlemek istiyorum, felsefe yapmak değil” diyenlerin editörü. Açtığınız anda ekranın altında kısayolları görürsünüz, komut moduna geçmenize gerek yoktur, yazmaya başlarsınız.

Nano Nasıl Kurulur ve Açılır

Çoğu Linux dağıtımında nano önceden kurulu gelir. Eğer yoksa:

# Debian/Ubuntu
sudo apt install nano

# RHEL/CentOS/Rocky Linux
sudo dnf install nano

# Arch Linux
sudo pacman -S nano

Bir dosyayı açmak için:

nano /etc/hosts
nano ~/.bashrc
nano /etc/nginx/nginx.conf

Dosya mevcut değilse nano onu oluşturur. Bu küçük ama kullanışlı bir özellik.

Nano Temel Kısayolları

Nano’da kısayollar ^ (Ctrl) ve M- (Alt veya Escape) ile gösterilir. Ekranın alt kısmında sürekli görünürler.

  • Ctrl+O: Dosyayı kaydet (Write Out)
  • Ctrl+X: Nano’dan çık (kaydetmeden çıkarsa sorar)
  • Ctrl+K: Mevcut satırı kes
  • Ctrl+U: Kesilen satırı yapıştır
  • Ctrl+W: Metin ara
  • Ctrl+: Metin ara ve değiştir (replace)
  • Ctrl+G: Yardım menüsünü aç
  • Ctrl+C: Mevcut imleç pozisyonunu göster
  • Alt+U: Geri al (undo)
  • Alt+E: Yinele (redo)
  • Ctrl+A: Satır başına git
  • Ctrl+E: Satır sonuna git
  • Ctrl+Y: Bir sayfa yukarı
  • Ctrl+V: Bir sayfa aşağı

Gerçek Dünya Senaryosu: /etc/hosts Düzenleme

Diyelim ki geliştirme ortamınızda yerel bir domain tanımlamak istiyorsunuz:

sudo nano /etc/hosts

Dosya açıldığında doğrudan yazmaya başlarsınız:

127.0.0.1   localhost
127.0.1.1   myserver
192.168.1.50  dev.myapp.local
192.168.1.51  staging.myapp.local

Yazdıktan sonra Ctrl+O ile kaydedin, Enter ile dosya adını onaylayın, ardından Ctrl+X ile çıkın. İşlem bu kadar.

Nano ile Arama ve Değiştirme

Büyük bir config dosyasında bir değeri güncellemek gerektiğinde:

nano /etc/mysql/mysql.conf.d/mysqld.cnf

Ctrl+W ile arama kutusunu açın, bind-address yazın ve Enter’a basın. Değeri buldunuz. Değiştirmek istiyorsanız Ctrl+ kullanın, önce aranacak metni, sonra yerine gelecek metni girin.

Nano’nun Gelişmiş Özellikleri

Nano’yu daha verimli kullanmak için ~/.nanorc dosyasını düzenleyebilirsiniz:

nano ~/.nanorc

Faydalı ayarlar:

set autoindent
set tabsize 4
set linenumbers
set mouse
set softwrap
include "/usr/share/nano/*.nanorc"

linenumbers özelliği özellikle script yazarken veya hata ayıklarken çok işe yarar. Son satır ise syntax highlighting için gerekli dosyaları dahil eder.

Nano ile Satır Numarasına Gitme

Bir Python scripti hata verdi, “line 47” diyor. Nano’da doğrudan o satıra gitmek için:

nano +47 myscript.py

Ya da dosya açıkken Ctrl+_ kısayoluyla satır:sütun numarası girebilirsiniz.

Vim: Güçlü Ama Sabır İsteyen Editör

Vim, ilk açtığınızda sizi adeta karşılayan değil, “gel beni kazan” diyen bir editör. 1991’den beri var olan vi’nin geliştirilmiş versiyonu olan vim, doğru kullanıldığında inanılmaz verimlilik sağlar. Sistem yöneticileri arasında neredeyse bir kültür haline gelmiştir.

Vim’in en önemli özelliği mod tabanlı çalışmasıdır. Normal mode, Insert mode, Visual mode ve Command mode olmak üzere birden fazla çalışma modu vardır. Vim’i ilk kullananların “nasıl çıkarım?” diye paniklemesinin sebebi budur.

Vim Kurulumu

# Debian/Ubuntu - minimal vim yerine tam sürüm
sudo apt install vim

# RHEL/CentOS
sudo dnf install vim-enhanced

# Arch
sudo pacman -S vim

Vim Modları: En Temel Kavram

Normal Mode (Komut Modu): Vim açıldığında bu moddadır. Hareket edebilir, kopyalayabilir, yapıştırabilirsiniz ama yazamazsınız. Esc tuşu sizi her zaman bu moda getirir.

Insert Mode (Ekleme Modu): Metin yazdığınız mod. Normal moddan i, a, o gibi tuşlarla girilir.

Visual Mode (Görsel Mod): Metin seçmek için. Normal moddan v tuşuyla girilir.

Command-Line Mode: : ile girilen mod. Kaydetme, çıkma, arama/değiştirme burada yapılır.

Vim’i Açma ve Kapatma

vim dosya.txt
vim /etc/ssh/sshd_config
vim +25 script.sh          # 25. satırdan aç
vim +/aranacak dosya.txt   # Arama yaparak aç

Vim’den Çıkış (En Kritik Bilgi):

  • :q: Çık (değişiklik yoksa)
  • :q!: Değişiklikleri kaydetmeden zorla çık
  • :w: Kaydet
  • :wq veya :x veya ZZ: Kaydet ve çık
  • :wq!: Zorla kaydet ve çık (read-only dosyalar için)

Vim Temel Hareketler

Normal modda klavyenizi bir navigasyon aracına dönüştürürsünüz:

  • h, j, k, l: Sol, aşağı, yukarı, sağ (ok tuşları da çalışır)
  • w: Sonraki kelimeye atla
  • b: Önceki kelimeye git
  • e: Kelimenin sonuna git
  • 0: Satır başına git
  • $: Satır sonuna git
  • gg: Dosyanın başına git
  • G: Dosyanın sonuna git
  • :25: 25. satıra git
  • Ctrl+F: Bir sayfa ileri
  • Ctrl+B: Bir sayfa geri

Vim Insert Mode’a Geçiş

  • i: İmleçten önce yazmaya başla
  • a: İmleçten sonra yazmaya başla (append)
  • o: Mevcut satırın altına yeni satır aç
  • O: Mevcut satırın üstüne yeni satır aç
  • I: Satırın başında insert moda geç
  • A: Satırın sonunda insert moda geç

Gerçek Dünya Senaryosu: SSH Config Düzenleme

Sunucuda root login’i kapatmanız gerekiyor:

sudo vim /etc/ssh/sshd_config

Vim açıldı, normal moddayız. /#PermitRootLogin yazarak aramaya başlarız (normal modda / arama açar). Enter’a basın, eşleşme bulundu. n tuşu ile sonraki eşleşmeye geçilebilir.

Şimdi o satırı düzenlemek için:

  • ^ ile satır başına gidin
  • x ile # karakterini silin (yorum satırını kaldır)
  • $ ile satır sonuna gidin
  • ci kelimeler arası düzenleme için cw kullanın ya da A ile satır sonuna geçip düzenleyin

Ya da daha hızlısı: :s/#PermitRootLogin.*/PermitRootLogin no/ komutuyla direkt değiştirin.

Kaydetmek için: :wq

Ardından SSH servisini yeniden başlatın:

sudo systemctl restart sshd

Vim Kopyala, Kes, Yapıştır

Bu işlemler normal modda yapılır:

  • yy: Mevcut satırı kopyala (yank)
  • 3yy: 3 satırı kopyala
  • yw: Kelimeyi kopyala
  • dd: Satırı kes/sil
  • 5dd: 5 satırı kes
  • dw: Kelimeyi sil
  • d$: İmleçten satır sonuna kadar sil
  • p: İmleçten sonra yapıştır
  • P: İmleçten önce yapıştır

Vim Arama ve Değiştirme

# Normal modda arama
/aranacak_metin    # İleri arama
?aranacak_metin    # Geri arama
n                  # Sonraki eşleşme
N                  # Önceki eşleşme

# Command modda değiştirme
:s/eski/yeni/          # Mevcut satırda ilk eşleşmeyi değiştir
:s/eski/yeni/g         # Mevcut satırda tüm eşleşmeleri değiştir
:%s/eski/yeni/g        # Tüm dosyada değiştir
:%s/eski/yeni/gc       # Tüm dosyada, her değişikliği onaylayarak
:5,15s/eski/yeni/g     # 5-15. satırlar arası değiştir

Bu özellik gerçekten güçlü. Örneğin bir script içindeki tüm eski IP adreslerini yenisiyle değiştirmek:

:%s/192.168.1.100/10.0.0.50/g

Vim Visual Mode: Blok Seçimi

v tuşuyla karakter bazlı, V tuşuyla satır bazlı, Ctrl+V ile blok (sütun) seçimi yapılır. Seçim yaptıktan sonra:

  • y: Seçimi kopyala
  • d: Seçimi sil
  • >: Girintiye al
  • <: Girintiyi geri al

Ctrl+V ile sütun seçimi özellikle config dosyalarında birden fazla satırda aynı anda değişiklik yaparken müthiş işe yarar.

Birden Fazla Dosyayla Çalışmak

# Birden fazla dosya aç
vim dosya1.txt dosya2.txt

# Dosyalar arası geçiş
:n    # Sonraki dosya
:prev # Önceki dosya

# Split ekran
:split dosya2.txt    # Yatay bölme
:vsplit dosya2.txt   # Dikey bölme
Ctrl+W + h/j/k/l    # Bölmeler arası geçiş

Gerçek Dünya Senaryosu: Nginx Config Ayarlama

Yeni bir virtual host ekleyeceksiniz:

sudo vim /etc/nginx/sites-available/myapp.conf

Dosya boş, insert moda geçin (i) ve yazın:

server {
    listen 80;
    server_name myapp.example.com;
    root /var/www/myapp;
    index index.html index.php;

    location / {
        try_files $uri $uri/ =404;
    }
}

Yazmayı bitirince Esc ile normal moda dönün, :wq ile kaydedin.

Config’i test edin:

sudo nginx -t

Vim’i Kişiselleştirme: .vimrc

Vim’in gücünün büyük kısmı yapılandırmadan gelir. ~/.vimrc dosyası:

vim ~/.vimrc

Sysadmin için pratik ayarlar:

set number              " Satır numaraları
set relativenumber      " Göreli satır numaraları
set tabstop=4           " Tab genişliği
set shiftwidth=4        " Girinti genişliği
set expandtab           " Tab yerine space kullan
set autoindent          " Otomatik girinti
set hlsearch            " Arama sonuçlarını vurgula
set incsearch           " Yazarken ara
set ignorecase          " Büyük/küçük harf duyarsız arama
set smartcase           " Büyük harf yazılırsa duyarlı ol
set syntax on           " Syntax highlighting
set background=dark     " Koyu tema
colorscheme desert      " Renk şeması
set cursorline          " Mevcut satırı vurgula
set showcmd             " Alt çubukta komutu göster
set wildmenu            " Komut tamamlama menüsü

Vim mi, Nano mu? Ne Zaman Hangisi?

Bu sorunun net bir cevabı yok ama pratikte şöyle yaklaşıyorum:

Nano tercih edin:

  • Hızlı ve tek seferlik bir düzenleme yapacaksanız
  • Sunucuya ilk kez bağlanıyorsanız ve vim kurulu değilse
  • Yeni bir kullanıcıya config düzenlemeyi gösteriyorsanız
  • Stres altındayken kritik bir dosyayı düzenlemeniz gerekiyorsa

Vim tercih edin:

  • Büyük dosyalarda çalışıyorsanız
  • Birden fazla dosyayı aynı anda düzenlemeniz gerekiyorsa
  • Karmaşık arama/değiştirme işlemleri yapacaksanız
  • Script geliştiriyorsanız
  • Uzun vadede terminalde daha verimli olmak istiyorsanız

Hangi Editör Varsayılan Olarak Açılıyor?

Bazı sistem araçları (crontab, git commit vb.) sistem editörünü kullanır. Bunu kontrol edebilirsiniz:

# Varsayılan editörü görüntüle
echo $EDITOR
echo $VISUAL

# update-alternatives ile değiştir (Debian tabanlı)
sudo update-alternatives --config editor

# Manuel olarak ayarla .bashrc veya .zshrc'de
export EDITOR=nano
export VISUAL=nano

Örneğin crontab -e komutunu çalıştırdığınızda hangi editörün açılacağını bu ayar belirler.

Kurtarma Senaryoları

Yanlış Dosyayı Kaydettim!

Vim’de :u veya u tuşuyla undo yapabilirsiniz. Nano’da Alt+U. Ama dosyayı kaydedip çıktıysanız iş zor. Bu yüzden kritik dosyalarda her zaman önce yedek alın:

sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
sudo vim /etc/nginx/nginx.conf

Vim Askıda Kaldı!

Ctrl+Z ile vim arka plana atılmış olabilir, çıkmamıştır. jobs komutuyla kontrol edin, fg ile geri getirin. Ya da swap dosyası kalmış olabilir. Vim bunu söyler ve recovery seçeneği sunar.

Swap Dosyalarını Temizleme

# Vim swap dosyalarını bul
find ~ -name "*.swp" 2>/dev/null
find /tmp -name "*.swp" 2>/dev/null

# Temizle (dikkatli ol, açık dosyalar varsa silme)
rm ~/.vim/swap/*.swp

Pratik İpuçları

Vim’de son komutu tekrar çalıştır: Normal modda . (nokta) tuşu son değişikliği tekrar eder. Bu inanılmaz güçlü bir özelliktir.

Satır sayısını göster ve dosyanın ortasına git:

# Vim'de dosya bilgisi
:set number
:50%          " Dosyanın ortasına git

Nano’da birden fazla dosya açma:

nano dosya1.txt dosya2.txt
# Alt+> ile sonraki dosyaya geç
# Alt+< ile önceki dosyaya geç

Sadece görüntülemek için açma (düzenleme yok):

view dosya.txt        # vim'in read-only modu
nano -v dosya.txt     # nano'nun view modu

Sonuç

Nano ve vim, terminal dünyasının iki farklı ama birbirini tamamlayan araçlarıdır. Nano ile başlamak mantıklı; öğrenme eğrisi düz, hemen verimli olursunuz. Ama bir sysadmin olarak vim’i öğrenmek uzun vadede büyük avantaj sağlar. Büyük log dosyalarında, karmaşık config düzenlemelerinde veya script yazarken vim’in gücünü hissedeceksiniz.

Önerim şu: Nano’yu günlük hızlı düzenlemeler için kullanmaya devam edin, ama her gün biraz da vim pratiği yapın. vimtutor komutu mükemmel bir başlangıç noktasıdır, yaklaşık 30 dakikada vim’in temellerini interaktif olarak öğretir. Birkaç hafta içinde vim’in muscle memory’nize işlediğini ve artık nano’ya gerek duymadığınızı fark edeceksiniz.

En kötü ihtimalle her ikisini de bilmek, farklı sunucularda ve farklı senaryolarda sizi asla çaresiz bırakmaz. Uzak bir sunucuya bağlandığınızda nano yoksa vim biliyorsunuzdur, vim yoksa nano. Bu ikisini cebinizde taşımak her sysadmin’in temel silahı olmalı.

Yorum yapın