29 votes

Comment émuler une pression sur une touche dans une fonction Vim ?

Je vais commencer par le code

function BigScrollUp()
  let count = 20
  while count > 0
    "Press" CTRL-Y <-- how do I emulate this?
    sleep 5m
    count -= 1
  endwhile
endfunction

Je veux créer une fonction permettant de faire défiler rapidement les pages vers le haut et vers le bas, avec une animation, afin de pouvoir suivre le chemin parcouru.

57voto

kev Points 41855

Vous pouvez utiliser feedkeys() . Type :help feedkeys pour en savoir plus :

feedkeys({string} [, {mode}])               *feedkeys()*
        Characters in {string} are queued for processing as if they
        come from a mapping or were typed by the user.  They are added
        to the end of the typeahead buffer, thus if a mapping is still
        being executed these characters come after them.
        The function does not wait for processing of keys contained in
        {string}.
        To include special keys into {string}, use double-quotes
        and "\..." notation |expr-quote|. For example,
        feedkeys("\<CR>") simulates pressing of the <Enter> key. But
        feedkeys('\<CR>') pushes 5 characters.
        If {mode} is absent, keys are remapped.
        {mode} is a String, which can contain these character flags:
        'm' Remap keys. This is default.
        'n' Do not remap keys.
        't' Handle keys as if typed; otherwise they are handled as
            if coming from a mapping.  This matters for undo,
            opening folds, etc.
        Return value is always 0.

call feedkeys("\<C-Y>")

10voto

holygeek Points 6580

Essayez ça :

" Press CTRL-Y:
normal <Ctrl+v><Ctrl+y>

Tapez littéralement ctrl+v, suivi de ctrl+y, ce qui se traduira par un seul caractère affiché comme ^Y dans votre script.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X