---
title: 'Terminal Metin Editörleri'
source: 'https://academia.sh/tr/kurslar/linuxa-giris/terminal-metin-editorleri'
course: "Linux'a Giriş"
language: tr
updated: '2026-08-17T18:09:57+00:00'
license: 'CC BY-SA 4.0'
---

# Terminal Metin Editörleri

Satır editöründen ekran editörüne uzanan tasarım çizgisi, kip tabanlı ve kipsiz editörlerin karşılaştırması, temel düzenleme komutları ve editör seçiminin ortam değişkeniyle bildirilmesi.

Kurs boyunca dosyalar `printf` ve yönlendirmeyle oluşturuldu. Bu, tek satırlık dosyalar için
işe yarar; bir betiğin ortasındaki satırı değiştirmek veya bir yapılandırma dosyasına iki
satır eklemek için yetersizdir.

Grafik arayüz bulunmayan bir sunucuda — uzak oturumların çoğunda durum budur — düzenleme
terminalde yapılır. Bu ders terminal editörlerinin iki tasarım ailesini ve aralarındaki
seçimi ele alır.

## Satır Editörü

Terminal editörlerinin tasarımı, yazıcı terminallerin kullanıldığı dönemden gelir. O
dönemde ekran yoktu; çıktı kâğıda basılıyordu ve imleci hareket ettirmek diye bir şey söz
konusu değildi. Düzenleme, satır numaraları üzerinden komutlarla yapılıyordu.

Bu tasarımın temsilcisi `ed` hâlâ POSIX'te tanımlıdır ve çalışır durumdadır. Proje betiğine
bir satır eklemek için tam bir oturum:

```
$ ed betik/ozet.sh
139
$
echo "ham olcum dosyasi: $(ls -1 "$HOME/proje/veri/ham" | wc -l)"
a
echo "guncel olcum: $(readlink "$HOME/proje/veri/guncel.csv")"
.
%p
#!/bin/sh
# proje/veri/ham icindeki olcum dosyalarinin sayisini bildirir
echo "ham olcum dosyasi: $(ls -1 "$HOME/proje/veri/ham" | wc -l)"
echo "guncel olcum: $(readlink "$HOME/proje/veri/guncel.csv")"
w
202
q
```

Oturum satır satır okunmalıdır. Açılışta yazdırılan `139`, dosyanın bayt sayısıdır. `$`
komutu son satırı yazdırır. `a` ekleme kipine geçer; sonraki satırlar dosyaya eklenir ve tek
başına bir nokta ekleme kipini bitirir. `%p` dosyanın tamamını yazdırır. `w` yazar ve yeni
bayt sayısını bildirir, `q` çıkar.

`ed` istem göstermez ve hata durumunda yalnızca bir soru işareti yazdırır. Bu, gündelik
kullanım için elverişsizdir; ancak iki nedenle önemlidir. Birincisi, komut dilinin
tamamı sonraki editörlere miras kalmıştır. İkincisi, `ed` betiklerden yönlendirmeyle
sürülebilir ve bu, kurtarma ortamlarında bazen tek seçenektir.

## Kip Tabanlı Ekran Editörü

Ekranlı terminaller yaygınlaştığında, satır editörünün üzerine bir **görsel kip** eklendi:
dosyanın bir bölümü ekranda gösterilir, imleç üzerinde gezinir. Bu tasarım POSIX'te `vi` adıyla
standartlaştırılmıştır ve standarda uyan her sistemde bulunması beklenir.

Editörün ayırt edici özelliği **kiplerdir**. Aynı tuş, bulunulan kipe göre farklı iş yapar:

| Kip | İşlevi | Nasıl girilir |
|---|---|---|
| Normal | Gezinme ve düzenleme komutları | `Esc` |
| Ekleme | Yazılan karakterler metne girer | `i`, `a`, `o` |
| Komut satırı | Satır editörü komutları | `:` |

Tasarımın gerekçesi, tuşların bir **dile** dönüşmesidir. Normal kipte harf tuşları
karakter girmediği için tümü komut olarak kullanılabilir; komutlar da eylem ve hareket
birleşimiyle kurulur. `d` silme eylemi, `w` bir sözcük ilerleme hareketidir; `dw` bir
sözcüğü siler. `3dw` üç sözcüğü siler. Öğrenilen her hareket, öğrenilen her eylemle
birleşebilir.

Karşılaştırıldığı yaklaşım, komutları değiştirici tuş bileşimlerine bağlamaktır. O
yaklaşımda komut sayısı, bileşim sayısıyla sınırlıdır ve bileşimler birleştirilemez.

Kip tabanlı tasarımın ikinci kazancı, yalnızca temel karakterleri kullanmasıdır: ok tuşları
ve değiştirici bileşimleri göndermeyen terminallerde de çalışır. Bu, uzak oturumlar ve
kurtarma konsolları için pratik bir üstünlüktür.

Bedeli, ekleme kipinde yazılan bir komutun metne karışmasıdır. Kip karışıklığı, yeni
kullanıcıların en sık karşılaştığı sorundur ve çözümü sabittir: emin olunmadığında `Esc`
tuşuna basılır, normal kipe dönülür.

## En Küçük Hayatta Kalma Kümesi

Bir dosyayı açmak, değiştirmek ve kaydetmek için gereken komutlar azdır:

| Komut | İşlevi |
|---|---|
| `i` | İmlecin önünde ekleme kipine geçer |
| `a` | İmlecin ardında ekleme kipine geçer |
| `o` | Altına yeni satır açar ve ekleme kipine geçer |
| `Esc` | Normal kipe döner |
| `h` `j` `k` `l` | Sol, aşağı, yukarı, sağ |
| `0` / `$` | Satır başı / satır sonu |
| `gg` / `G` | Dosya başı / dosya sonu |
| `x` | İmleçteki karakteri siler |
| `dd` | Bulunulan satırı siler |
| `u` | Son değişikliği geri alır |
| `/desen` | İleri arama; `n` sonraki eşleşme |
| `:w` | Kaydeder |
| `:q` | Çıkar |
| `:q!` | Değişiklikleri atarak çıkar |
| `:wq` | Kaydeder ve çıkar |

Son dört satırdaki iki nokta üst üste ile başlayan komutlar, satır editörünün komutlarıdır.
Miras burada görünür: `:w` ve `:q`, `ed` oturumundaki `w` ve `q` ile aynı komutlardır.

Aynı komut dili doğrudan da çalıştırılabilir; editörün satır kipi betiklerden sürülebilir:

```
$ printf '%s/dosyasi/sayisi/\nwq\n' | ex -s /tmp/duzenle.sh
$ cat /tmp/duzenle.sh
#!/bin/sh
# proje/veri/ham icindeki olcum dosyalarinin sayisini bildirir
echo "ham olcum sayisi: $(ls -1 "$HOME/proje/veri/ham" | wc -l)"
echo "guncel olcum: $(readlink "$HOME/proje/veri/guncel.csv")"
```

`%s/eski/yeni/` komutu tüm satırlarda değiştirme yapar; `wq` kaydedip çıkar. Ekran
editöründe iki nokta üst üste yazıp aynı komutu vermek aynı sonucu üretir. Ekran tabanlı bir
oturum metin olarak gösterilemez, ama komut dili gösterilebilir ve gösterilen budur.

## Kipsiz Editörler

İkinci tasarım ailesi kip kullanmaz: yazılan karakterler doğrudan metne girer, komutlar
denetim tuşu bileşimleriyle verilir ve kullanılabilir komutlar ekranın altında sürekli
listelenir.

Karşılaştırma iki eksende yapılır:

| Ölçüt | Kip tabanlı | Kipsiz |
|---|---|---|
| Öğrenme eşiği | Yüksek; kip kavramı öğrenilmeli | Düşük; komutlar ekranda yazılı |
| Komut birleştirme | Eylem ve hareket birleşir | Bileşim başına tek komut |
| Bulunma güvencesi | POSIX'te tanımlı, her sistemde beklenir | Ayrı paket, kurulu olmayabilir |
| Sınırlı terminal | Temel karakterlerle çalışır | Denetim bileşimleri gerekir |

Üçüncü satır pratikte belirleyicidir. Yalın bir sistemde veya bir kurtarma ortamında kipsiz
editör bulunmayabilir:

```
$ command -v vi ed nano
/usr/bin/vi
/usr/bin/ed
/usr/bin/nano
```

Bu sistemde üçü de vardır; ancak yalnızca ilk ikisinin bulunacağı varsayılabilir. Bu nedenle
kip tabanlı editörün hayatta kalma kümesi, tercih edilen editör ne olursa olsun
öğrenilmelidir.

## Editör Tercihini Bildirmek

Birçok program, düzenleme gerektiğinde bir editör başlatır: zamanlanmış görev tanımları,
sürüm denetimi araçlarının ileti ekranları ve yetkili dosya düzenleme araçları. Hangi
editörün açılacağı ortam değişkenlerinden okunur.

```
$ echo "EDITOR=${EDITOR:-tanimsiz}"
EDITOR=tanimsiz
$ EDITOR=vi
$ export EDITOR
$ echo "EDITOR=$EDITOR"
EDITOR=vi
```

`export` olmadan yapılan atama yalnızca kabuğun kendi değişkeni olur ve çalıştırılan
programlara aktarılmazdı; komut yolu dersindeki ortam ayrımı burada doğrudan uygulanır.
Ayarın kalıcı olması için, `PATH` değişikliğiyle aynı yere — oturum açılışında okunan
yapılandırma dosyasına — yazılır.

İki değişken kullanılır: tam ekran editörü için `VISUAL`, satır tabanlı ortamlar için
`EDITOR`. İkisi de tanımlıysa programların çoğu `VISUAL` değerini yeğler; yalnızca biri
tanımlanacaksa `EDITOR` yeterlidir.

## Özet

- Terminal editörlerinin komut dili, ekransız terminaller için tasarlanan satır
  editöründen miras alınmıştır ve `:` ile başlayan komutlarda hâlâ görünür.
- Kip tabanlı editörde harf tuşları komut olarak kullanılabildiği için eylem ve hareket
  birleşerek bir komut dili oluşturur.
- Bir dosyayı açıp değiştirip kaydetmek için gereken komut kümesi küçüktür ve emin
  olunmadığında `Esc` normal kipe döndürür.
- Kipsiz editörlerin öğrenme eşiği düşüktür ama her sistemde bulunacakları varsayılamaz.
- Editör tercihi `VISUAL` ve `EDITOR` ortam değişkenleriyle bildirilir ve `export`
  edilmedikçe çalıştırılan programlara aktarılmaz.

## Kurs Kapanışı

Kurs, tek bir dizin ağacı üzerinde ilerledi. Ağaç kurulduğunda boştu; kapanışta üzerinde
yapılmış her işlemi taşıyor:

```
$ betik/ozet.sh
ham olcum dosyasi: 4
guncel olcum: ham/olcum-03.csv
```

Bu iki satırın arkasında kursun tamamı vardır. Betiğin çalışması için arama listesinde
bulunması ve çalıştırma bitinin açık olması gerekti. Saydığı dosyalar oluşturuldu,
kopyalandı ve taşındı; sayıldıkları dizin yol çözümlemesiyle bulundu. Bildirdiği güncel
ölçüm bir sembolik bağın hedefidir. Ağacın tamamı arşivlendi, sıkıştırıldı, uzak bir
makineye eşitlendi; bir gruba açıldı ve paylaşılan dizini özel izin bitleriyle korundu.

Kursun kazanımları geriye dönük olarak şöyle toplanır:

- **Gezinme ve dosya işlemleri:** Hiyerarşinin mantığı, yol çözümlemesi, oluşturma,
  kopyalama, taşıma, silme, bağlar, arşivleme ve aktarım.
- **İzinler ve sahiplik:** Kimliğin sayısal temsili, dokuz izin biti ve sekizlik gösterim,
  sahiplik değişikliği, yetki yükseltme ve üç özel bit.
- **Paket yönetimi:** Paketin yapısı, bağımlılık çözümlemesi, işlem sınıfları ve depo
  güven zinciri.

Kurs boyunca komutların yanında bir alışkanlık kümesi de kuruldu ve bunlar komutlardan daha
uzun ömürlüdür: yıkıcı bir komutu çalıştırmadan önce açılımını görmek, bir arşivi açmadan
önce listelemek, bir eşitlemeyi kuru çalışmayla denemek, bir aktarımı özetiyle doğrulamak ve
bir yetkiyi olabilecek en dar kapsamda almak.

Bir sonraki kurs, bu kursun bilinçli olarak dışarıda bıraktığı katmanı ele alır: komutları
birbirine bağlamak. Kabuk Programlama kursu girdi ve çıktı yönlendirmesini, boru hatlarını,
değişkenleri, koşulları ve döngüleri kurar; bu kursta tek tek çalıştırılan komutlar orada
yeniden çalıştırılabilir betiklere dönüşür. Kabuk dersinde tanıtılan sözcüklere bölme ve
açılım kuralları, o kursun dilbilgisinin temelini oluşturacaktır.
