18
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Vimで中括弧で改行したらインデント

Posted at

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)

18
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?