Vim C言語系の構文を持つプログラム言語用にVimを最適化する その4

動作

()の中でスペースキーが押されたら以下のように補完する

(←ココにカーソル)
スペースを入力すると ↓
(  ←ココにカーソル  )

()の中以外のところでスペースキーが押された場合は、通常通りスペースを入力する

←ココにカーソル
スペースを入力すると ↓
  ←ココにカーソル

※ 表示上見やすいように半角スペースを2つ入れていますが、本当は1つです。

.vimrc
"括弧内でスペースが押された場合に、( ←ココにカーソル )状態にする
function GetSpace()
  let nextChar = strpart(getline('.'), col('.') - 1, 1)
  let prevChar = strpart(getline('.'), col('.') - 2, 1)

  if nextChar == ")"
    if prevChar == "("
      return "\<Space>\<Space>\<Left>"
    endif
  endif

  return "<Space>"

endfunction

au FileType c,cpp,java,javascript inoremap <expr> <Space> GetSpace()