Linux Metin Editörleri: Vim ve Nano Karşılaştırması

Linux terminalinde metin düzenlemenin iki klasiği: Nano'nun anında kullanım kolaylığı ve Vim'in mod tabanlı hızı. Hangisini ne zaman seçmeli, örneklerle.

Linux
Linux Metin Editörleri: Vim ve Nano Karşılaştırması

SSH ile bir sunucuya bağlandığınızda ortada masaüstü, fare ya da simge yoktur; yalnızca siyah bir terminal ekranı vardır. Böyle bir ortamda bir yapılandırma dosyasını düzenlemeniz gerektiğinde iki isimle karşılaşırsınız: Vim ve Nano. İkisi de terminalde çalışan birer metin editörüdür ama yaklaşımları birbirinden çok farklıdır. Nano açar açmaz kullanılabilir, Vim ise önce öğrenilmesi gereken bir sistemdir; öğrenildiğinde de çok daha hızlı çalışır. Bu rehberde ikisini de pratik örneklerle karşılaştırıyorum.

Nano: Anında Üretken Olmak

Nano, terminale yeni başlayanlar için tasarlanmış bir editördür. Programı açtığınızda ekranın alt satırında en sık kullanılan komutlar zaten listelenir; buradaki ^ işareti Ctrl tuşuna karşılık gelir.

nano dosya.txt

Dosyayı kaydetmek için Ctrl+O, editörden çıkmak için Ctrl+X, metin aramak için Ctrl+W tuş kombinasyonu kullanılır. Bu kısayolları ayrıca ezberlemenize gerek yoktur, çünkü ekranda sürekli görünür durumdadır. Bir sunucudaki yapılandırma dosyasında tek satırlık bir değişiklik yapacaksanız, Nano'yu açıp düzenlemeyi bitirip kapatmak birkaç saniyeden fazla sürmez.

Nano'nun bu basitliği bazen "yetersiz" bir editör izlenimi verir, ama bu değerlendirme gerçeği yansıtmaz. Sözdizimi vurgulama, satır numarası gösterme ve otomatik girinti gibi özellikler, bir yapılandırma dosyasıyla uğraşırken işi ciddi biçimde kolaylaştırır.

# nanorc dosyasında satır numaralarını açmak için
set linenumbers

Bu satırı ~/.nanorc dosyasına eklediğinizde, Nano her açıldığında satır numaralarını gösterir. Küçük bir ayar gibi görünür ama uzun bir config dosyasında istediğiniz satırı bulmayı hızlandırır.

Vim: Mod Tabanlı Güç

Vim'i ilk kez açtığınızda klavyeye bir şeyler yazmaya çalışıp hiçbir sonuç alamazsınız; bu durum çoğu yeni kullanıcıyı şaşırtır. Sebebi Vim'in mod tabanlı çalışmasıdır: Normal modda komut verirsiniz, Insert modunda metin yazarsınız, Visual modda seçim yaparsınız.

Nano metin editöründe alt kısımda komut kısayollarının göründüğü terminal ekranı
vim dosya.txt

Insert moduna geçmek için i tuşuna basarsınız, Normal moda dönmek için Esc tuşunu kullanırsınız. Değişiklikleri kaydedip çıkmak :wq, kaydetmeden çıkmak ise :q! komutuyla yapılır. İlk günlerde bu komutları hatırlamak zorlayıcı olabilir, ama kısa sürede parmaklarınız otomatik hale gelir.

Vim'in asıl gücü, komutların birbiriyle birleşebilmesinden gelir. dw tek bir kelimeyi siler, 3dw üç kelimeyi siler, dd bir satırı siler, 5dd beş satırı siler. Sayı ile komutu birleştiren bu mantık, az sayıda tuşla karmaşık düzenlemeler yapmanıza olanak tanır.

dw    -> kelimeyi sil
3dd   -> 3 satırı sil
yy    -> satırı kopyala
p     -> yapıştır
/ara  -> metin ara

Vim'i eklentiler ve ~/.vimrc yapılandırma dosyasıyla kendi ihtiyaçlarınıza göre baştan sona şekillendirebilirsiniz. Açık kaynak eklenti ekosistemi çok geniştir; geliştiricilerin paylaştığı hazır ayarlardan faydalanabilirsiniz. Nitekim pek çok geliştirici Vim'i, eklentilerle tam teşekküllü bir kod editörüne dönüştürmüş durumdadır.

Hangi Editörü Seçmeli

Linux'ta yeniyseniz ya da arada bir basit bir düzenleme yapacaksanız, Nano açık ara doğru tercihtir. Öğrenme süreci gerektirmez, dosyayı açar açmaz işinize başlayabilirsiniz ve günlük görevlerin büyük kısmını sorunsuz karşılar.

Terminalde uzun saatler geçiriyor ya da kod yazıyorsanız, Vim öğrenmek zaman ayırmaya değer bir yatırımdır. Öğrenme süreci diktir, ama ustalaştığınızda metni fareye hiç dokunmadan, düşündüğünüz hızda düzenlersiniz.

Aşağıdaki tablo iki editörü kısaca karşılaştırıyor:

KriterNanoVim
Öğrenme eğrisiDüşükYüksek
İlk kullanımAnındaAlıştırma gerekir
Hız (ustalaştıktan sonra)OrtaÇok yüksek
ÖzelleştirmeSınırlıKapsamlı
Varsayılı kurulu muÇoğu dağıtımdaÇoğu dağıtımda (vi olarak)

Deneyimli kullanıcıların çoğu aslında ikisini birden kullanır: hızlı bir düzeltme için Nano'yu, kapsamlı bir iş için Vim'i tercih eder. Tek bir editöre bağlı kalmak yerine ihtiyaca göre araç seçmek daha pratiktir.

Kararsız kalırsanız şu soruları kendinize sorabilirsiniz:

  • Sunucuda dakikada bir tek satırlık düzenleme mi yapıyorsunuz? Nano bu iş için yeterlidir.
  • Günün büyük bölümünü terminalde kod yazarak mı geçiriyorsunuz? O zaman Vim'e zaman ayırmalısınız.
  • Yeni bir dağıtımda editör bile kurulu değilse, önce Nano'nun kurulu olup olmadığına bakın; çoğu minimal kurulumda Vim'in temel sürümü (vi) hazır gelir.

Vim'e Nasıl Başlanır

Vim öğrenmenin en pratik yolu, editörün kendi öğreticisini baştan sona çalıştırmaktır. Bunun için terminale şu komutu yazmanız yeterlidir.

Nano ve Vim editörlerini öğrenme eğrisi ve hız açısından karşılaştıran şema
vimtutor

Bu interaktif öğretici, temel gezinme ve düzenleme komutlarını yaklaşık 30 dakikalık bir uygulamayla öğretir. Her şeyi tek seferde öğrenmeye çalışmak yerine önce h j k l ile gezinmeyi, i ve Esc ile mod geçişini, :wq ile kaydetmeyi öğrenin; bu birkaç komut günlük işlerin büyük bölümünü karşılar. Vim hakkında daha fazla kaynağa ve indirme bağlantısına Vim'in resmi sitesinden ulaşabilirsiniz.

Vim öğreniminde asıl belirleyici olan düzenli pratiktir. Komutlar ilk günlerde yabancı gelir, ama birkaç günlük kullanımdan sonra kas hafızasına yerleşir. .vimrc dosyasına eklediğiniz küçük ayarlarla deneyimi kendi alışkanlıklarınıza uyarlayabilirsiniz.

" .vimrc örneği
set number
syntax on
set tabstop=4

Bu üç satır sırasıyla satır numaralarını açar, sözdizimi renklendirmeyi etkinleştirir ve tab genişliğini 4 karaktere sabitler. Küçük görünen bu ayarlar, günlük kullanımda gözle görülür bir fark yaratır.

Nano'yu Yapılandırma Dosyalarında Kullanmak

Sistem yönetiminde en sık karşılaşacağınız iş, bir servisin config dosyasını düzenlemektir. Örneğin SSH ayarlarını değiştirmek isterseniz şu komutu çalıştırırsınız:

Terminalde sudo nano ile yapılandırma dosyası düzenleme ekranı
sudo nano /etc/ssh/sshd_config

Dosya açıldıktan sonra Ctrl+W ile aradığınız satıra doğrudan atlayabilirsiniz. Değişikliği kaydedip çıktıktan sonra servisi yeniden başlatın; ayar ancak bundan sonra etkinleşir.

sudo systemctl restart sshd

Bu iki komut, Nano'nun en yaygın kullanım senaryosunu özetler. Uzun bir öğrenme süreci gerekmeden, birkaç dakika içinde bir sunucu ayarını güvenle değiştirebilirsiniz. Yanlışlıkla bir satırı silerseniz Ctrl+U geri alma komutu devreye girer; bu da Nano'yu yeni başlayanlar için güvenli bir seçenek yapar.

Diğer Seçenekler: Emacs ve Ötesi

Vim ve Nano en çok bilinen terminal editörleri olsa da tek seçenek değildir. Emacs, geniş bir özellik yelpazesine ve kendine sadık bir kullanıcı kitlesine sahip başka bir editördür; kimi kullanıcılar için neredeyse ayrı bir çalışma ortamı gibi işlev görür. Vim ile Emacs arasındaki tercih genelde kişisel alışkanlığa bağlıdır ve bu iki taraf arasındaki rekabet, "editör savaşları" diye anılan esprili bir geleneğe dönüşmüştür.

Grafiksel bir masaüstünde çalışıyorsanız elbette modern kod editörleri de kullanabilirsiniz. Ama terminal tabanlı bir editör bilmek, uzak sunucularda ve minimal kurulumlarda hâlâ vazgeçilmezdir. Bir web sunucusuna SSH ile bağlandığınızda genelde grafiksel bir arayüz bulunmaz; böyle bir anda Vim ya da Nano bilmek işinizi kurtarır.

En sağlıklı yaklaşım, ikisini de en azından temel düzeyde tanımaktır. Nano ile başlayıp zamanla Vim'e geçebilir ya da Nano'nun sunduğu basitlikten tamamen memnun kalabilirsiniz. Her iki tercih de geçerlidir; asıl önemli olan seçtiğiniz editörde rahat çalışabilmenizdir.

Günlük Kullanımda Küçük İpuçları

Nano'da bir metin bloğunu seçmek için Alt+A ile işaretlemeyi başlatıp ok tuşlarıyla seçimi genişletirsiniz; ardından Ctrl+K ile keser, Ctrl+U ile yapıştırırsınız. Bu üç kısayolu bilmek, uzun bir dosyada blok taşıma işlemini belirgin şekilde hızlandırır.

Vim'de arama ve değiştirme işlemi, :%s/eski/yeni/g komutuyla dosyanın tamamında çalışır. Bu tek satırlık komut, yüzlerce satırlık bir yapılandırma dosyasında toplu bir değişikliği saniyeler içinde tamamlar.

:%s/localhost/127.0.0.1/g

Bu komut, dosyada geçen her localhost ifadesini 127.0.0.1 ile değiştirir. Mantığı sed komutuna benzer, ama işlem editörün içinde ve önizleme yapılarak gerçekleşir.

Hangi editörü seçerseniz seçin, birkaç temel komutu iyi bilmek günlük işlerin büyük kısmını hızlandırır. Zamanla hangi görev için hangi editörün daha uygun olduğunu kendi deneyiminizle öğrenirsiniz.

SSH üzerinden bağlandığınız sunucuda ekran genişliği dar kalırsa, Nano'nun alt satırdaki kısayol listesi ekranın büyük kısmını kaplayabilir. Bu durumda nano -x dosya.txt komutuyla yardım satırını gizleyip daha fazla çalışma alanı açabilirsiniz. Vim tarafında :set nowrap komutu uzun satırların otomatik kaymasını durdurur; bu ayar özellikle log dosyalarını incelerken işe yarar.

Son bir öneri: hangi editörde çalışırsanız çalışın, düzenlemeden önce dosyanın bir kopyasını almak iyi bir alışkanlıktır. Kritik bir yapılandırma dosyasını değiştirmeden önce basit bir yedek çıkarmak, bir hata olduğunda geri dönüşü saniyeler içinde mümkün kılar.

cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak

Bu tek satırlık alışkanlık, hangi editörü kullanırsanız kullanın sizi büyük sorunlardan korur.

Celil Uyanikoglu

Yazan Celil Uyanikoglu

Bilgisayar mühendisiyim; 25 yılı aşkın süredir bilgi işlem sektörünün içindeyim. Bu blogu 2020'de, işimde her gün karşılaştığım sorunların çözümlerini bir yere yazmak için açtım: Linux, güvenlik, tarayıcılar, yapay zeka araçları. Yazdığım her rehberi önce kendi bilgisayarımda ya da sunucumda deniyorum; çalıştığını görmediğim adımı yayınlamam. Hatalı ya da eskimiş bir şey görürsen iletişim sayfasından yaz — düzeltirim.

Yorum

Henüz yorum yok.

Sohbete katıl. Yorumlar yayınlanmadan önce moderasyondan geçer.

Yorum yap

E-posta adresin yayınlanmaz. Yorumlar moderasyondan sonra yayınlanır.

Sırada

İlgili notlar

jekcms 61602b0e6293b42004a1