2010-11-15 9 views
9

Kullanıcının işlevimi çağırmasını ve sonra kullanıcı isteğini işleve sahip olmasını istiyorum ancak kullanıcının yazmasını istemiyorum. "input()" fonksiyonu tarafından gerekli olan bir harfi yazdıktan sonra 'girin. Örneğin, kullanıcı 'h', 'j', 'k', 'l' gibi tek harfli komutlar yazabilmeli ve yazılan her harf, kullanıcı çıkış için 'x' yazana kadar işlevimin etrafında dönecektir. "Input()" kullanırsam, kullanıcı 'h <enter>', 'j <enter>', 'jvim script "input()" kullanıcının giriş yapmasını gerektirmeyen işlev

Bunu nasıl yapabilirim?

Daha fazla açıklama gerekiyorsa lütfen bildirin.

function! s:getchar() 
    let c = getchar() 
    if c =~ '^\d\+$' 
    let c = nr2char(c) 
    endif 
    return c 
endfunction 

" Interactively change the window size 
function! InteractiveWindow() 
    let char = "s" 
    while char =~ '^\w$' 
    echo "(InteractiveWindow) TYPE: h,j,k,l to resize or a for auto resize" 
    let char = s:getchar() 
    if char == "h" | call SetWindowSize("incr" ,-5 ,0) | endif 
    if char == "j" | call SetWindowSize("incr" ,0 ,5) | endif 
    if char == "k" | call SetWindowSize("incr" ,0 ,-5) | endif 
    if char == "l" | call SetWindowSize("incr" ,5 ,0) | endif 
    if char == "a" | call SetWindowSize("abs" ,0 ,0) | endif 
    redraw 
    endwhile 
endfunction 
+0

:

GÜNCELLEME çalışmıyor var. Aslında yeni bir vim modu oluşturmanıza izin verir, örneğin görsel mod veya ekleme modu gibi bir "pencere modu" üzerindeki kodu çağırabilirsiniz. Oldukça güçlü şeyler ... – stephenmm

cevap

8

getchar() Gerçekten bu kod biraz sağladığı işlevsellik gibi

http://vimdoc.sourceforge.net/htmldoc/eval.html#getchar()

+0

Bu kolaydı! Teşekkürler. – stephenmm

+0

@stephen (ve başka biri) - getchar() ile yakalanabilecek girdiler için kullanıcıya bilgi istemini merak ediyorum. Belki ben yoğunum ama o bana atlamıyor. –

+0

Aslında bunu henüz uygulamadım (ve neden henüz doğru olarak işaretlemedim) ama etrafa bakmadan getchar benim için çalışacak gibi görünüyor. Bu gece daha sonra uygulamak için bir değişiklik yapmayı umuyordum, bu yüzden size bildireceğim. – stephenmm

İlgili konular