2010-11-15 2 views
9

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

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

Répondre

8
+0

Eh bien, c'était facile! Merci. – stephenmm

+0

@stephen (et quelqu'un d'autre) - Je suis curieux de savoir comment vous présentez l'invite à l'utilisateur pour une saisie qui peut être capturée avec getchar(). Peut-être que je suis dense mais ça ne me saute pas aux yeux. –

+0

Je ne l'ai pas encore implémenté (et pourquoi je ne l'ai pas encore jugé correct), mais en regardant autour de moi, il me semble que ça va marcher pour moi. J'espère obtenir un changement pour le mettre en œuvre plus tard ce soir, alors je vous le ferai savoir. – stephenmm

Questions connexes