vimrcで以下のように閉じ括弧の補完を設定している.
inoremap { {}<LEFT>
inoremap [ []<LEFT>
inoremap ( ()<LEFT>
inoremap < <><LEFT>
inoremap " ""<LEFT>
inoremap ' ''<LEFT>
この設定をしているときに限り,中括弧で改行すると
{
<カーソル>
}
のように,インデントしてすぐに書ける位置にカーソルが移動するスクリプトを書いた.
.vimrc
inoremap { {}<LEFT>
" 隣接した{}で改行したらインデント
function! IndentBraces()
let nowletter = getline(".")[col(".")-1] " 今いるカーソルの文字
let beforeletter = getline(".")[col(".")-2] " 1つ前の文字
" カーソルの位置の括弧が隣接している場合
if nowletter == "}" && beforeletter == "{"
return "\n\t\n\<UP>\<RIGHT>"
else
return "\n"
endif
endfunction
" Enterに割り当て
inoremap <silent> <expr> <CR> IndentBraces()
参考にしたサイト
Vimで隣接した括弧の開き記号を消すと同時に閉じ記号も削除するスクリプト
[Vimで括弧の補完→改行してインデント]
(http://qiita.com/kuwana/items/d9778a9ec42a53b3aa10)