![]() ![]() ![]() ![]() |
![]() |
|
![]() |
||
![]() |
cnoremap <expr> <F1> input('hi!')
ここで :<F1><F1> とやると E121, E15 が出て死亡。
function! s:main() return input('hi!') endfunction cnoremap <expr> <F1> <SID>main()
変形してみる。もちろん :<F1><F1> とすると E121, E15 が出て死亡。
じゃあどうすればいいかって?
function! s:main() cnoremap <expr> <F1> <SID>main() return input('hi!') endfunction cnoremap <expr> <F1> <SID>main()
これなら :<F1><F1> しても大丈夫。理解不能。誰か助けて。
以下のコードでも動く
function! s:main() return input('hi!') endfunction cnoremap <expr> <F1> function('<SID>main')()
ka-nacht
2008/11/16 10:12
input()での入力もCommand-line modeなので2回目の<F1>の展開で何か不味いことが起きてるのではないでしょうかね。他のコード例で動くのもおかしい話なので:versionも添えてバグレポート提出ですね。