3 Haziran 2014 Salı

Vi editörü



 Vi editörü hakkında FreeBSD  6 kitabı için yazdığım kısmı burada yayınlıyorum.


1         Vi Editörü


Vi editörü tüm UNIX ve Linux dağıtımlarıyla birlikte gelen ve yaygın bir kullanıcı kitlesi olan bir metin editörüdür. Komut satırından çalışmaktadır ve dosya oluşturmak, var olan dosyada değişik yapmak için kullanılır.

Vi’da kabaca iki farklı mod vardır. Birincisi komut diğeri yazı modu. Vi editörü çalıştığında komut modunda açılır.

Komut modunda editöre sadece komutlar gönderilir. Verilen komutlar ekranda yazı olarak gözükmez. Bu komutlar satır, kelime silme, dosyada aşağı, yukarı, sağa, sola hareket etme, dosyada kelime arama vs amaçlı verilebilir.

Yazı modunda ise basılan her karakter ekrana veri olarak yazılır. Yazı modundan komut moduna geçmek için ESC tuşu kullanılır. Fakat komut modunda iken bir başka komut çalıştırmak için ESC tuşuna basmaya gerek yoktur.

Genel kullanım biçimi aşağıdaki gibidir.

# vi [parametreler] dosyaadı

Not: Bu bölümde imlecin yerini belirtmek için imlecin olduğu karakterin altı çizili olarak gösterilecektir.

1.1    Dosya Açma Kapama İşlemleri


Örneğin deneme dosyası oluşturmak için aşağıdaki komut verilir.
# vi  deneme

~
~
~
deneme: new file: line 1

Buradaki ~  ifadesi boş satırları ifade eder. Satırlara yazı yazıldıkta bu ifade kaybolur.
En altta da dosyanın adının deneme olduğu ve yeni oluşturulan bir dosya olduğu belirtiliyor. Yukarıda belirtildiği gibi vi şu anda komut modundandır. Bu durumda iken i tuşuna basılarak yazma moduna geçilir ve yazılmak istenen metin yazılır.

Bu bir deneme metnidir.
~
~

Yazma işlemi bittiğinde dosyayı kaydetmek için önce ESC tuşuna basılır sonra :w (iki nokta üst üste ve w) tuşuna basılır.

Bu bir deneme metnidir.                       
~
~
deneme: 1 lines, 24 characters.

Değişiklikleri  :w ile yazdıktan sonra dosyadan çıkmak için :q komutları verilir. Değişikliği yazıp çıkmak içinse :x komutu veya :wq verilir .Yapılan değişiklikler kaydedilmeden çıkılacak olursa vi
“File modified since last complete write; write or use ! to override.” uyarısını verecektir. Bu durumda değişiklikler kaydedilmelidir veya  kaydetmeden çıkmak için :q!  komutu verilir. dosyayı farklı bir isimde kaydetmek için :w yenidosyadı  komutu verilir.

1.2    Vi’de Hareket Etme ve Yazma


Yazma ve dosya içerisinde hareket etmek için aşağıdaki vi komutları kullanılır.

i                                   İmlecin bulunduğu yerin bir gerisinden yazmaya başlar.
a                                  İmlecin bulunduğu yerin bir ilerisinden yazmaya başlar.
ENTER                       ENTER tuşu ile bir alt satırdan yazmaya devam edilir.
o (Küçük O harfi)       Bir alt satırda boşluk açıp satır başından yazma moduna geçer.
O (Büyük O harfi)      Bir üst satırda boşluk açıp satır başından yazma moduna geçer.
I (Büyük I harfi)         Bulunan satırın başına geçip yazma moduna geçer.
A                                 Bulunan satırın sonuna geçip yazma moduna geçer.


j                                   Bir satır aşağı inilir.
k                                  Bir satır yukarı çıkılır.
l                                   Bir karakter sola geçilir.
h                                  Bir karakter sağa geçilir.
0 (Sıfır )                       Bulunan satırın başına geçer.
$                                  Bulunan satırın sonuna geçer.
w                                 imlecin bulunduğu yerden bir sonraki kelimenin başına geçer.
b                                  imlecin bulunduğu yerden bir önceki kelimenin başına geçer.
:0                                 Dosyanın ilk satırına geçer.
:$                                 Dosyanın en son satırına geçer.
:satır numarası          Dosyanın belirtilen satır


1.3    Vi’da Silme ve Kopyalama


Yazı modunda iken backspace tuşu ile karakterler silinebilir. Komut modunda ise x komutu ile imlecin üzerinde bulunduğu karakter silinir. Birden fazla karakter silmek için bu komut art arda kullanılır. Veya imlecin bulunduğu yerden itibaren silinecek karakter sayısı ve x komutu verilir. Örneğin aşağıdaki satırda imleç i harfi üzerinde iken ve komut modunda iken 4x komutu verildiğinde

Bu bir deneme metinsdr.
~
Sonuç aşağıdaki gibi olacaktır.

Bu bir deneme metr.
~

Diğer silme komutları aşağıdaki gibidir:
dw                   İmlecin olduğu yerden itibaren kelimenin geri kalan kısmını siler.
db                    İmlecin olduğu yerden kelimenin başına kadar olan kısmı siler.
D                     İmlecin olduğu yerden satır sonuna kadarki tüm karakterleri siler.
dd                    İmlecin bulunduğu satırı tamamen siler.

Kopyalama içinse aşağıdaki komutlar kullanılır.
y                      Yakalamak (yank) manasına gelir. Tek bir karakteri kopyalar.  Kopyalanan karakter p komutu ile imlecin konumun sağına yapıştırılır.
yy                    İmlecin olduğu satır kopyalanır. Yine p komutu ile yapıştırılır.
P                      Büyük P komutu ile de kopyalanan satır imlecin bir üstündeki satıra yapıştırılır.
Örneğin

Aşağıdaki dosyanın ilk satırını dosyanın sonuna kopyalamak için birinci satırda iken yy komutu verilir dosyanın sonuna :$ ile geçilir ve p komutu verilir.

Bu bir deneme metnidir.

Bu bolumde vi editoru anlatilacaktir.
~
Sonuç aşağıdaki gibi olacaktır:

Bu bir deneme metnidir.

Bu bolumde vi editoru anlatilacaktir.
Bu bir deneme metnidir.
~

Dosyanın en son satırında iken p yerine P komutu verilseydi sonuç aşağıdaki gibi olacaktı:

Bu bir deneme metnidir.

Bu bir deneme metnidir.
Bu bolumde vi editoru anlatilacaktir.
~


Hata yapıldığında yapılan değişiklik u komutu ile geri alınır. Bu komut ile sadece son komutta yapılan değişiklikler geri alınır. Tekrar u komutu verilirse yapılan değişiklik tekrar gelir (redo)




1.4    Vi’de Değiştirme ve Arama


Tek bir karakteri değiştirmek için imleç ilgili karakterin üzerindeyken r komutuna basılır ve hemen ardından yeni karakter tuşlanır, işlem sonunda vi komut moduna döner.

s komutu ile de birden fazla karakter değiştirilebilir. Komutun başına değiştirilecek karakter sayısı yazılır. Bu komutla vi yazı moduna geçer.
cw (change word) komutu ile bir kelimenin tamamen silinip yerine yenisi yazılır. Kelimenin başında iken cw komutu verildiğinde kelime silinecek, vi yazı moduna geçecektir.  Eğer komut kelime ortasında verilirse imleçten kelime sonuna kadar olan karakter silinecektir.
~ komutu ile imlecin üzerindeki harf büyükse küçük, küçükse de büyük harf yapılır.

Metin içerisinde geçen bir karakter veya kelimeyi aramak için / komutu kullanılır. / komutu verildiğinde arama moduna geçilir ve ekranın en alt kısmında / ile başlayan bir satır oluşur. Buraya aranacak kelime yazıldıktan sonra ENTER tuşuna basılır. Aranan kelime metinde varsa imleç bu kelimenin üzerine gidecektir.  metin içerisinde aramaya devam etmek için n komutu kullanılır.

Örneğin aşağıdaki metinde vi kelimesi aratıldığında

Bu bir deneme metnidir.

Bu bolumde vi editoru anlatilacaktir.
vi unix dunyasinda yaygin olarak kullanilan bir editordur.
~
/vi


Bu bir deneme metnidir.

Bu bolumde vi editoru anlatilacaktir.
vi unix dunyasinda yaygin olarak kullanilan bir editordur.
~

n komutu verilirse imlecin yeri aşağıdaki gibi değişecektir.

Bu bir deneme metnidir.

Bu bolumde vi editoru anlatilacaktir.
vi unix dunyasinda yaygin olarak kullanilan bir editordur.
~

/ yerine ? komutu kullanılırsa geriye doğru arama yapılır.


Metinde geçen bir kelimeyi değiştirmek için :%s komutu kullanılır.  Komutun kullanım şekli aşağıdaki gibidir.
:s/eski/yeni Sadece imlecin bulunduğu satırdaki eski değeri yeni olarak değiştirir.
:%s/eski/yeni/g Tüm metin içerisinde değişiklik yapar. g değerinin yanına c değeri de eklenerek  (:%s/eski/yeni/gc) değişiklik yapılmadan önce onay alınabilir.
Aslında buradaki eski ve yeni değerleri birer düzenli ifadedir (regular expression). Düzenli ifadeler kullanılarak ileri seviye değişiklikler yapılabilir.

Örneğin aşağıdaki metindeki Pazar ifadesini Pazartesi yapmak için:

Bu Pazar enderunix toplantisi yapilacaktir.   
Pazar gunu gorusmek uzere....
~

:%s/Pazar/Pazartesi/g komutu verilir.

Bu Pazartesi enderunix toplantisi yapilacaktir.   
Pazartesi gunu gorusmek uzere....
~

1.5    Diğer komutlar


En son komutu tekrar çalıştırmak için sadece . (nokta) tuşuna basılması yeterlidir.

:set number veya kısaca :set nu komutu verilerek satırların yanında satır numarasının gözükmesi sağlanabilir

# vi deneme
Bu bir deneme metnidir.
       
Bu bolumde Acik Akademi yayinlarindan cikan FreeBSD 6 kitabi hakkinda bilgi verilecektir.
~      
~      

:set nu
komutu verildiğinde ekran aşağıdaki gibi gözükecektir:
1 Bu bir deneme metnidir.
2
3 Bu bolumde Acik Akademi yayinlarindan cikan FreeBSD 6 kitabi hakkinda bilgi verilecektir.
~      
~      

Satırları tekrar numarasız hale  getirmek için de
:set nonu veya :set nonumber
komutu verilir.

:r dosya  komutu ile dosya içeriği mevcut dosya aktarılır.




İsmail Yenigül

Not: Açık Akademi FreeBSD 6 kitabından alınmıştır.