:::: MENU ::::

Vim Nedir? ve Nasıl Kullanılır?

vim-kullanimiVim  Nedir? ve Nasıl Kullanılır? Vim (VIM – Vi IMproved,Vi’nin geliştirilmiş halidir.), UNIX ve LINUX sistemlerde konsolda kullanılabilecek başarılı editörlerden biridir. Her sistemde hazır olarak bulunması onu ihtiyaç duyulduğunda kullanılacak editör haline getirmiştir. Kullanım dışarıdan zor gibi gözükse de bir sefer kullanma zevkine varınca son derece kolay olduğu anlaşılacaktır.

Vim ile yazı yazmak için belli durumlar söz konusudur. Yazı modu ve editör fonksiyonlarını kullanmak içinde farklı bir konuma geçilmelidir.
Komut konumu bu konumda basılan bir tuş ekranda görüntülenmez ama bir işlevi vardır. O işlev gerçekleşir.

Bir komut başlamadan girilen rakamlar vim editörün o komutu kaç kez tekrarlayacağını belirtir.
Vim çalıştırmak amacıyla konsol içerisinde aşağıdaki biçimde yazılması yeterlidir.

Çalıştırıldıktan sonra aşağıdaki ekran görüntüsü bizleri karşılayacaktır. Çoğu kullanıcı bu ilk çıkan açılış ekranından çıkışı dahi bulamadıkları için vim kullanmaktan vazgeçmişlerdir.

Bu yüzden çıkmak için neler gerektiğini hemen belirteyim.
ESC tuşuna basıldıktan sonra, “ : ” basılır.  Ekranın sol alt köşesinde çıkan “ : ” dan sonra  “q!” yazılır ve enter tuşuna basılır.

Örnek vim ekran görüntüsü:

Yazı yazma işlemlerine başlamak için “i” harfine veya insert tuşuna basmak yeterlidir bu aşamadan sonra her basılan tuş ekranda yazılmaya başlayacaktır. Tekrar yazı yazma işlemlerinden çıkıp komut işlemlerine dönmek için ESC tuşlarına basılması gerekmektedir.

Linux, Unix, Freedos her yerde çalışır.

Yazma moduna geçiş

i bulunulan yerde yazma moduna geçer (i=insert)
I satır başına gidip yazma moduna geçer (I=insert)
a bir sonraki yerden bir karakter sağa kayıp yazma moduna geçer (a=append)
A satır sonuna gidip yazma moduna geçer (A=append)
o aşağıya yeni bir satır ekleyip yazma moduna geçer
O yukarıya bir satır ekleyip yazma moduna geçer
<ESC> yazma modundan çıkar

Dosya içinde hareket

h sola bir karakter
#h satır yukarı
l sağa bir karakter
j aşağı satıra
#j satır aşağı
k yukarı satıra
H imleç sayfa başına(high)
#H imleç sayfa başından 3 satır aşağıya
L imleç sayfa sonuna(low)
#L imleç sayfa sonundan  # satır yukarıya
M imleç sayfa ortasına
gg dosya başına
GG dosya sonuna
#G #.satıra
:# #.satıra
<CTRL>e dosyayı yukarı doğru kaydır(imlecin yeri değişmez)
<CTRL>y dosyayı aşağıya doğru kaydır(imlecin yeri değişmez)
zt bulunulan satırı sayfanın başında gösterir(imlecinyerideğişmez)(t=top)
zb bulunulan satırı sayfanın sonuna gösterir(imlecin yeri değişmez)(b=bottom)
zz bulunulan satırı sayfanın ortasına gösterir(imlecin yeri değişmez)
% parantezin eşini bulur ve imleci oraya götürür
imlecin bir önceki konumuna geri döner
. en son değişikliğin yapıldığı satıra geri döner
f<harf> satırda,sağa doğru ilk harfin bulunduğu konuma gider
F<harf> satırda,sola doğru ilk harfin bulunduğu konuma gider
ma imlecin bulunduğu yeri a noktası olarak işaretle(a..z,A..Z,0..9)(m=mark)
a a noktasının bulunduğu satıra git
‘a a noktasına git
:marks işaretli noktaların listesini gösterir

 Silme, kopyalama ve yapıştırma (delete, copy, paste)

xveyadl karakteri sil(d=delete)(l=letter)
X önceki karakteri sil
dw bir sonraki kelimeye kadar sil(w=word)
de kelimenin sonuna kadar sil(e=end)
db kelimenin başınakadar sil(b=beginning)
dd satırı sil
d’a a noktasının bulunduğu satırakadar sil
‘a a noktasına kadar sil
d^ bulunulanyerden,satır başına kadar sil(^=satırbaşı)
d$ bulunulan yerden,satır sonuna kadar sil($=satırsonu)
D bulunulan yerden,satır sonuna kadar sil($=satırsonu)
#dd #satır sil
yl harfi kopyala(y=yank)(l=letter)
yw bir sonraki kelimeye kadar kopyala(w=word)
ye kelimenin sonuna kadar kopyala(e=end)
yb kelimenin başına kadar kopyala(b=beginning)
yy satırı kopyala
y’a a noktasının bulunduğu satıra kadar kopyala
y’a a noktasına kadar kopyala
y^ bulunulan yerden,satır başına kadar kopyala(^=satırsonu)
y$ bulunulan yerden,satır sonuna kadar kopyala($=satırsonu)
p bir sonraki pozisyona yapıştır(p=paste)
P bir önceki pozisyona yapıştır(P=paste)
#p #kere yapıştır
:set paste  formatlanmış bir metni vim’e yapıştırmadan önce otomatik girintileme yapmasın diye
:set nopaste  yapıştırma işlemi bittikten sonra

Dosya veya shell’den veri alma

:r dosya dosyanın içeriğini imleçten sonraki kısma yazar
:r !komut komutun çıktısını imleçten sonraki kısma yazar

Depo kullanarak kopyalama ve yapıştırma

“add silinen satırı ‘a’ kodlu depoya koy
“ayy kopyalanan satırı ‘a’ kodlu depoya koy
“ap  ‘a’ kodlu depodaki veriyi yapıştır
:reg a  ‘a’ kodlu depoda ne olduğunu gösterir (reg=register)
:reg abcd a, b c, d depolarında ne olduğunu gösterir
:reg bütün depoları gösterir
a..z, A..Z, 0..9 depo kodu olarak bu karakterlerden biri kullanılabilir
bütün kopyalama ve yapıştırma komutları, depolu biçimde de kullanılabilir

Görsel modda kopyalama ve yapıştırma

v görsel moda geç, karakter seçme (v=visual)
V görsel moda geç, satır satır seç
<CTRL>v görsel moda geç, blok seç
d seçimi sil (d=delete)
c seçimi sil ve yazma moduna geç
y seçimi kopyala (y=yank)
p seçimi yapıştır (p=paste)

Arama ve otomatik değiştirme

* imlecin üzerinde bulunduğu kelimenin tekrarını sonra doğru arar
# imlecin üzerinde bulunduğu kelimenin tekrarını başa doğru arar
/sablon sablonu sona doğru ara
?sablon  sablonu başa doğru ara
n bir sonrakini bul
N bir öncekini bul
:s/sablon/yeni sablona uyan ilk metni, yenisi ile değiştir
:s/sablon/yeni/g satırda,şablona uyan tüm metinleri, yeni ile değiştir (g=global)
:%s/sablon/yeni/g dosyada,şablona uyan tüm metinleri, yeni ile değiştir (%s dosya)
:%s/sablon/yeni/gc dosyada,şablona uyan metinleri, yeni ile değiştir ama önce onay alır (c=confirm)
şablonda ^ satır başı
şablonda $ satır sonu
şablonda [abc] bu karakterlerden biri…
şablonda [^abc] bu karakterlerden hiçbiri…
şablonda . herhangi bir karakter
şablonda * herhangi bir karakter dizisi
q/ veya /<CTRL>f ileriye doğru yapılmış aramaların listesini verir
q? veya ?<CTRL>f geriye doğru yapılmış aramaların listesini verir
:set is şablon yazılırken aramaya başla (is=instant search)
:set hls şablona uyanları belirginleştir (hls=highlighted search)
:set nohls hls modunu kapat (nohls=no highlighted search)
:set ic büyük-küçük harf ayırt etmeden arar (ic=ignore case)

Kesme ve değiştirme (cut, replace)

r<harf>  imlecin bulunduğu harfi sil ve yerine, <harfi> yaz (r=replace)
R yazma moduna geç ve eski metnin üstüne yaz (R=replace)
cw bir sonraki kelimeye kadar olan kısmı sil ve yerine, yazılanları yaz (w=word)
ce kelimenin sonuna kadar olan kısmı sil ve yerine, yazılanları yaz (e=end)
cb kelimenin başına kadar olan kısmı sil ve yerine, yazılanları yaz (b=beginning)
c’a a noktasının bulunduğu satıra kadar sil ve yerine, yazılanları yaz
c`a a noktasına kadar sil ve yerine, yazılanları yaz
c^ satırın başına kadar olan kısmı sil ve yerine, yazılanları yaz (^=satır başı)
c$ satırın sonuna kadar olan kısmı sil ve yerine, yazılanları yaz ($=satır sonu)
C  satırın sonuna kadar olan kısmı sil ve yerine, yazılanları yaz
#cw #cw   # kelimeyi sil ve yerine, yazılanları yaz

undo, redo

u yapılan işlemi geri al (u=undo)
U satırı, imlecin satıra geldiği andaki şekle geri döndür (U=undo)
<CTRL>r undo işlemini geri al (r=redo)
#u son # değişikliği geri al

Biçimlendirme

:set expandtab tab karakterlerini
:retab boşluk karakterine çevirir
:set noexpandtab uygun sayıda boşluk karakterini
:retab tab karakterine çevirir
>> satırı, bir tab aralığı kadar sağa kaydırır
<< satırı, bir tab aralığı kadar sola kaydırır
> <sağ ok tuşu> bulunulan satırı kaydırır
> <yukarı ok tuşu> bulunulan satır ve bir üst satırı kaydırır
> <aşağı ok tuşu> bulunulan satır ve bir alt satırı kaydırır
#>> # satırı birden bir tab aralığı kadar kaydırır
#> <yukarı ok tuşu> bulunulan satır dahil yukarı doğru # satırı sağa kaydırır
:set sw=4 tab aralığının kaç karakter uzunluğunda olacağını belirtir (sw=shift width)
:set tabstop=8 tab ile kaç karakter gidileceğini belirler
:set nu satır numaralarını gösterir (nu=number)
:set nonu satır numaralarını gizler (nonu=no number)
~ imlecin üstünde bulunduğu karakteri büyükse küçük, küçükse büyük yapar
:TOhtml metni üretecek HTML kodunu üretir, renklendirmeleri dikkate alır

 Yazma/işlem kolaylaştırıcılar

<CTRL>l refresh
:setlist/nolist görünmeyen karakterleri göstermek veya göstermemek için…
gaveya:as imlecin altındaki karakterin, karakter kodunu gösterir
<CTRL>n yazma modundayken kelimeyi, var olan kelimelere bakarak tamamlar (n=next)
<CTRL>p yazma modundayken kelimeyi, var olan kelimelere bakarak tamamlar (p=previous)
.  son yapılan işlemi tekrarlar
q:veya:<CTRL>f kullanılmış komutların listesini verir
q/veya/<CTRL>f ileriye doğru yapılmış aramaların listesini verir
q?veya?<CTRL>f geriye doğru yapılmış aramaların listesini verir
<CTRL>c<CTRL>c komut/arama listesinden çıkmak için
<CTRL>x imleçin üstünde bulunduğu sayıyı bir azaltır
<CTRL>a imleçin üstünde bulunduğu sayıyı bir çoğaltır
:setfoldmethod=indent indent’lere göre blokları belirler (Python kodu için…)
zo bloğu açar
zO bütün blokları açar
zc bloğu kapatır
zC bütün blokları kapatır
za açıksa, kapalı; kapalıysa, açık hale getirir
zj sonraki bloğa geçer
zk önceki bloğa geçer
<CTRL>xo omnifunc tanımlanmış dosya biçimleri için kod tamamlar

Macro

q  ilk seferde makro bloğuna gider
bundan sonra girilen ilk harf makronun adı olur
bundan sonra yapılan bütün işlemler makro bloğuna kaydedilir
tekrar q’ye basıldığında makro kaydı sona erer
 @<harf> makroyu çalıştırır
“<harf>p makro içeriğini metin olarak sayfaya yazar
~/.viminfo dosyasından da makro kayıtları görünebilir

Dosya işlemleri

:new  yeni dosya oluştur
:S dosya tarayıcısını aç. Seçimler için <ENTER> kullan
:e dosya var olan bir dosyayı aç (e=edit)
:w yapılan değişiklikleri kaydet (w=write)
:w dosya yapılan değişiklikleri ‘dosya’ adı ile kaydet (w=write)
:wq yapılan değişiklikleri kaydedip çık (w=write) (q=quit)
:q! yapılan değişiklikleri kaydetmeden çık (q=quit)
:Nread scp://kullanici@12.12.12.12/klasor/dosya dosyaya scp ile uzaktaki makineden açar (Nread=network read)
:Nwrite scp://kullanici@12.12.12.12/klasor/dosya dosyayı scp ile uzaktaki makineye kaydeder (Nwrite=network write)

Birçok dosya ile aynı anda çalışma

:bn bir sonraki tampon belleğe geç
:bp bir önceki tampon belleğe geç
:wn değişiklikleri kaydet ve bir sonraki tampon belleğe geç
:wp değişiklikleri kaydet ve bir önceki tampon belleğe geç
:bn! değişiklikleri kaydetmeden bir sonraki tampon belleğe geç
:b# # numaralı tampon belleğe geç
:bd tampon bellegi siler
:bd# # numaralı tampon belleği siler
:set hidden bir tampon bellekten diğerine, değişiklikleri kaydetmeden geçmeye izin verir

Tab’lar ile çalışma

:tabedit yeni tab oluşturur
:tabnew dosya_adi yeni tab oluşturur ve dosyayı bu tab’da açar
:tabc tab’ı kapatır
:tabmove tab’ı taşı
gt sonraki tab’a git
gT önceki tab’a git

Birçok pencere ile aynı anda çalışma

:vsp ekranı dikeyde iki pencereye böl (vsp=vertical split)
:sp ekranı yatayda iki pencereye böl (sp=split)
<CTRL>w<CTRL>w diğer pencereye geç
<CTRL>w<ok tuşu> ok yönündeki pencereye geç
<CTRL>w<hjkl> yön karakterine göre pencereye geç
<CTRL>w + pencereyi 1 satır uzat
<CTRL>w – pencereyi 1 satır kısalt
<CTRL>w c pencereyi kapat
:q pencereyi kapat (q=quit)

shell

 :!komut  komutu çalıştır
 :sh  shell’i çalıştır. Shell’den çıkmak için “exit” komutunu kullan

Vim’i açarken komut çalıştırma

(Terminal veya konsoldan)
vim +komut1 +komut2 … +komutN dosya_adi

 

Vim Tuş Kombinasyonları:

 

vi-vim-cheat-sheet

 

vim-chart

 

Faydalı linkler

http://bullium.com/support/vim.html
http://www.rayninfo.co.uk/vimtips.html
http://www.vim.org/tips/index.php
http://www.viemu.com/a_vi_vim_graphical_cheat_sheet_tutorial.html
http://vim.wikia.com/wiki/Best_Vim_Tips


So, what do you think ?

You must be logged in to post a comment.