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
ひとまずはこれでいいかな…。