Vim (vi improved), linux ve unix kullanan, özellikle programcılar ve sistem yöneticileri tarafından tercih edilen vi editörün gelişmiş versiyonudur. vi ve vim için internette çokça belge var, bu yüzden yazmakta tereddüt ettim. Yeni kullanıcılar için kendimin de sık kullandığı komutları içeren belgenin faydalı olacağına karar verdim.
Vim değişik kiplere sahiptir ve farklı kiplerde (mode) farklı davranışlar gösterir. Bunlar normal (komut) kipi, yazma kipi ve görünüm kipleridir. Eğer ekranın en altında dosya ismi görünüyor ya da boş ise normal mode, eğer –INSERT– görünüyorsa insert mode (yazma kipi) ve eğer –VISUAL– görünüyorsa visual mode ‘dasınızdır.
Metin yazmaya başlamak için i tuşuna basmak yeterlidir. Bu anda ekranın altında –INSERT– çıkmıştır ve sizin insert mode da olduğunuzu gösterir. Yazacaklarınız bittiğinde komut (normal) moduna dönmek için <ESC> tuşuna basmanız gerekir. Ekranın sol altındaki –INSERT– kaybolacaktır. Hangi modda olursanız olun, normal moda dönmek için <ESC> basabilirsiniz.
İmleci hareket ettirmek için klavyedeki yön tuşlarının yanı sıra, daha hızlı kullanmak için, elinizi metin tuşlarından yön tuşlarına kaydırmadan h (sola), j (aşağı), k (yukarı), l (sağa) tuşlarını kullanabilirsiniz.
Şimdi, sıkça kullandığım ve vimbook-OPL.pdf den derlediğim komutları özetle anlatmak istiyorum :
| h | sola git |
| j | aşağı git |
| k | yukarı git |
| l | sağa git |
| x | imlecin üstünde durduğu karakteri sil |
| u | geri al |
| U | satırı geri al |
| CRTL-r | yeniden yap |
| ZZ | dosyayı sakla ve çık |
| :q! | saklamadan çık ( ‘:’ komut modu, ‘q’ editörden çık ve ‘!’ etkili kıl) |
| i | metin yazmaya başla (imleçten bir öne) |
| a | metin yazmaya başla (imleçten bir sonra) |
| o | metin yazmaya başla (alta satır ekleyerek) |
| O | metin yazmaya başla (üste satır ekleyerek) |
| dd | imlecin bulunduğu satırı sil |
Yardım
| :help | yardım ekranı |
Yardım ekranında h, j, k, l yön tuşlarını kullanarak gezebilirsiniz. Yardım içinde gezerken göreceğiniz |:help| gibi iki boru arasındaki metinler hyperlink ‘dir ve bunların üzerinde CTRL+j basarak ilgili konuya gidebilirsiniz. CTRL+T ile geri dönebilirsiniz.
Help ile çok çeşitli yardımları alabilirsiniz. İşte bazı örnekler:
| :help x | x komutu hakkında yardım |
| :help deleting | silme komutu hakkında yardım |
| :help index | yardım indeksi |
| :help CTRL-A | CTRL-A komutu hakkında yardım |
Help ön tanımlı olarak normal mode komutlarını gösterir. Diğer modlar için ilgili ön takılar kullanılmalıdır. Örnek olarak:
| :help i_CTRL-H | insert mode daki CTRL-H komutu hakkında yardım |
| :q | help ekranından çık |
Sayıları Kullanmak
Daha hızlı yazım için sayıları kullanabilirisiniz. Örnek olarak:
| 5x | beş karakter sil |
| 3dd | 3 satır sil |
| 4aX<ESC> | imleçten sonra dört tane X ekle |
| w | bir kelime ileri git |
| 4w | dört kelime ileri git |
| b | bir kelime geri gel |
| 3b | üç kelime geri gel |
| $ | satır sonuna git (1$ ile aynı) |
| 2$ | alt satırın sonuna git |
| 5$ | dört alttaki satırın sonuna git |
| 0 | satır başına git |
| ^ | boşlukla başlamayan satır başına git |
Tek satırda karakter arama:
İleriye doğru : f
Geriye doğru : F
| fs | bulunduğun satırda ileriye doğru s arar |
| Fa | bulunduğun satırda geriye doğru a arar |
| 5f<boşluk> | beş boşluk ileri gider |
| G | dosyanın son satırına gider |
| 1G | dosyanın ilk satırına gider |
| 25G | dosyanın yirmi beşinci satırına gider |
| CTRL-G | tam olarak bulunduğunuz yeri ekranın altında gösterir |
| CTRL-U | metni yarım sayfa yukarı kaydır |
| CTRL-D | metni yarım sayfa aşağı kaydır |
| :set number | ekranın solunda satır numaraları gösterir |
| :set nonumber | satır numaralarını kaldırır |
| 3dw | üç kelime sil |
| d$ ya da D | satır sonuna kadar sil |
| dG | dosya sonuna kadar sil |
| d0 | dosya başına kadar sil |
Blok silme:
| ma | blok başı |
blok sonuna git ve
| d’a | bloğu sil |
| cc ya da C | satırı sil ve insert moduna geç |
| 3cw ya da c3w | üç kelime sil ve insert moduna geç |
| . | son silme ve değiştirme işlemini tekrar eder |
| J | bulunduğun satırla bir alttaki satırı birleştir |
| 4J | bulunduğun satırla alttaki üç satırı birleştir |
| ~ | büyük/küçük harfe değiştir |
| 5~ | beş harfi büyük/küçük harfe değiştir |
| / | ileriye doğru arama (/kelime<ENTER>) |
| ? | geriye doğru arama (?kelime<ENTER>) |
| :set hlsearch | aranan metni renklendirir belirginleştirir |
| :set nohlsearch | hlsearch özelliğini kapatır |
| nohlsearch | tüm belirginleştirilmiş metinleri normalleştirir |
| :set incsearch | aranan metni yazdıkça bulur |
Bul ve değiştir
| :%s /aranankelime/yenikelime | dosya içinde bir metni başkasıyla değiştir |
| yy | satır kopyala |
| 3y | üç satır kopyala |
| y$ | satır sonuna kadar kopyala |
| y0 | satır başına kadar kopyala |
| yG | dosya sonuna kadar kopyala |
| y1G | dosya başına kadar kopyala |
Blok kopyalama:
| ma | blok başı |
blok sonuna git ve
| y’a | bloğu kopyala |
| p | imleçten sonra yapıştır (daha önce x,d vb ile silinenleri ve kopyalananları yapıştırır, put=paste) |
| P | imleçten sonra yapıştır |
Başka dosyalarla çalışmak
| :vi dosya.txt | yeni bir dosya aç (yazma/okuma) |
| :write ya da :w | çalıştığınız dosyayı saklamak için |
| :write yenidosya.txt | çalıştığınız dosyayı başka isimde saklamak için |
| :vi! dosya.txt | saklamadan yeni bir dosyaya geçmek için |
| :view dosya.txt | salt okunur bir dosya açmak için |
birden fazla dosya ile çalışmak:
| $ vim -p test1.c test2.c test3.c | üç dosyayı sekmelerde aç |
dosyalarda dolaşmak:
| :next | sonraki dosyaya geç |
| :Next ya da :previous | önceki dosyaya geç |
| :rewind | ilk dosyaya geç |
| :last | son dosyaya geç |
| :args | bulunduğun dosya ismini gör |
| :split | ekranı pencerelere böl |
| :split dosya.txt | açık dosyaları kapatmadan yeni dosya.txt ile çalış |
| :new | yeni dosya aç |
| :buffers | açık dosyaları listele |
| :buffer 5 | 5 numaralı dosyaya geç |
| :buffer dosya | dosyaya geç |
| $ vim -o test1.c test2.c test3.c | yatay pencerelerde üç dosyayı aç |
| $ vim -O test1.c test2.c test3.c | dikey pencerelerde üç dosyayı aç |
| CTRL-W <yatay ok tuşları> | yatay pencereler arası geçiş |
| CTRL-W <dikey ok tuşları> | dikey pencereler arası geçiş |
Visual Mode
| v | visual moda geç |
| V | satır bazında visual moda geç |
| CTRL-v | diktörtgen bloklama yap |
| <ESC> | normal moda dön |
İmleci hareket ettirdiğinizde metin renklenecektir. Bu metinler üzerinde silme, kopyalama (d,y,p,c,..) gibi işlemler yapabilirsiniz.
| > | seçilmiş olan bloğu shiftwidth miktarı kadar içerden başlatır |
| lmetin<ESC> | seçilmiş olan bloğu shiftwidth miktarı kadar içerden başlatır |
Uyumluluk
Vim, geriye doğru uyumlu olduğundan vi’nin bütün özelliklerini kapsar.
| :set compatible | vi uyumlu yapmak için |
| :set uncompatible | vi uyumluluğunu kaldırmak için |
| set compatible? | sorgulamak için |
Programcılar için
| :syntax on | metni renklendirir |
| :set filetype=c | standart olmayan dosya uzantılarında istediğiniz renklendirmeyi kullanmak için |
| :set shiftwidth=4 | kaydırma miktarı |
| >> | metni shiftwidth kadar sağa kaydır |
| << | metni shiftwidth kadar sola kaydır |
| :set cindent | otomatik hizalama, C, C++, Java gibiler için |
| :set smartindent | otomatik hizalama, { ve } ile |
| :set autoindent | otomatik hizalama, pascal, perl ve python için |
| =% | otomatik olarak hizalama yapar (imleç { üzerinde olmalıdır) |
| % | eşini bul ( imleç (), {} ya da [] birinin üzerinde olmalıdır) |
Ayarların saklanması ve vimrc
Daha sonra kullanmak için :set , :map ve :abbreviate ile yaptığınız ayarları saklayabilirsiniz. Bunun için:
| :mkvimrc dosyaismi |
Bu ayarları daha sonra geri yüklemek için:
| :source dosyaismi |
Vim, başlangıçta ayarları otomatik yükleyeceği dosyayı arar. Bu dosya vimrc dosyasıdır.
Linux (ubuntu) için kullanıcı bazında yeri : $HOME/.vimrc
Linux (ubuntu) için sistem bazında yeri : /etc/vim/vimrc
Örnek bir .vimrc :
| :syntax on :autocmd FileType * set formatoptions=tcql \ nocindent comments& :autocmd FileType c,cpp set formatoptions=croql \ cindent comments=sr:/*,mb:*,ex:*/,:// :set autoindent :set autowrite :ab #d #define :ab #i #include :ab #b /**************************************** :ab #e <Space>****************************************/ :ab #l /*——————————————– */ :ab #j Jack Benny Show :set shiftwidth=4 :set hlsearch :set incsearch :set textwidth=70 :set tabstop=4 |
Son
Bu belgeyi yazarken çokça yararlandığım ve yüzeysel olarak vermeye çalıştığım komutların örnek ve detayları, yazmayı düşündüğüm ama belge uzayacağından vazgeçtiğim makro ve düzenli ifadeler ve diğer muhteşem vim komutları ve kullanımları için:
ftp://ftp.vim.org/pub/vim/doc/book/vimbook-OPL.pdf
İlgili bağlar:
http://www.vim.org/
http://www.yolinux.com/TUTORIALS/LinuxTutorialAdvanced_vi.html
http://docs.comu.edu.tr/howto/vim-for-c-programmers.html
http://forum.ubuntu-tr.org/index.php?topic=2719.0