4

私はVimLで非常に小さなスクリプトを書いていますが、特定の文字列の実際の入力をシミュレートしようとしています。

私が直面している問題は、文字列全体を即座にバッファに配置するため、操作全体が非常にアトミックに見え、文字ごとの入力の自然なレイテンシを表していないことです。

以下の関数のいくつかのバリエーションを試しましたが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

これも可能ですか?もしそうなら、私が欠けているのは何ですか?

4

1 に答える 1

3

多分これはあなたが必要なものです。クリップボードのコンテンツをcharごとにvimcharに送信するには、-Ctrlを押します。MiddleMouse

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
于 2012-05-05T00:20:14.287 に答える