map-

何かのはずみで <expr> ってのを見つけて :help map-<expr> を読んでみたら map に expr ( expression: 式 ) を指定するための directive らしい。で、今まで関数の評価結果を map で利用するには <C-r>= しかないと思ってたんだけど ( SmartComplete.vim の元ネタ tip がこれを使ってたのでそれで覚えたという経緯 ) こっちはそもそも register の中身を command-line mode で展開するためのもののようで ( :help c_<C-R> ) 。

てことは map で関数の戻り値を使用するための正当な方法は <expr> なわけよね。どちらも式を評価できるという意味では機能や自由度は一緒だとは思うんだけど ( :help c_CTRL-R= ) canonical なのは <expr> 、と。てことで key mapping を以下のように変更してみた。注意点は ex command ではないので最後に <CR> がいらないということかな。

inoremap <expr> <C-Space> SmartComplete()