我正在VimL中编写一个非常小的脚本,我希望模拟给定字符串的实际输入。
我面临的问题是,我尝试的任何东西都会将整个字符串立即放在缓冲区上,因此整个操作看起来非常原子,并且它不会描绘键入char-by-char的自然延迟。 / p>
我已经尝试了以下功能的一些变体,即使我在不同的地方添加了sleep 50m
,我也没有达到预期的行为:
function! FakeTyping(string)
let list = split(a:string)
for word in list
for letter in split(word)
execute "normal a" . letter . "\<esc>"
endfor
endfor
endfunction
这甚至可能吗?如果是的话,我错过了什么?
答案 0 :(得分:3)
也许这就是你所需要的。你点击 Ctrl - MiddleMouse 通过char将剪贴板的内容发送到vim char:
nmap <C-MiddleMouse> :call AnimateText(@*)<CR>
fun! AnimateText(text)
let lineno = line('.')
let lines = split(a:text, "\n")
for line in lines
call setline(lineno, '')
let chars = split(line, '.\zs')
let words = ''
for c in chars
let words .= c
call setline(lineno, words)
call cursor(lineno, 0)
normal z.
if c !~ '\s'
sleep 100m
redraw
endif
endfor
let lineno += 1
endfor
endfun