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.