Doğrusunu isterseniz Vim bir metin editörüdür fakat Vim bir kelime işlemci değildir. Tanımı biraz daha açmak istiyorum. Vim, WYSIWYG "What You See Is What You Get" yani ne görüyorsan onu alırsın' şeklinde düzenlemez ama etkili bir metin düzenlemeyi mümkün kılmak için geliştirilmiş yapılandırılabilir bir metin editörüdür. Ayrıca UNIX sistemlerde dağıtalan VI metin editörünün geliştirilmiş halidir.
Vim için genellikle Linux üzerinde yazılım geliştirenlerin programlama editörüdür diye düşünülür aslında Vim sadece programcılar için geliştirilen bir editör değildir. Özetle her türlü metin düzenlemesi için oldukça kullanışlı bir editördür.
Vim kullanıcılarını mouse'u az kullanmaları için tasarlanmıştır. Vim öğrenmesi zor ama öğrenildikçe işleri kolaylaştıran bir araçtır.
.vimrc Başlangıç ayarları bu dosya içine yazılır.
:syntax on :set is :set ic :set hidden :set encoding=utf-8 :set bg=dark :filetype plugin on :autocmd InsertEnter * set cursorline cursorcolumn :autocmd InsertLeave * set nocursorline nocursorcolumn :highlight cursorline cterm=none ctermfg=7 ctermbg=4 :highlight cursorcolumn cterm=none ctermfg=7 ctermbg=4 :autocmd BufNewFile,BufRead *.py call PythonSet() function PythonSet() setlocal \ tabstop=8 \ shiftwidth=4 \ softtabstop=4 \ expandtab \ autoindent \ list \ listchars=tab:»·,trail:· endfunction
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
h sola bir karakter l sağa bir karakter j aşağı satıra k yukarı satıra 3j 3 satır aşağıya H imleç sayfa başına (high) 3H imleç sayfa başından 3 satır aşağıya L imleç sayfa sonuna (low) 3L imleç sayfa sonundan 3 satır yukarıya M imleç sayfa ortasına gg dosya başına GG dosya sonuna 3G 3. satıra :3 3. 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şına getir (imlecin yeri değişmez) (t=top) zb bulunulan satırı, sayfanın sonuna getir (imlecin yeri değişmez) (b=bottom) zz bulunulan satırı, sayfanın ortasına getir (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 harfin bulunduğu ilk konuma gider F<harf> satırda, sola doğru harfin bulunduğu ilk 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
x veya dl 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şına kadar sil (b=beginning) dd satırı sil d'a a noktasının bulunduğu satıra kadar sil d`a a noktasına kadar sil d^ bulunulan yerden, satır başına kadar sil (^=satır başı) d$ bulunulan yerden, satır sonuna kadar sil ($=satır sonu) D bulunulan yerden, satır sonuna kadar sil ($=satır sonu) 3dd 3 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ır sonu) y$ bulunulan yerden, satır sonuna kadar kopyala ($=satır sonu) p bir sonraki pozisyona yapıştır (p=paste) P bir önceki pozisyona yapıştır (P=paste) 3p 3 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
: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
"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
v görsel moda geç (v=visual) <CTRL>v görsel modda blok seçme d seçimi sil (d=delete) c seçimi sil ve yazma moduna geç (c=cut) y seçimi kopyala (y=yank) p seçimi yapıştır (p=paste)
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 (c=cut) (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 ($=satır sonu) 3cw 3 kelimeyi sil ve yerine, yazılanları yaz
* 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, sablona uyan metinleri, yeni ile değiştir (g=global) :%s/sablon/yeni/g dosyada, sablona uyan metinleri, yeni ile değiştir :%s/sablon/yeni/gc dosyada, sablona uyan metinleri, yeni ile değiştir ama önce onay al (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 sablon yazılırken aramaya başla (is=instant search) :set hls sablona 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)
:undolist 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) :u[ndo] :earlier <CTRL>r undo işlemini geri al (r=redo) :red[o] :later 3u son 3 değişikliği geri al
:set expandtab tab karakterlerini :retab boşluk karakterine çevirir :set noexpandtab uygun sayıda boşluk karakterini :retab tab karakterine çevirir >> satırı bir kaydırma aralığı kadar sağa kaydırır << satırı, bir kaydırma 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 3>> 3 satırı birden bir kaydırma aralığı kadar kaydırır 3> <yukarı ok tuşu> bulunulan satır dahil yukarı doğru 3 satırı sağa kaydırır :set sw=4 kaydırma 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
<CTRL>l refresh :set list/nolist görünmeyen karakterleri göstermek veya göstermemek için... ga veya :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 screen altındayken <CTRL>aa :set foldmethod=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> x o omnifunc tanımlanmış dosya biçimleri için kod tamamlar
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
: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)
:e dosya dosyayı aç (e=edit) :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ç :b3 3 numaralı tampon belleğe geç :bd tampon bellegi siler :bd3 3 numaralı tampon belleği siler :set hidden bir tampon bellekten diğerine, değişiklikleri kaydetmeden geçmeye izin verir
: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
: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)
:!komut komutu çalıştır :sh shell'i çalıştır. Shell'den çıkmak için "exit" komutunu kullan
vim +komut1 +komut2 ... +komutN dosya_adi
:g/^\s*$/d
:%s/^.*$/\U&/g
:%s/^.*$/\L&/g
:%s/ \{2,}/ /gyada bu yeni versiyon \+
s/ \+/ /g
:%s/^I\{1,}//g
:%s/\s[0-9]\+\(.*\)\(int\|varchar\|double\|text\).*/\1/g
:%s/<td.\{-}>/[td]/g
g ctrl+g
vim !$
:bf # Go to first file. :bl # Go to last file :bn # Go to next file. :bp # Go to previous file. :bw # Close file.
<option label="Bla Bla" value="2338">Bla Bla</option> -> Bla Bla
:%s/<.*>\(.*\)<.*>/\1/g
ctrl + s
Not: Windows tan gelen bir kaydetme alışkanlığınız var ise bu durum canınızı sıkabilir.
Vim editörü dondurma yada kilitleme ekranında kurtulmak için ise aşağıdaki tuş kombinasyonunu kullanabilirsiniz.
ctrl + q
:1,$!uniq :sort u
:%sort
:%sort!
numeric sorgulama
:sort n
:sort u
Olduğu şekilde tersine çevirir.
:g/^/m0
Yorumlar