Vim で一定時間ごとに処理を割り込む

Vim で一定時間ごとに処理を呼びたい場合があると思います。
通常は autocmd に CursorHold や CursorHoldI に設定をすればいいのですが、この設定ではキー入力がない場合に続けてイベントが発生しません。
(一度 CursorHold が呼ばれてからキー入力がない場合は CursorHold が呼ばれない。


quickrun.vim や unite.vim だとどうやって解決しているのかなーと思ってソースを見てみたら 処理が終わった後に feedkeys を呼べばいいみたいです。
と、いうことでこんな感じ。

[ソース]

" 1秒毎に "homuN" を出力する
set updatetime=1000

let s:count = 0

function! s:test()
    echom "homu".s:count
    let s:count += 1
    call feedkeys(mode() ==# 'i' ? "\<C-g>\<ESC>" : "g\<ESC>", 'n')
endfunction

augroup test
    autocmd!
    autocmd CursorHold,CursorHoldI * call s:test()
augroup END


ひとまずはこれでいいかな…。