2010-11-15 9 views
9

Me gustaría que el usuario llame a mi función y luego solicite a la función que ingrese el usuario, pero no quiero que el usuario tenga que escribir ' enter 'después de escribir una letra como lo requiere la función "input()". Por ejemplo, el usuario debería ser capaz de escribir comandos de una sola letra como 'h', 'j', 'k', 'l' y cada letra escrita recorrería mi función hasta que el usuario ingrese 'x' para salir. Si uso "input()", entonces el usuario debería escribir 'h <enter>', 'j <enter>' ...vim script "input()" función que no requiere que el usuario presione enter

¿Alguna sugerencia sobre cómo podría hacer esto?

Si necesita más aclaraciones, hágamelo saber.

ACTUALIZACIÓN

tengo trabajo:

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

me gusta mucho la funcionalidad de este fragmento de código proporciona. Básicamente, le permite crear un nuevo modo vim, por ejemplo, podría llamar al código que se encuentra sobre un "modo de ventana" al igual que el modo visual o el modo inserción. Cosas bastante poderosas ... – stephenmm

Respuesta

8
+0

¡Bueno, eso fue fácil! Gracias. – stephenmm

+0

@stephen (y cualquier otra persona): me llama la atención cómo está presentando el mensaje al usuario para que ingrese información que pueda capturarse con getchar(). Tal vez soy denso pero no me está saltando. –

+0

En realidad, todavía no lo he implementado (y por qué no lo marqué como correcto todavía) pero al mirar a mi alrededor parece que getchar funcionará para mí. Espero obtener un cambio para implementarlo más tarde esta noche, así que te lo haré saber. – stephenmm

Cuestiones relacionadas