How do I emulate a keypress inside a Vim function?
13,018
Solution 1
Try this:
" Press CTRL-Y:
normal <Ctrl+v><Ctrl+y>
Literally type ctrl+v, followed by ctrl+y which will result in a single character shown as ^Y in your script.
Solution 2
You can use feedkeys()
. Type :help feedkeys
to read more:
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>")
Author by
Kit
Updated on July 21, 2022Comments
-
Kit almost 2 years
I'll start with code
function BigScrollUp() let count = 20 while count > 0 "Press" CTRL-Y <-- how do I emulate this? sleep 5m count -= 1 endwhile endfunction
I want to create a function to quickly scroll up and down, with animation so that I can keep track of where I am going.