Je voudrais que l'utilisateur appelle ma fonction, puis avoir la fonction demande une entrée utilisateur mais je ne veux pas que l'utilisateur doive taper ' entrez 'après avoir tapé une lettre comme l'exige la fonction "input()". Par exemple, l'utilisateur devrait être capable de taper des commandes à une seule lettre comme 'h', 'j', 'k', 'l' et chaque lettre tapée bouclerait ma fonction jusqu'à ce que l'utilisateur tape 'x' pour sortir. Si j'utilise "input()" alors l'utilisateur devra taper "h <enter>
", "j <enter>
" ...vim script "entrée()" fonction qui ne nécessite pas de frapper l'utilisateur
Des suggestions sur comment je pourrais être en mesure de faire cela?
Si d'autres précisions sont nécessaires, faites-le moi savoir.
MISE À JOUR
obtenu ce travail:
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
Je aime vraiment la fonctionnalité ce morceau de code FOURNIT. Il vous permet essentiellement de créer un nouveau mode vim, par exemple vous pourriez appeler le code au-dessus d'un "mode fenêtre", tout comme le mode visuel ou le mode insertion. Trucs assez puissant ... – stephenmm