2012-05-05 36 views
3

我在VimL中寫了一個非常小的腳本,我正在模擬給定字符串的實際輸入。僞裝/模擬在Vim中輸入

我現在面臨的問題是什麼,我嘗試的地方整個字符串立即在緩衝區中,整個操作看起來相當的原子,並沒有描繪字符按字符輸入的自然延遲。

我試過下面的功能有一些變化,即使我在不​​同的地方增加了一個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 

這甚至可能嗎?如果是的話,我錯過了什麼?

回答

2

也許這就是你需要的。你打按Ctrl - MiddleMouse成炭到剪貼板中的內容發送到VIM字符:

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 
+0

我不需要剪貼板本身的內容,因爲這是一個更大的事情的一小部分我正在努力,但是* *上的*位置。謝謝! – alfredodeza

+0

您可以將函數名稱更改爲'FakeTyping',並嘗試:':call FakeTyping('hello,world')' – kev