Linux VI Editörü


Unix Linux sistemleri yönetmek ve bir şeyler yapmak istiyorsanız konsolda çalışmayı bilmeniz gerekir. Çünkü her zaman masaüstüyle karşılaşmazsınız ayrıca bu çalışmaları yaparken de dosyalarla uğraşırken bir editör kullanmanız şart. Peki, bu Linux âleminde editörler arasında en yaygın olanı ve olmazsa olmazı nedir derseniz? Cevabımız, tabi ki vi. Visual editor = vi.

 

 

Sevgili Linux sistem yöneticisi olmaya aday arkadaşlarım, sadece bir sistemin dosyalarını editlemek kolay bir iş ama yönettiğiniz yüzlerce sistem varsa hepsinde GUI açıp mı editlemek yapacaksınız?

Eğer Vi editöründen haz etmezseniz sizlere Pico ve emacs gibi başka editörleri de önerebilirim.

 

 

Şimdi bir önceki makalede VMware kurduğumuz CentOS 5.4 sistemimize cozumpark kullanıcısı ve şifresi ile login olup bir konsol açalım. Bir önceki makaleden nasıl açıldığına bakılabilir. Komut satırına vi yazıp Enter’a basarsanız size vi içi boş sayfa getirecektir.(network ayarlarını öğrendikten sonra bizde remote bağlanacağız! Şimdilik Vmware ara yüzünden devam ediyoruz.)

 


vi [seçenekler] dosya_ismi

 

[cozumpark@artemis ~]$ vi –> sadece vi dedikten sonra dosya ismi vermezsek içi boş editleme alanı getirir. Sonrasında yapılan işlemleri kaydetmek için bir dosya ismi ister.
[cozumpark@artemis ~]$

 

 

image001

 

 

Editörden çıkmak için : (Colon) ve q ile çıkabilirsiniz. Vi editörü text bazlı full ekran modda çalışan bir editör dür. İki modu vardır.

 

  1. Command mode(komut modu); Dosyanın üstünde dosyanın içine girmeden yapılan işlemler için kullanılır.(ben on the fly mode diyorum)

 

  1. Insert mode(editleme modu/etkileşimli mod); Dosyayı editlemek için kullanılır. Insert Modundan çıkmak için ESC(ESCABE) tuşuna basmak gerekir.

 

 

VI editöründe komutlarda genel olarak aşağıdaki gibi özellikler vardır.

 

  • Case sensitive dir. Yani a ve A birbirinden farklıdır.
  • Herhangi bir komuta bastığınızda ekranda komut belirmez, âmâ değişiklik gerçekleşir.
  • Komutu verdikten sonra Enter’a(Return) basmanıza gerek yoktur.
  • Komut modunda Vi editöründe komuttan önce ayrıca bir sayı verip sonra komut girilirse komut o sayı kadar tekrarlanır.

 

 

VI ile bir dosya editlemek istiyorsak vi o dosyayı belleğe geçirir. Siz “save” değinceye kadar bütün değiştirilenler bellekte kalır. Save” ederseniz dosya orijinalinin üstüne yazılır.

 

 

Dosya Açmak

 

vi [seçenekler] dosya_ismi diyerek bir text dosyayı editlemeye başlayabiliriz. Eğer dosya boş ise ekrana doğal olarak herhangi bir şey gelmeyecektir.

 

 

[cozumpark@artemis ~]$ vi +2 linux.txt — > İmleci Dosyanın 2. satırına getirerek dosyayı aç.

[cozumpark@artemis ~]$ vi + linux.txt — > İmleci Dosyanın son satırına getirerek dosyayı aç.

[cozumpark@artemis ~]$ vi +/kaynak linux.txt — > İmleci içinde “kaynak” ifadesi geçen ilk satırın başına getirerek dosyayı aç.

 

 

Örnek;

 

[cozumpark@artemis ~]$ man cat >> cat_ornek.out à hemen kendimize bir dosya oluşturduk

[cozumpark@artemis ~]$

[cozumpark@artemis ~]$ vi cat_ornek.out à Oluşturduğumuz dosyayı vi editörü ile açtık, karşımıza aşağıdaki gibi ekran gelmiş olması gerekiyor.

 

 

 

 

 

 

Bu dosyadan çıkmak için Esc ve “:” sonra “q” ile çıkabilirsiniz. Şimdide olmayan bir dosya ismini vi ile açmaya çalıştığımızda içi boş bir ekran getireceğini göreceğiz.

 

[cozumpark@artemis ~]$ vi olmayan_dosya

[cozumpark@artemis ~]$

 

 

 

 

 

 

 

  1. Komut Modunda İmleci Dolaştırma

 

 

Klavyedeki yön tuşları ile beraber vi editöründe dosya üstünde gezmek için H,J,K,L tuşları da kullanılırlar.

 

 

h :           sola bir karakter

j :            aşağı bir karakter

k :           yukarı bir karakter

l :             sağa bir karakter

 

 

 

 

 

 

 

İmleç(cursor) 2k derseniz bulunduğunuz yerden 2 satır yukarı çıkar,3h derseniz bulunduğunuz yerden 3 karakter sola gider.

 

 

 

Hareket Komutları(movement commands)

Açıklama

[return]

Bir sonraki satırın başına gider.

$

satırın en sonuna gider.

0 (sıfır)

satırın en başına gider.

^

satırın boş olmayan ilk yerin başına gider.

w

Bir sonraki kelimenin veya noktalama işaretinin olduğu yere git.

W

İlk boşluk karakterini geçip hemen bir sonraki kelimenin başında dur.

b

Bir önceki kelimenin veya noktalama işaretinin olduğu yere gider.

B

Bir önceki kelimenin başına gider, noktalama işaretlerini göz ardı eder.

e

Bir sonraki kelimenin veya noktalama işaretinin olduğu yere gider.

E

Bir sonraki kelimenin sonuna gider, noktalama işaretlerini göz ardı eder.

H

İmleci ekranın en tepesine götürür.

M

İmleci ekranın ortasına götürür.

L

İmleci ekranın en son satırına götürür

G

Dosyadaki son satıra gider.

xG

Dosyada X numaralı satıra git.

 

 

Örnek;

 

 

Şimdi konsola “vi linux.txt” komutunu girin, INSERT mod için “i” ye basın. Aşağıdaki text’ i buradan kopyalayın ve Shift+ Insert ile Linux sistemdeki dosyamıza sırasıyla “Esc , : , w” diyerek kaydedin.

 

İlerleyen örneklerde kullanacağımız orijinal metin;

 

“Linux, (telaffuz: Amerikan İngilizcesinde: linək/ Lin-əks, Avrupa ve Kanada’da lɪnʊks / Lin-uks) Unix’e fikirsel ve teknik anlamda atıfta bulunaraktan geliştirilmiş; açık kaynak kodlu, özgür ve ücretsiz bir işletim sistemi çekirdeğidir.

 

Çekirdeğin kaynak kodları GNU Genel Kamu Lisansı çerçevesinde özgürce dağıtılabilir, değiştirilebilir ve kullanılabilir. Linux ismi ilk olarak Linus Torvalds tarafından yazılan ve 5 Ekim 1991 Linux 0.02 etiketiyle duyurusu yapılan, Linux çekirdeğinden gelmektedir.

 

Linux, hemen her bilgisayar platformunda sorunsuzca kullanılabilmektedir. Çok geniş bir donanım desteğine sahip olan Linux; netbook, dizüstü bilgisayar, sunucu bilgisayarlar, iş istasyonu, akıllı telefon, masaüstü bilgisayarlar gibi hemen her platformda tam bir uyum içerisinde çalışabilmektedir.

 

Ağırlıklı olarak sunucu ve iş istasyonu platformlarında tercih edilse de taşınabilir ve masaüstü sistemlerde de kullanım oranını günden güne arttırmaktadır. Ayrıca Linux sunucu-işletim sistemlerinde ilk sırada tercih edilmekte ve dünyanın 10 hızlı süper bilgisayarında da kullanılmaktadır[kaynak belirtilmeli].”

 

 

Bu örnekte cursor(imleç) 2. Satırdaki kaynak kelimesinin başında duruyor. Eğer imlecin bulunduğu satır yani 2. Satırın başına gitmek istersek “0”a basıyoruz. İmleçten sonraki kelimelerin ve noktalama işaretlerinin olduğu yerlere gitmek istiyorsak “w” ile gidiyoruz. Geriye doğru gezinmek için b(ack)’ye basıyoruz. Satır sonu içinde “$” karakterini kullanıyoruz. 1G deseydik imlecimiz 1. Satıra gidecekti.

 

 

 

 

 

 

  1. Editleme moduna Geçmek ve Dosyaya Bir şeyler Yazmaya Başlamak

 

Dosyanın üstünde r hariç diğerleri basıldıktan sonra dosyada Editleme moduna geçer ve dosya içine bir şeyler yazmaya başlarsınız.

 

 

Komutlar

Açıklama

r

İmlecin üstünde bulunduğu karakteri değiştirir. Aslında command modda kalır, dosyayı insert moda geçirmez.

i

İmleçten önceki yere basılan karakteri insert eder.

a

İmleçten sonraki yere basılan karakteri insert eder.

A

Satırın en sonuna basılan karakteri insert eder.

o

Bir sonraki kelimenin veya noktalama işaretinin olduğu yere git.

O

İlk boşluk karakterini geçip hemen bir sonraki kelimenin başında dur.

cw (change word)

İmlecin üzerinde bulunduğu kelimeyi silip insert moda geçer.

 

 

Örnek;

 

İmleç 2. Satırdaki kaynak kelimesindeki k harfinin üzerindeyken

 

  • “i” harfine bastığımızda kaynak kelimesinin hemen başından dosyamızı insert moduna geçirir.
  • “a” harfine bastığımızda kaynak kelimesindeki k harfinden hemen sonra dosyamızı insert moduna geçirir.
  • “A” harfine bastığımızda 2.satırın sonuna gidip dosyamızı insert moduna geçirir.

 

Ve dosyanın sol alt köşesinde dosyamızın insert modunda olduğunu anlamamız için bize “INSERT” işaretini gösterir.

 

 

 

 

 

İmleç 2. Satırdaki kaynak kelimesindeki k harfinin üzerindeyken “o” harfine bastığımızda 2.satırın sonuna gidip sanki Enter’a basmış gibi bir sonraki satırı aşağı indirdi ve boş satırın başına İmleci getirdi.

 

 

 

 

İmleç 2. Satırdaki kaynak kelimesindeki k harfinin üzerindeyken “O” harfine bastığımızda 2.satırın başına gidip, sanki Enter’a basmış gibi bulunduğumuz satırı aşağı indirdi ve boş satırın başına
İmleci getirdi.

 

 

 

 

Kelimeleri değiştirmek içinde “c” (change) harfini kullanıyoruz. C harfine hareket harflerini de ilave ederek daha güçlü bir değiştirme ara yüzüne sahip oluyoruz. Mesela

 

  • c2w; ile imlecin bulunduğu yerden itibaren sonrasındaki iki kelimeyi silerek dosyamızı insert moduna geçirir.
  • c2b; ile imlecin bulunduğu yerden itibaren gerisindeki iki kelimeyi silerek dosyamızı insert moduna geçirir.
  • c0; ile imlecin bulunduğu yerden o satırın başına kadar silerek dosyamızı insert moduna geçirir.
  • c$; ile imlecin bulunduğu yerden o satırın sonuna kadar silerek dosyamızı insert moduna geçirir.

 

 

c2w; İmleç 2. Satırdaki kaynak kelimesindeki k harfinin üzerindeyken c2w komutu ile “kaynak kodları” ifadesini silip dosyamızı insert moduna geçirdik.

 

 

 

 

 

 

c2b; İmleç 2. Satırdaki kaynak kelimesindeki k harfinin üzerindeyken c2b komutu ile “Çekirdeğin” ve “.” ifadelerini silip dosyamızı insert moduna geçirdik.

 

 

 

 

 

 

C0; İmleç 2. Satırdaki kaynak kelimesindeki k harfinin üzerindeyken c0 komutu ile “Çekirdeğin” ifadesini silip dosyamızı insert moduna geçirdik.

 

 

 

 

 

 

C$; İmleç 2. Satırdaki kaynak kelimesindeki k harfinin üzerindeyken c$ komutu ile “Çekirdeğin” ifadesinden sonra ne varsa silip dosyamızı insert moduna geçirdik.

 

 

 

 

 

 

Cc; İmleç 2. Satırdaki kaynak kelimesindeki k harfinin üzerindeyken cc komutu ile 2. Satırı tamamen sildi ve imleci satır başına getirerek insert moduna geçtik.

 

 

 

 

 

 

  1. Silme İşlemi Yapmak

 

Silme işlemlerini dosyanın dışında/üstünde yapıyoruz. Insert modunda dosyanın içeriğini değiştiriyorsak Esc ile dosyanın üstüne geçip dosyada silme işlemlerini yapabilirsiniz. Eğer tek karakter sileceksek “x” bir kelime veya kelimeler sileceksek “d” harfini kullanıyoruz. “c” (change) işleminde yaptığımız gibi “d” (delete) komutuna da hareket harflerini vererek nereye kadar silmesi gerektiğini sisteme söyleyebiliyoruz.

 

 

Komutlar

Açıklama

x

İmlecin üzerinde bulunduğu karakteri siler.

3x

İmlecin üzerinde bulunduğu karakterden sağa doğru 3 karakter siler.

dw

İmlecin üzerinde bulunduğu kelimeyi siler.

d2w

İmlecin olduğu yerden itibaren 2 kelime sil.

dd

İmlecin bulunduğu satırı siler. Aslında cut komutu yerine de geçer. Kesme işlemlerinde de kullanılır.

2dd

İmlecin bulunduğu satırı ve bir sonraki satırı siler.

d)

İmlecin üzerinde bulunduğu cümleyi siler.

d}

İmlecin üzerinde bulunduğu paragrafı siler.

D

İmlecin üzerinde bulunduğu satırdan sonuna kadar siler.

d$

İmlecin üzerinde bulunduğu yerden satırın sonuna kadar siler.

db

İmlecin üzerinde bulunduğu kelimeden bir önceki kelimeyi siler.

dG

Dosyanızın 1. Satırındayken bütün dosya içeriğini silmek için.

 

 

 

d2w; İmleç 2. Satırdaki kaynak kelimesindeki k harfinin üzerindeyken d2w komutu ile “kaynak kodları” ifadesini dosyamızdan sildik.

 

 

 

 

 

 

d$; İmleç 2. Satırdaki kaynak kelimesindeki k harfinin üzerindeyken d$ komutu ile “Çekirdeğin” ifadesinden sonra ne varsa satır sonuna kadar dosyamızdan sildik.

 

 

 

 

 

 

dd; İmleç 2. Satırdaki kaynak kelimesindeki k harfinin üzerindeyken dd komutu ile 2. Satırı tamamen sildik.2. satırın yerine 3. Satır geldi.

 

 

 

 

 

 

  1. Kopyalama ve Yapıştırma Yapmak

 

Kopyalama ve yapıştırma işlemlerini yine dosyanın dışında yapıyoruz. Yani yine ESC’ ye basarak dosyanın üstüne geçip dosyada kopyala ve yapıştır yapabilirsiniz.
Kopyalama için “y” (yank) ve yapıştırmak için “p” (put) harflerini kullanıyoruz. “y” (yank) komutunu yine hareket komutları ile beraber kullanıp y2w,2yy,y$ gibi olayı çeşitlendirebiliriz.
p” (put) komutu “d” delete veya “y” (yank) edilmiş bellekte bulunan ifadeleri dosyamıza yapıştırır.

 

 

Komutlar

Açıklama

yy veya YY

İmlecin üzerinde bulunduğu satırı kopyalar.

y)

İmlecin bulunduğu cümleyi kopyalar.

y}

İmlecin bulunduğu paragrafı kopyalar.

p

İmlecin bulunduğu yerin altına bellektekileri yapıştırır.

P

İmlecin bulunduğu yerin üstüne bellektekileri yapıştırır.

 

 

 

y3w , P; İmleç 2. Satırdaki kaynak kelimesindeki k harfinin üzerindeyken y3w komutu ile “kaynak kodları GNU” ifadesini belleğe kopyaladık. Sonra 1G diyerek 1. Satırın başına gittik. Belleğe kopyaladığımız ifadeleri yapıştırmak için ”P” harfine bastık.

 

 

 

 

 

Genel Örnek;

Bu örnekte imleç (cursor) 6. Satırın başında Konstantinopolis kelimesinde duruyor. Vi dosya_ismi diyerek dosyaya girdik. ESC’ ye bastık sonra : (colon),sonrasında set nu diyerek satır numaralarını gösterdik.

İmlecin bulunduğu yerden gerekli komutları girerek nasıl bir durumla karşılaşılacağı anlatılmaya çalışıldı. İmlecin üzerinde bulunduğu 6. Satırdaki K harfinden yaptığı hareketleri çizgi üstündeki veya sonundaki komutlara bakarak görebilirsiniz. Kendi kendinize komutları kullandıkça vi editörünü gittikçe daha çok sevecek ve vi editörünün gerçek gücünü keşfedeceksiniz.

 

 

 

 

  1. Kaydedip Çıkmak veya Kaydetmeden Çıkmak

 

Esc tuşuna basılır ve : (Colon) ardından wq yani “ :wq “ kombinasyonu yeterli. Dosyadan çıkMAdan sadece yapılan değişiklikleri kaydetmek istiyorsak “ :w “dememiz gerekli. Kaydetmeden çıkmak istiyorsak “ :q! “ demek yeterli.

 

 

Komutlar

Açıklama

:wq!

Dosyada yapılan değişiklikleri kaydet ve çık.

:q!

Dosyada yapılan değişiklikleri kaydetMEden çık.

ZZ

:wq komutuyla aynı işlemi yapar. Dosya üstünde yapılan değişiklikleri kaydeder ve çıkar.

😡

Dosyayı kaydederek çık.

:w dosya_ismi

Dosyayı başka isimle kaydet.

u

Satır üstünde yapılan son değişikliği geri almak için. (tek hamlelik Undo)

U

Satır üstünde yapılan bütün değişiklikleri geri almak için. (çok hamlelik Undo)

 

  1. (İleri) Komut Modunda Çalışmak

 

VI editöründen de önce aslında yeşil siyah terminal ekranlarda çalışılırken “ex” editör denilen vi’nin ata babası bir editör var. İleri vi komutları bölümünde aslında bu “ex” yapısını göreceğiz. ”ex” Komut modunda çalışmak için ESC’nin ardından “:” dersek ekranın sol alt köşesinde : işaretini göreceğiz. Ve vi editörü bizden komut bekleyecek. Aşağıdaki tablolarda “:” karakterinden sonra girilebilecek komutlar açıklaması ve kullanımı ile verilmiştir.

 

 

Komutlar

Kısaltma

Açıklama

delete

d

Satır siler

move

m

Satırı keser.

copy

co

Satırı kopyalar.

 

t

Satırı kopyalar. co komutunun görevce eş anlamlısı.

 

 

 

ex” komut yapısını çoğunlukla dosya içerisinde bir ifadeyi aramak veya değiştirmek için kullanacağız. Yukarıdaki tabloda silme, kesme ve kopyalama kısaltmalarını gösterdik. Eğer bir dosyanın içinde ,büyük değişiklikler yapmak istiyorsak satırlarla çok ilişki kurmamız gerekir, onun için bize bir adresleme mekanizması gerekli. Adresleme için hemen aşağıdaki tablodan yararlanacağız.

 

 

Adres Gösterimi

Açıklama

.

İmlecin üzerinde bulunduğu satır.

n

n. satır

.+m

İmlecin üzerinde bulunduğu satır + m satır daha

$

Dosyanın Son satırı

%

Dosyadaki tüm satırlar. Bunu 1,$ olarak düşünebilirsiniz.

/ifade/

İçinde “ifade” geçen satırlar

[addr1],[addr2]

Verilen satırlar arasında.

 

 

Örnek;

 

:4

4.satıra gider.

:=

Dosyadaki toplam satır sayısını verir.

:.=

İmlecin üzerinde bulunduğu satır dosyada kaçıncı satır olduğunu gösterir.

:/ifade/=

Dosya içinde ilk “ifade” geçen satırın numarası.

:.,$d

İmlecin üzerinde bulunduğu satırdan dosyanın sonuna kadar sil.

:20,.m$

20. satırdan imlecin üzerinde bulunduğu satıra kadar olan kısmı dosyanın sonuna kes(delete) ve yapıştır(put).

:%d

Dosyanın içindeki bütün satırları sil.

:%t$

Dosyanın içindeki bütün satırları kopyala(t=>co ve %=>1,$ unutmayın!!) ve dosyanın sonuna yapıştır.(yank ve put)

:4,25d

Dosyada 4. Satırla 25. Satırlar arasını sil.

:1,$d

Dosyanın içindeki bütün satırları sil.

 

Komutlar

Açıklama

:set nu

Satır Sayılarını gösterir.

:set nonu

Satır sayılarını gösterme.

:set list

Görünmeyen karakterleri göster.

:set nolist

Görünmeyen karakterleri gösterme.

:set autoindent

Enter’a basıldıktan sonra hizalama yap.

:set noautoindent

Turn off autoindent.

 

    1. Dosyada Kayıt Arama

 

 

Dosyamız içerisinde herhangi bir kayıt ararken imleç eğer dosyada aranan ifade varsa, o ifadenin ilk geçtiği satıra gider.

 

Aranılan ifadeyi aynı zamanda her yerde değiştirmek istiyorsak “g” global parametresini “:”dan hemen sonra girmemiz gerekli.

 

 

 

:/ifade veya

:/ifade/

İleriye doğru ifadeyi arar. Bir sonraki ifadeyi gitmek için n, bir önceki ifadeyi gitmek için N’ye basmak gerekli.
Bir önceki makalede öğrenmiş olduğumuz regular expression(regex ) karakterleri vi editöründe arama yaparken kullanabiliriz.
^
Satırın başıyla eşleşir.
$ Satır sonu ile eşleşir.
. Herhangi bir tekil karakterle eşleşir.
* Bir önceki karakterden biriyle eşleşir.
.* Herhangi bir karakterle eşleşir.

:?ifade

Geriye doğru ifadeyi arar. Bir sonraki ifadeyi gitmek için n, bir önceki ifadeyi gitmek için N’ye basmak gerekli.

 

Örnek;

 

Şimdi konsola “vi kaldirimlar.txt” komutunu girin, INSERT mod için “i” ye basın. Aşağıdaki texti buradan kopyalayın ve Shift+ Insert ile Linux sistemdeki dosyamızın içine kopyalayın ve “Esc + : + w” diyerek kaydedin.

 

Kayıt aramasında kullanacağımız orijinal text;

 

“KALDIRIMLAR”

 

Sokaktayim, kimsesiz bir sokak ortasında;

Yuruyorum, arkama bakmadan yuruyorum.

Yolumun karanliga saplanan noktasinda,

Sanki beni bekleyen bir hayal goruyorum.

 

Kara gokler kul rengi bulutlarla kapanik;

Evlerin bacasini kolluyor yildirimlar.

In cin uykuda,yalniz iki yoldas uyanik;

Biri benim,biri de serseri kaldirimlar.

 

Icimde damla damla bir korku birikiyor;

Saniyorum,her sokak basini kesmis devler…

Ustume camlarini,hep simsiyah,dikiyor;

Gozune mil cekmis bir ama gibi evler.

NFK”

 

:/asinda à Esc’ye bastık,sonra “:” dedik,sonrasındaasinda” ifadesini dosyamızda aradık ve bize 3. Ve 5. Satırda aranılan ifadenin olduğunu vurguladı.

Eşleşen Satırlar arasında dolaşmak için “N” ile devam ettik.

 

 

 

 

 

 

:/asinda/d — > dediğimizde sadece 3. Satırı sildi.4.satırı silmemiz için “g” dememiz gerekliydi hatırlarsanız.

 

 

 

 

 

 

:g/asinda/d à Yapılan değişikli Esc’ye ve “u” ya basarak geri aldık.sonrasında :g/asinda/d dedik.ve gördüğünüz gibi içinde “asinda” geçen 3. Ve 5. Satırları dosyamızdan sildik.

 

 

 

 

 

 

:/^San/ à Dosyamızda “San” ile başlayan ifadeleri aradık.

 

 

 

 

 

 

:4,/Evlerin/m13 à 4. Satırdan itibaren “Evlerin” ifadesi geçen satıra kadar yani yukarıdaki resimde gördüğünüz gibi 4.,5. Ve 6. Satıra kadar olan satırları 13. Satıra kes ve yapıştır.

 

 

 

 

 

 

:/[Bb]ir.*/ à Satırın içinde “B” veya “b” ile başlayacak devamında “ir” olacak,”ir”den sonra herhangi bir karakter gelecek ve o karakterden bir veya daha fazla bir şeyler olacak. Yani “ir”den sonra ne gelirse gelsin hepsini bul.

 

 

 

 

 

 

    1. Dosyada Kayıt Değiştirme

 

 

Dosyamız içerisindeki herhangi bir ifadeyi değiştirmek istediğimizde “s” (substitute) komutunu kullanacağız. Aradığımız ifadenin nerede geçebileceğine dair alanı daraltmak için adres verebiliriz,

Sonrasında eski ifadeyi ve yeni ifadeyi aralarında “/” koyarak komutu veriyoruz.

 

 

 

:[adres]s/eski /yeni/flags

Dosya içinde eski_text geçen yerleri yeni_text ile değiştir.İstisnalar flaglerle olur.Ayrıntılar ve örnekler aşağıda.

Flag olarak g –> dosyanın tamamında işlem yap.
c — > işlem yaparken doğrula (Kullanıcıdan işlemin yapılıp yapılmaması için doğrulama istemek.)

 

 

Örnek;

 

 

:%s/bir/iki/g — > Dosyamızdaki “bir” geçen satırlarda “bir”i “iki” ifadesi ile değiştirdik. Adres kısmına ne yazdık “%”, yani bu aslında aynı zamanda “1,$” demekti hatırlarsanız. Komutun sonunda ise “g” global bayrağını kullanarak değişikliği bütün dosya içinde yapmasını söyledik.

 

 

 

 

 

 

Yaptığımız değişiklikleri geri aldık.(Esc + U)

 

 

:13,16s/bir/BIRR/g — > Şimdi de dosyamızda 13. Ve 16. Satırlar arasında yer alan “bir” ifadesini “BIRR” ifadesi ile değiştirdik.

 

 

 

 

 

 

Genel Örnekler;

 

:s/hasret/vuslat/

 

İmlecin bulunduğu satırda imlece hemen yakında hasret kelimesi var ise vuslat ile değiştirir.

 

:s/çile/sabır/g

 

İmlecin üzerinde bulunduğu satırdaki bütün çile kelimesini sabır ile değiştirir.

 

:%s/savaş/barış/g

 

Dosyanın tamamında geçen savaş kelimesini barış ile değiştir.

 

:%s/savaş/barış/gc

 

Yukarıdaki ile aynı işi yapar,yapmadan önce her hamlede kullanıcıdan doğrulama bekler.

 

:.,.+10s/haset/gıpta

 

İmlecin bulunduğu satırdan 10 satır ilerideki satır dahil olarak toplam 11 satırda haset kelimesinin ilk geçtiği yerde kelimeyi gıpta ile değiştirir.

 

:20,100s/teknoloji/yenilik

 

Dosyanın içinde 20 ile 100. Satırlar arasında geçen teknoloji kelimelerini yenilik ile değiştirir.

 

:%s/.$//

 

Dosyanın her satırının son karakterini sil. Bu değiştirme ifadesi Windows’tan Unix’e düzgün kopyalanmayan dosyalarda satır sonlarındaki ^M ifadesini kaldırmak için işinize yarayabilir.

 

:/[a-z]atan

 

Dosyanın içinde kelimenin son ifadesi “atan” olacak şekilde sapan,katan,satan,çatan gibi kelimeleri bulacak.

 

:/[^c]an

 

Dosyanın içinde kelime başında c geçmeyecek ve sonu “an” ile bitecek kelimelere bakar,yani muhtemel ifadeler kan,tan,man gibi.

 

 

    1. Dosyayı Farklı Şekilde Kaydetmek

 

 

Şimdi de en son kısma geldik. Dosyamızı editledik fakat başka bir isimle kaydetmek istiyoruz veya dosyamızın sadece bir kısmını bir yere kaydetmek istiyoruz.”w” (write) komutunu kullanacağız yine,fakat normalde dosyayı sadece kaydederken isim vermiyor idik şimdi argüman olarak bir yeni bir dosya ismi vereceğiz. İsterseniz öğrenmiş olduğumuz adresleme mekanizmasını kullanarak dosyanın sadece belirli bir kısmını bir yere yazabiliriz.

 

 

 

Komutlar

Kısaltma

:w yeni_dosya_ismi

Dosyamıza yeni dosya ismi vererek kaydetmemize yardımcı olur.

:10,200w yeni_dosya_ismi

Dosyamızın sadece 10. Ve 200. Satırları arasındaki bölümü yeni dosya ismi vererek kaydetmemize yardımcı olur.

:300,$w >> var_olan_dosya_ismi

Dosyamızın 300. Satırında sonuna kadar olan bölümünü var olan bir dosyanın sonuna “appendeder,yani o dosyanın sonuna yapıştırır.

 

Kaynaklar;

 

O’Reilly’s Learning the VI Editor 6th Edition.

 

 

Exit mobile version