:::: 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ş

ibulunulan yerde yazma moduna geçer (i=insert)
Isatır başına gidip yazma moduna geçer (I=insert)
abir sonraki yerden bir karakter sağa kayıp yazma moduna geçer (a=append)
Asatır sonuna gidip yazma moduna geçer (A=append)
oaşağıya yeni bir satır ekleyip yazma moduna geçer
Oyukarıya bir satır ekleyip yazma moduna geçer
<ESC>yazma modundan çıkar

Dosya içinde hareket

hsola bir karakter
#hsatır yukarı
lsağa bir karakter
jaşağı satıra
#jsatır aşağı
kyukarı satıra
Himleç sayfa başına(high)
#Himleç sayfa başından 3 satır aşağıya
Limleç sayfa sonuna(low)
#Limleç sayfa sonundan  # satır yukarıya
Mimleç sayfa ortasına
ggdosya başına
GGdosya sonuna
#G#.satıra
:##.satıra
<CTRL>edosyayı yukarı doğru kaydır(imlecin yeri değişmez)
<CTRL>ydosyayı aşağıya doğru kaydır(imlecin yeri değişmez)
ztbulunulan satırı sayfanın başında gösterir(imlecinyerideğişmez)(t=top)
zbbulunulan satırı sayfanın sonuna gösterir(imlecin yeri değişmez)(b=bottom)
zzbulunulan 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
maimlecin bulunduğu yeri a noktası olarak işaretle(a..z,A..Z,0..9)(m=mark)
aa noktasının bulunduğu satıra git
‘aa noktasına git
:marksişaretli noktaların listesini gösterir

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

xveyadlkarakteri sil(d=delete)(l=letter)
Xönceki karakteri sil
dwbir sonraki kelimeye kadar sil(w=word)
dekelimenin sonuna kadar sil(e=end)
dbkelimenin başınakadar sil(b=beginning)
ddsatırı sil
d’aa noktasının bulunduğu satırakadar sil
‘aa noktasına kadar sil
d^bulunulanyerden,satır başına kadar sil(^=satırbaşı)
d$bulunulan yerden,satır sonuna kadar sil($=satırsonu)
Dbulunulan yerden,satır sonuna kadar sil($=satırsonu)
#dd#satır sil
ylharfi kopyala(y=yank)(l=letter)
ywbir sonraki kelimeye kadar kopyala(w=word)
yekelimenin sonuna kadar kopyala(e=end)
ybkelimenin başına kadar kopyala(b=beginning)
yysatırı kopyala
y’aa noktasının bulunduğu satıra kadar kopyala
y’aa 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)
pbir sonraki pozisyona yapıştır(p=paste)
Pbir ö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 dosyadosyanın içeriğini imleçten sonraki kısma yazar
:r !komutkomutun çıktısını imleçten sonraki kısma yazar

Depo kullanarak kopyalama ve yapıştırma

“addsilinen satırı ‘a’ kodlu depoya koy
“ayykopyalanan 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 abcda, b c, d depolarında ne olduğunu gösterir
:regbütün depoları gösterir
a..z, A..Z, 0..9depo 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

vgörsel moda geç, karakter seçme (v=visual)
Vgörsel moda geç, satır satır seç
<CTRL>vgörsel moda geç, blok seç
dseçimi sil (d=delete)
cseçimi sil ve yazma moduna geç
yseçimi kopyala (y=yank)
pseç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
/sablonsablonu sona doğru ara
?sablon sablonu başa doğru ara
nbir sonrakini bul
Nbir öncekini bul
:s/sablon/yenisablona uyan ilk metni, yenisi ile değiştir
:s/sablon/yeni/gsatırda,şablona uyan tüm metinleri, yeni ile değiştir (g=global)
:%s/sablon/yeni/gdosyada,şablona uyan tüm metinleri, yeni ile değiştir (%s dosya)
:%s/sablon/yeni/gcdosyada,ş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>fileriye doğru yapılmış aramaların listesini verir
q? veya ?<CTRL>fgeriye 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 nohlshls modunu kapat (nohls=no highlighted search)
:set icbü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)
Ryazma moduna geç ve eski metnin üstüne yaz (R=replace)
cwbir sonraki kelimeye kadar olan kısmı sil ve yerine, yazılanları yaz (w=word)
cekelimenin sonuna kadar olan kısmı sil ve yerine, yazılanları yaz (e=end)
cbkelimenin başına kadar olan kısmı sil ve yerine, yazılanları yaz (b=beginning)
c’aa noktasının bulunduğu satıra kadar sil ve yerine, yazılanları yaz
c`aa 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

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

Biçimlendirme

:set expandtabtab karakterlerini
:retabboşluk karakterine çevirir
:set noexpandtabuygun sayıda boşluk karakterini
:retabtab 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=4tab aralığının kaç karakter uzunluğunda olacağını belirtir (sw=shift width)
:set tabstop=8tab ile kaç karakter gidileceğini belirler
:set nusatır numaralarını gösterir (nu=number)
:set nonusatır numaralarını gizler (nonu=no number)
~imlecin üstünde bulunduğu karakteri büyükse küçük, küçükse büyük yapar
:TOhtmlmetni üretecek HTML kodunu üretir, renklendirmeleri dikkate alır

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

<CTRL>lrefresh
:setlist/nolistgörünmeyen karakterleri göstermek veya göstermemek için…
gaveya:asimlecin altındaki karakterin, karakter kodunu gösterir
<CTRL>nyazma modundayken kelimeyi, var olan kelimelere bakarak tamamlar (n=next)
<CTRL>pyazma modundayken kelimeyi, var olan kelimelere bakarak tamamlar (p=previous)
. son yapılan işlemi tekrarlar
q:veya:<CTRL>fkullanılmış komutların listesini verir
q/veya/<CTRL>fileriye doğru yapılmış aramaların listesini verir
q?veya?<CTRL>fgeriye doğru yapılmış aramaların listesini verir
<CTRL>c<CTRL>ckomut/arama listesinden çıkmak için
<CTRL>ximleçin üstünde bulunduğu sayıyı bir azaltır
<CTRL>aimleçin üstünde bulunduğu sayıyı bir çoğaltır
:setfoldmethod=indentindent’lere göre blokları belirler (Python kodu için…)
zobloğu açar
zObütün blokları açar
zcbloğu kapatır
zCbütün blokları kapatır
zaaçıksa, kapalı; kapalıysa, açık hale getirir
zjsonraki bloğa geçer
zkönceki bloğa geçer
<CTRL>xoomnifunc 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>pmakro içeriğini metin olarak sayfaya yazar
~/.viminfodosyasından da makro kayıtları görünebilir

Dosya işlemleri

:new yeni dosya oluştur
:Sdosya tarayıcısını aç. Seçimler için <ENTER> kullan
:e dosyavar olan bir dosyayı aç (e=edit)
:wyapılan değişiklikleri kaydet (w=write)
:w dosyayapılan değişiklikleri ‘dosya’ adı ile kaydet (w=write)
:wqyapılan değişiklikleri kaydedip çık (w=write) (q=quit)
:q!yapılan değişiklikleri kaydetmeden çık (q=quit)
:Nread scp://[email protected]/klasor/dosyadosyaya scp ile uzaktaki makineden açar (Nread=network read)
:Nwrite scp://[email protected]/klasor/dosyadosyayı scp ile uzaktaki makineye kaydeder (Nwrite=network write)

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

:bnbir sonraki tampon belleğe geç
:bpbir önceki tampon belleğe geç
:wndeğişiklikleri kaydet ve bir sonraki tampon belleğe geç
:wpdeğ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ç
:bdtampon bellegi siler
:bd## numaralı tampon belleği siler
:set hiddenbir tampon bellekten diğerine, değişiklikleri kaydetmeden geçmeye izin verir

Tab’lar ile çalışma

:tabedityeni tab oluşturur
:tabnew dosya_adiyeni tab oluşturur ve dosyayı bu tab’da açar
:tabctab’ı kapatır
:tabmovetab’ı taşı
gtsonraki tab’a git
gTönceki tab’a git

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

:vspekranı dikeyde iki pencereye böl (vsp=vertical split)
:spekranı yatayda iki pencereye böl (sp=split)
<CTRL>w<CTRL>wdiğ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 cpencereyi kapat
:qpencereyi 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.