はじめに Vim の組み込み関数に feedkeys() というものがあります。 Vim にキー入力を送る関数で、例えば :call feedkeys("1G")<CR> と入力するとカーソルが一行目へ移動します。 乱暴に言えば :normal コマンドに似ているのですが、 Vim script を書く上では違いがいくつかあります。一つの大きな違いは :normal コマンドが即時に実行されるのに対し、 :call feedkeys() を使う場合はキー入力を処理キューの最後尾に追加しそれが消費されるまで遅延することです。実際に、キーマッピングを定義して比べてみましょう。 :normal コマンドの場合 function! s:foo() abort execute "normal! :echomsg 'foo'\<CR>" endfunction nnoremap <nowait> <S