くふんを狙え(vimグループ) このページをアンテナに追加 RSSフィード

くふんを狙え

|

2008-11-16

<expr> + input() で :map 死亡

00:15 |  + input() で :map 死亡 - くふんを狙え(vimグループ) を含むブックマーク はてなブックマーク -  + input() で :map 死亡 - くふんを狙え(vimグループ)  + input() で :map 死亡 - くふんを狙え(vimグループ) のブックマークコメント

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-nachtka-nacht2008/11/16 10:12input()での入力もCommand-line modeなので2回目の<F1>の展開で何か不味いことが起きてるのではないでしょうかね。他のコード例で動くのもおかしい話なので:versionも添えてバグレポート提出ですね。

トラックバック - http://vim.g.hatena.ne.jp/eclipse-a/20081116
|
最近のコメント
最近のトラックバック
カレンダー
<< 2017/05 >>
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
カウンター
95355