私はvimアドオンを簡単に掘り下げました(これは、この種の問題の解決策であることがよくあります)。私はあなたが望むものを見つけたとは思わない:近いアドオンがいくつかありますが、閉じ括弧の前に余分な改行を挿入するものは何もありません.
次のようなことができます
imap { {<return><return>}<up><tab>
しかし、他の状況で中括弧を使用する言語で作業している場合、これは厄介になります。代わりに、改行に反応することができます:
inoremap <return> <return><return>}<up><tab>
もちろん、これは、左中括弧に続くものだけでなく、入力されたすべての改行でトリガーされます。中括弧が現在の行の最後の文字であることを確認するには、次のことができます。
次のような関数を (~/.vimrc または ~/.vim/plugin のどこかに) 用意します。
function! CloseBraceIfOpened()
if getline(".")[-1:] == '{'
" insert a space and then delete it to preserve autoindent level
exec "normal o "
normal x
normal o}
normal k
else
normal o
endif
endfunction
またする
inoremap <buffer> <enter> <esc>:call CloseBraceIfOpened()<enter>A
これimap
はバッファ固有であるため、マッピングは実行時に現在のバッファにのみ適用されることに注意してください。すべてのバッファに適用するには、 を削除し<buffer>
ます。
あなたが本当に野心的/特定の場合は、関数でテストを実行して、現在の行のコードが実際にブロックを開くかどうかを確認できます。
インデントを希望どおりに機能させるには、「autoindent」および「smartindent」設定をオンにします。
: set autoindent smartindent
デフォルトでオンにするには、追加します
set autoindent smartindent
に~/.vimrc
。