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
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