キーマクロの実行中に意図しないキーマップの展開が起こる #980

Open
machakann opened this Issue Nov 16, 2016 · 0 comments

Projects

None yet

1 participant

@machakann

質問・報告の内容

キーマクロが意図しない動作をしたので報告します。

再現手順

  1. 入力された文字を返すだけのオペレータを定義する
function! OperatorEcho(motionwise) abort
  let c = getchar()
  echomsg type(c) == type(0) ? nr2char(c) : c
endfunction
nnoremap <Space>e :<C-u>set operatorfunc=OperatorEcho<CR>g@
  1. 次のようなオペレータ待機モードのマッピングを定義する
onoremap i* :
  1. 次のような入力でオペレータを呼び出すキーマクロを記録する。この時は意図通り i が表示される。
qq<Space>efei*q
  1. @q を入力してマクロを再生する。この時は手動で実行した場合とことなり : が表示される。オペレータ待機モードは fe の時点で終了しているので i* は展開されないはずなのですが、キーマクロの再生中のみ展開されています。f{char}{char} は失敗しなければ何でもよく、 t コマンドでも再現しますが、ほかのモーションだと再現しません。

Vimのバージョン

8.0.085

OSの種類/ディストリ/バージョン

  • Windows 10 Pro 64bit (10.0.14393)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment