加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

伪造/模拟Vim中的打字

发布时间:2020-12-15 20:58:21 所属栏目:安全 来源:网络整理
导读:我正在VimL中编写一个非常小的脚本,我希望模拟给定字符串的实际输入. 我面临的问题是,我尝试的任何事情都会将整个字符串立即放在缓冲区上,因此整个操作看起来非常原子,并且它不会描述键入char-by-char的自然延迟. 我已经尝试了下面这个函数的一些变体,即使我
我正在VimL中编写一个非常小的脚本,我希望模拟给定字符串的实际输入.

我面临的问题是,我尝试的任何事情都会将整个字符串立即放在缓冲区上,因此整个操作看起来非常原子,并且它不会描述键入char-by-char的自然延迟.

我已经尝试了下面这个函数的一些变体,即使我在不??同的地方添加了50米的睡眠,我也没有达到预期的行为:

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

这甚至可能吗?如果是这样,我错过了什么?

解决方法

也许这就是你需要的.你点击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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读