[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Bir Vim Sorusu



* Recai Oktaş [2006-04-21 21:09:45+0300]
> Tabii yapabilirsiniz.  VIM'de <c-o> tuşu var (bk. ":h i_CTRL-O"), "ekleme"
> (veya sizin çevirinizle "yazım") kipinden çıkmadan bir "normal" kip
> komutunu çalıştırmanız mümkün.  Aşağıdaki eşlemleri deneyin:
> 
>     inoremap <c-h> <c-o>w
>     inoremap <c-h> <c-o>b
> 
> Ama yukarıdaki bu yöntemin şık olmayan tarafları var: her şey tekrar tekrar
> elle yapılıyor ve eşlemlerde tutarsızlık olabiliyor.  Bu işi makineye
> yaptırmakta yarar var. :-)  Ufak bir VIM işlevi yazdım aşağıda, bu
> satırları ~/.vimrc dosyasına koyarsanız işler daha doğru yapılmış olur.
> Üstün körü denedim, doğru çalışıyor gibi.  Sorun olursa yazarsanız.
[...]

Önceki işlev biraz "verbose" idi ve yapmaya giriştiği uyanıklığı da yarım
bırakıyordu.  En sık karşılaşılan "her kip" durumuna göre eniyileştirilmiş
aşağıdaki işlev herhangi bir uyanıklık da yapmıyor, yani daha temiz.

---------------------------------->8---------------------------------------
" XXX:  Hata denetimi yok; sadece tek karakterlik, basit tuşlar için uygun.
"       Örnek:	DOĞRU	normal/visual: <f>, insert: <c-f> => </>
"			:RemapOnce f /
"		YANLIŞ  sol taraf basit (ve anlamlı) değil (<c-x>)
"			:RemapOnce <c-x> /
com! -nargs=+ RemapOnce call s:remap(<f-args>)
fun! s:remap(lmap, rmap, ...)
	exe 
	\   'noremap '     . a:lmap . ' '       . a:rmap . '|' .
	\   'inoremap <c-' . a:lmap . '> <c-o>' . a:rmap . '|' .
	\   'vnoremap '    . a:lmap . ' '       . a:rmap . '|' .
	\   ''
	" Üst satır silme/ekleme kolay olsun diye var.
	if a:0 > 0
                " İstisna idaresi yapalım; şık değil ama daha kestirme.
		if a:1 !~ '[n]' | exe 'nunmap '    . a:lmap       | endif
		if a:1 !~ '[i]' | exe 'iunmap <c-' . a:lmap . '>' | endif
		if a:1 !~ '[v]' | exe 'vunmap '    . a:lmap       | endif
                " Yukarıda bir düzenleme varsa burayı da unutmayalım.
	endif
endfun
---------------------------------->8---------------------------------------

F klavyeli VIM'ciler için düşündüğünüz bu değişiklikler ilgimi çekti.  El
altında bulunsun böyle bir şey, yarın bir gün bakarsınız F'e geçeriz.  ;-)
"insert" kipinde Ctrl- yerine başka bir şey kullanmak isterseniz (meselâ
Windows® tuşu) ' *map <c-' kısmıyla oynamanız gerekecek.  Benim klavyemde
bu tuş yok, deneyemedim.  Fakat zor olmasa gerek.

-- 
roktas



Reply to: