ほとんどの IDE と最新のテキスト エディター (Sublime Text 3) では、html タグの間に改行を挿入した後 (別名、タグを「展開」)、カーソルが正しくインデントされます。
前:
<div>|</div>
CRを押した後:
<div>
|
</div>
しかし、Vimでは、これが得られます:
<div>
|</div>
Vim で他のほとんどのエディターと同じ動作を得るにはどうすればよいですか (上記参照)。
ほとんどの IDE と最新のテキスト エディター (Sublime Text 3) では、html タグの間に改行を挿入した後 (別名、タグを「展開」)、カーソルが正しくインデントされます。
前:
<div>|</div>
CRを押した後:
<div>
|
</div>
しかし、Vimでは、これが得られます:
<div>
|</div>
Vim で他のほとんどのエディターと同じ動作を得るにはどうすればよいですか (上記参照)。
この小さなスニペットは、挿入モードで再マップして、カーソルが と の間にEnterあるかどうかをテストし、そうであればそれに応じて動作します。インデントの設定によっては、削除する必要がある場合があります。>
<
\<Tab>
キーをマッピングしている可能性のある他のプラグインとはうまくEnter機能しないため、互換性が必要な場合は、おそらくさらに多くの作業が必要になることに注意してください.
function EnterOrIndentTag()
let line = getline(".")
let col = getpos(".")[2]
let before = line[col-2]
let after = line[col-1]
if before == ">" && after == "<"
return "\<Enter>\<C-o>O\<Tab>"
endif
return "\<Enter>"
endfunction
inoremap <expr> <Enter> EnterOrIndentTag()
単純なケース (行頭、行末、 の内側と外側><
) のみをテストしましたが、おそらくこれがキャッチできないエッジ ケースがあります。
@RandyMorris と @romainl は、正確な問題に対する適切な解決策を投稿しています。
これらのタグを自分で入力する場合は、他にも興味深い可能性があります。HTML/XML 編集用のragtag.vimプラグインがあります。
ragtag.vimを使用して、これを入力して「前」の状況を (挿入モードで) 作成します。
div<C-X><Space>
「後」の状況を作成するには、代わりに次のように入力します。
div<C-X><Enter>
したがって、タグを「展開」することが事前にわかっている場合は、要素名とコンボを入力するだけCtrlXでEnter十分です。
ZenCoding.vimやSparkupなど、HTML を編集するときにキーストロークを節約するための他の高度なプラグインもあります。