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>"elsereturn"\n"endifendfunction" Enterに割り当てinoremap<silent><expr><CR> IndentBraces()
参考にしたサイト
Vimで隣接した括弧の開き記号を消すと同時に閉じ記号も削除するスクリプト
Vimで括弧の補完→改行してインデント