VI editörü


 Vi(visual) ex editörüne dayalı olarak geliştirilmiş,unix'te kullanılan 

bir metin editörüdür. 
 Vi ile genel anlamda iki tür işlem yapmak olasıdır: 
 1.Yeni bir metin dosyası yaratmak. 
 2.Mevcut bir dosyayı çağırarak üzerinde işlemler yapmak. 
  Vi Programının Çalıştırma Biçimleri 
vi dosyaadı     :Vi editörü çalıştırılır. 
 Dosya adı Unix tarafından kabul edilebilecek özelliklere sahip olmalıdır.

Vi ile çalişmadan önce bazı noktalara dikkat etmek gerekiyor.

Terminalin tüm yeteneklerinden yararlanmak için öncelikle terminal 

tipi belirlenmeli ve sisteme tanıtılmalıdır.
$ echo $ TERM   :Çalışmakta olan terminalin tipini ekrana yazar. 
 Eğer terminal tipi tanımlanmamışsa UNIX' e bunu tanımak için aşağıdaki işlemler

 uygulanır.Örneğin kullanılan terminal vt100 türünde ise , 
$ TERM=vt100 
$ export TERM 
tanımları yapılır. 
 örnek: 
   Vi editörü ile yeni bir metin oluşturmak istiyoruz.Metnin adı yazı olsun.

Bu takdirde vi programı şu şekilde çaliştırılabilir: 
$ vi yazi 
  ~ 
  ~ 
  ~ 
  ~ 
"yazı" [New file] 
İmleç(cursor),boş ekranın sol köşedeki ilk konumunda yer alır.henüz yazılmamış

 satırlar ~ işaretiyle simgelenmektedir.Metin yazdıkça bu işaretler yok olur.

Ekranın en alt sağında ise metin kütüğünün ismi yer alır. 
Vi Programının Diğer Çalıştırma Biçimleri 
 Vi editörüne çeşitli biçimlerde girmek olasıdır.Bunlardan en basiti 

,yukarıda görüldüğü gibi vi ardından dosya adını kullanmak şeklindedir. 
vedit dosya adı          :Dosya üzerinde düzeltmeler yapılabilmesi için dosyayı açar. 
view dosya adı           :Dosyanın sadece görüntülenmesi için dosya açılır. 
vi + dosya adı           :Dosya yüklenir yüklenmez dosyanın en son satırına imleçin hareket  
                          etmesini sağlar. 
vi +n dosya adı          :Dosya yüklenir  yüklenmez imleçin n. satır üzerine hareket etmesini 
                          sağlar. 
vi +/dizgi dosya adı     :Dosya  çağırıldığında imleçin balirli bir dizgi üzerinde olmasını 
                          sağlar. 
vi + "komut" dosya adı   :Dosya yüklendikten hemen sonra bir vi komutunun çalıştırılmasını 
                          sağlar. 
vi dosya 1  dosya 2      :Aynı anda birden fazla dosya yüklenmesini ve üzerinde işlem 
                          yapılabilmesini sağlar. 
:n                       :Dosyalar yüklendikten sonra dosyaların ardarda görüntülenmesini 
                          sağlar. 
vi -wn dosya adı         :n. satır için ekran boyutunu ayarlar. 
örnek: 
$ vi + yazı    "yazı" isimli dosyanın enson satırına daha başlangıçta ulaşır. 
Eğer dosya yüklenmişse, 
$ vi +/hacettepe yazı  imleç "yazı" isimli dosyada hacettepe dizgisi üzerine gelir. 
 Kaybolan Bir Dosyanın Kurtarılması 
 Bir metin dosyası yaratılırken,bazen sistemin calışması durabilir.

Örneğin elektirik kesilmesi veya terminallerin kilitlenmesi sonucunda

 böyle bir durumla karşılaşılabilir.Bu olay sonucunda kaybolan dosyayı yeniden 

kurtarmak olasıdır.Çünkü Vi editör programı,dosyanın yer aldığı ara belleğin bir 

kopyasını oluşturarak saklamaktadır.Genellikle mail içinde bununla

ilgili mesaj oluşturarak,kullacının haberdar olmasını sağlanır. 
vi -r dosya adı        :Kaybolan bir dosyayı yeniden çağırır. 
vi -r                  :Kurtarılabilecek kayıp dosyaları listeler. 
örnek: 
  Vi editöründe yazı isimli dosya üzerinde çalışırken elektiriklerin kesildiğini

 varsayalım.Sistem yeniden açıldığında,dosyanın en son  durumunu kurtarmak üzere

Vi programının, 
$ vi -r yazi         biçimi tercih edilir. 
 Vi Komutları 
  Vi üzerinde işlemler yaparken birçok tuş kullanılmaktadır.Bunun yanı sıra ex

 satır editörü komutları da kullanılabilir.Komut moduna geçmek için (:)

 tuşuna basmak yeterlidir.Böylece ekranın en alt satırına komut kaydedilir.

Örneğin,bir metni kaydetmek için önce (:) tuşuna basılır ve ardından, 
     :w yazı 
yazılarak işlem yapılır.İmleç'in komut modundan kurtularak tekrar eski 

yerine dönebilmesi için Ctrl ve d tuşlarına birlikte basılması gerekir. 
 Dosyanın Yazdırılması Ve Vi'den Çıkış 
 Vi komutu ile editöre girdikten ve gerekli işlemler yapıldıktan sonra dosyanın

 yeni biçiminin saklanması gerekir.Vi,metin kütükleri üzerinde doğrudan doğruya

 işlem yapmaz.Dosya program tarafından bir ara bellek(buffer) üzerine taşınarak,işlemler 

onun üzerinde gerçekleşir.Bu nedenle,ara bellekteki metin dosyası,orjinali üzerine

 kopyalanmadığı sürece herhangi bir değişiklik olmaz. 
:w            :Vi'dan çıkmadan önce yeni metnin yazdırılmasını sağlar.Bu komut ile 
               üzerinde çalışılmakta olan metin dosyası aynı isimle saklanır. 
:w dosya adı  :Vi'dan çıkmadan önce yeni metnin yazdırılmasını sağlar.Bu komut ile üzerinde 
               çalışılmakta olan metin dosyası farklı isimle saklanır. 
:w! dosya adı :Dosya zaten mevcut ise bu komut kullanılır.  
:wq!          :Vi terkedilir. 
:q!           :Yapılan değişiklikler gözönüne alınmadan vi terkedilir. 
:q            :Vi ile yaratılan dosya üzerinde herhangi bir değişiklik yapılmamış ise vi 
               terkedilir. 
:e!           :Bir metin dosyası Vi ara belleğine yüklendikten ve üzerinde bazı işlemler 
               yapıldıktan sonra,değişiklikleri gözönüne almayarak metni tekrar başlangıç 
               durumuna getirir.:q! ile Vi'dan çıkıp tekrar girmek suretiyle de ulaşabilir. 
 Vi programından çıkarken :wq komutu yerine,önce :w daha sonra :q komutları ardarda 

kullanılabilir.Ayrıca ZZ komutu da aynı işlemi yerine getirebilir.Fakat,metin üzerinde

 herhangi bir  değişiklik yapılmamış ise ekranın en alt satırında dosya adı,satır 

ve karakter sayıları görüntülenmez. 
Yaratılan dosya,başka bir kütüğe ilave edilecek ise, 
w>> dosya adı :Yaratılan dosyayı başka bir kütüğe ilave eder. 
 Bir dosyanın tümü yerine,sadece belirli satırları yazdırılabilir.n ve m yazdırılacak

 satır aralığı olmak üzere, 
:n,mw 
:n,mv dosya adı 
:n,mw! dosya adı 
:n,mw>> dosya adı 
komutlarından biri tercih edilebilir. 
örnek: 
 Yazı isimli aşağıdaki metnin ilk defa yaratıldığını varsayalım.

Bu metni saklayarak çıkmak amacıyla, 
 :wq 
komutu kullanılır. 
 UNIX System 1983 Ocak ayında duyuruldu ve kullanıcıların hizmetine sunuldu.

1983'den bu yana bu versiyonun çeşitli modelleri geliştirildi. 
~ 
~ 
"yazı"[New file] 2 lines,118 characters 
 Vi terkedildikten sonra,ekranın en alt satırında yeni kütüğün kaç satır

 ve karakterden oluştuğu görüntülenir. 
 Bu saklama işlemi gerçekleşmeden elektirikler kesildiğini varsayalım.

Sistem yeniden açıldığında,üzerinde çalışılan kütüğe ulaşmak için

Vi programının, 
$ vi -r yazı 
biçimi kullanılır. 
örnek: 
 Vi ile mevcut bir dosyayı cağırıp üzerinde birtakım işlemler yaptıktan

 sonra,başka isimle saklamak istiyoruz.Bu durumda 

dosyanın ilk hali bozulmayacaktır.Vi programı, 
$ vi yazı 
şeklinde çalıştırıldığında yazı isimli dosya editörün ara belleğine 
yüklenir.Değişikliklerden sonra başka bir isimle saklamak için ,önce (:)  
tuşuna basarak komut düzeyine geçilir ve 
 :w yaz1 
komutu ile "yaz1" isimli dosyaya yaratılır.Ardından, 
 :q! 
ile editör terkedilir.Bu iki işlem yerine, 
 :wq! yaz1 
biçimide kullanılabilir. 
 Vi'dan Unix Komutlarına Erişim 
 Vi'da çalışırken editörden çıkmadan,gerektiğinde UNIX kabuğuna ulaşarak

 onun komutlarını kullanmak olasıdır.Bu iki şekilde olabilir: 
 1.:sh 
 2.:! UNIX KOMUT   ile olabilir. 
:!!       :En son UNIX komutunu çalıştırmak üzere kullanılır. 
 UNIX komut yorumlayıcısına :sh ile erişip işlemler tamamlandıktan sonra

tekrar vi içine dönebilmek için ctrl ve d tuşlarına basılır. 
$ exit    :UNIX komut yorumlayıcısına :sh ile erişip işlemler tamamlandıktan

 sonra,tekrar vi  içine dönülmesini sağlar. 
:r !KOMUT :UNIX komutlarına eriştikten sonra bu komutun çıktısını editör

 içine aktarmasını sağlar. 
örnek: 
 Yazı isimli metin üzerinde işlemler yaparken,editör dışına çıkmadan

  dizin listesini görüntülemek istiyoruz.Bunun için, 
 : !ls 
yazmak gerekir.Komutun hemen ardından ilgili metin listesi görüntülenir.

Editör içindeki metin bu işlemden etkilenmez.Eğer, 
 :sh 
 $ ls 
işlemi yapılırsa yine aynı sonuç elde edilebilir.Bu işlemden sonra

 vi içine dönmek için ctrl ve d tuşlarına basılmalıdır. 
örnek: 
 UNIX'in date komutunu kullanarak elde edilen tarih bilgisini dosya içine aktarmak için, 
 :r !date 
komutu kullanılabilir.Yaratılan metin dosyasını hakan isimli kullanıcıya iletmek için, 
 :w !mail burak 
komutu kullanılabilir. 
 Ekrandaki Görüntünün Hareketi: 
 Vi editöründe metin dosyası bir ekrana sığmayacak ölçüde fazla satıra sahipse

 görüntü aşağıya veya yukarıya hareket ettirilebilir.Bu hareket

 satır satır olabileceği gibi,bir ekran uzunluğunda da olabilir.

Hatta yarım ekran hareketi sağlamak olasıdır. 
{^f}(control -f tuşu)  :bir ekran sonrasına doğrudan doğruya ulaşır. 
{^b}(control -b tuşu)  :bir ekran geri gider. 
{^d}                   :yarım ekran yukarı kayar. 
{^u}                   :yarım ekran aşağı kayar. 
{^e}                   :ekranı bir satır yukarı kaydırır. 
{n^e}                  :ekranı n satır yukarı kaydırır. 
{^y}                  :ekranı bir satır aşağı kaydırır. 
{n^y}                  :ekranı n satır aşağı kaydırır. 
örneğin 10 sayfa atlamak için <10^f> komutu kullanılır. 
{^g}                   : İmleçin hangi satır üzerinde  olduğunu gösterir.Ekranın en alt

 satırında imleçin yeni konumu,  satır ve tüm dosya içindeki yüzdesi olarak görüntülenir. 
örneğin 617 satırdan oluşan bir "yazı" isimli dosya için,imleç 229. satırdaysa 
 "yazı" line 229 of 617 --37%-- 
görüntüsü oluşur. 
 
 

 
İmleçin Hareketi: 
 Vi üzerinde imleçi hareket ettirmek suretiyle istenilen konumlara ulaştırabiliriz.

Bunu yapmak için imleçin konumu önemlidir.Bunu yapmak için imleçin konumu önemlidir. 
1)Sola Hareket: 
Sol hareket tuşu ve ya Geri boşluk tuşu(backspace) :İmleçi bir karakter sola kaydırır. 
{^h} veya {^H}  :İmleçi bir karakter sola kaydırır. 
{nh} veya {nH}  :İmleçi n karakter sola kaydırır. 
 Benzer biçimde,sayısal değer yazıldıktan sonra geri boşluk tuşuna basılırsa,imleç

 belirtilen sayıda karakter üzerinden geçerek istenilen konuma kayar.

Bu arada, üzerinde hareket ettiği tüm karakterleri yok eder.

Bu da geri boşluk tuşunun {h} ve {H} tuşlarından farkıdır. 
{^}   :İmleçi satırın boş olmayan ilk karakteri üzerine getirir. 
{0}   :İlk karakter ister dolu,isterse boş olsun,imleçi satırın ilk karakterine getirir. 
  
örnek: 
 UNIX System V 1983 ocak ayında duyuruldu.(imleç o harfinin üzerinde olsun.) 
5'e basıldıktan sonra <^h> veya <^H> tuşlarından birine basılırsa imleç 1 rakamının

 üzerine gelir.   
 
 
2) Sağa Hareket: 
Boşluk tuşu(spacebar) veya ileri hareket tuşu:İmleçi bir karakter sağa kaydırır. 
{l}      :İmleçi bir karakter sağa kaydırır. 
{nl}     :İmleçi n karakter sağa kaydırır. 
{$}      :İmleç satırın sağ tarafındaki en son karakter üzerine gelir. 
{n$}     :İmleç n.ci satırın sağ tarafındaki en son karakterin üzerine gelir. 
örnek: 
 UNIX System V 1983 oca ayında duyuruldu.(İmleç birinci karakter üzerinde olsun.) 
{32l} veya 32 sayısı ardından boşluk tuşuna basarsak imleç "duyuruldu"  kelimesinin

 ilk d harfinin üzerine gelir.   
 
 
3)Aşağı Doğru Hareket: 
 İmleçi aşağı doğru hareket ettirmenin en kolay yolu ardarda return veya enter tuşuna 

basmaktır. 
{j} veya {n^N}      :İmleç bir satır aşağı doğru gider. 
 veya {n^N}     :İmleç n satır aşağı gider. 
{n+}               :imleç n satır aşağı doğru gider. 
örnek: 
 UNIX System V 1983 ocak ayında duyuruldu 
 ve kullanıcıların hizmetine sunuldu. 
 1983'den bu yana bu versiyonun çeşitli 
 modelleri geliştirildi.Sistem V daha öncekilere 
 nazaran birçok ilave üstünlüğe sahiptir. 
İmleç birinci satırın ilk karakteri üzerinde olsun.İmleçi 3.cü satırın ilk karakteri 

üzerine doğrudan atlatmak için aşağıdaki işlemlerden biri yapılabilir: 
 1)Return veya enter tuşuna ardarda 3 kez basılır. 
 2)3 rakamı ardından {j} tuşuna basılır. 
 3)3 rakamı ardından Ctrl ve N tuşlarına basılır. 
 4)3 rakamı ardından {+} tuşuna basılır.   
 
 
4) Yukarı Doğru Hareket: 
{k} veya {^P}    :İmleç bir satır yukarı doğru hareket eder. 
{nk} veya {n-}   :İmleç n satır yukarı  doğru hareket eder. 
örnek: 
 Bir önceki örnekteki metinde: 
İmleç 4.satırın ilk karakteri üzerinde olsun.İmleçi 3 satır yukarı doğru hareket 

ettirmek için {3k} veya {3-} komutu kullanılır.   
 
 
5)Ekran Üzerinde İlk Ve Son Satıra Doğrudan Hareket: 
{H}     :İmleçi metnin birinci satırına hareket ettirir.Bu komut öncesinde sayısal bir değer 
         kullanılırsa imleç belirtilen satır üzerine hareket eder. 
{M}     :İmleçi ekranın tam ortasındaki satır üzerine hareket ettirir. 
{L}     :İmleçi son satır üzerine hareket ettirir.Bu komuttan önce sayısal bir değer kullanı- 
         lırsa,imleç belirtilen sayı kadar en alt satırdan itibaren yukarı doğru hareket 
         eder. 
örnek: 
 UNIX System V 1983 ocak ayında duyuruldu 
 ve kullanıcıların hizmetine sunuldu. 
 1983'den bu yana bu versiyonun çeşitli 
 modelleri geliştirildi.Sistem V daha öncekilere 
 nazaran birçok ilave üstünlüğe sahiptir. 
İmleç 5.satır üzerinde olsun. 
{H}    :İmleçi ilk satıra hareket ettirir. 
{2H}   :İmleçi yukarıdan aşağıya doğru 2. satıra hareket ettirir. 
{M}    :İmleçi ekranın ortasına hareket ettirir. 
{L}    :İmleçi son satıra hareket ettirir. 
{2L}   :İmleçi en alt satırdan itibaren 2 satır yukarıya hareket ettirir.

Bu konu ile ilgili daha detaylı bilgileri bir eğitim süreci içerisinde www.dokumanistan.com sitesindeki Unix ve Shellscript bölümlerinden faydalanabilirsiniz.
xxxxxx