vimはNotepad ++のような一致するHTMLタグを強調表示できますか?


181

VIMは、中括弧、括弧、および角括弧のペアのマッチングをサポートしています。これは、PHPやJavascriptなどのCスタイル言語の編集に最適です。しかし、一致するHTMLタグはどうでしょうか?

Notepad ++は、私が使用している限り、この機能を備えています。HTMLのブロックの開始位置と終了位置を特定できると非常に便利です。私が探しているのは、vimの場合は次のようなものです(緑のdivタグを参照)。

(ボーナス機能:このスクリーンショットの赤いタグのように、閉じていないHTMLタグを強調表示します)。

matchitは次善のものとして提案されていますが、その機能を使用するには追加のキーストロークが必要です。追加のキーを押さなくても、HTMLのブロックの始まりと終わりを確認できます。

このようなvimを見つけるためにインターネットを探索しました。他の2つのStackOverflowの 質問nabbleによると、どうやら私だけではありません。

HTMLタグに視覚的に一致することができないというvimにほとんど辞任しました。vimがこれを行うことは可能ですか?

補遺:現在、既存のプラグインでこれを行うことができない場合、vimscriptウィザードには、適切なプラグインの作成方法に関する指針がありますか?


この機能が「非常に役立つ」とはどのような方法で説明できますか?すべての瞬間にすべてを知る必要はありません。何かを知る必要があるとき、Vimは非常に少ないキーストロークで非常簡単にわかるように設計されています。
romainl 2011年

17
すべてを知る必要はありませんが、HTMLタグがいつ終了するかを簡単に知ることができるので、作業中のファイルの構造を調べることができます。また、不適切に記述された多くのコードも扱っているため、終了タグのないhtmlタグに遭遇することがあります。これは、常に修正する必要があります。
linqq

5
@romainl私はあなたの答えを頻繁に読み、あなたの視点が本当に好きです。しかし、今回は反対しなければなりません。この機能は必須ではないと考えることもできますが、これはかなりいい質問だと思います。Vimで簡単に入手する方法がないのは奇妙に思えます。
lucapette

1
@lucapette、ありがとうございます。私もその質問が好きです。私はそのような機能を使用したことがなく、その必要性を感じたことはありません。しかし、それはおそらく、一度試してみなければ、生きていけないものの1つでしょう。I私のワークフローとワークスペースクリーン様および焦点を当て、「行政の残骸」から自由と私は考えて、このような機能があります余計なこと。プラグインの完全な候補。おそらく、matchitからのインスピレーションを出発点にしようとするかもしれません。
romainl

回答:


219

今日はHTMLで作業する必要があったので、これに取り組むつもりでした。問題を解決するftpluginをvim.orgに追加しました。

vim.orgから入手できます

githubから入手できます

それがあなたのために働くことを願っています。問題が発生した場合はお知らせください。


1
ありがとうございました!それがまさに私が求めている機能です。修正したい場合は、2つのマイナーな問題のみ:1.現在、反対のタグのみが一致します。カーソルが置かれているタグと一致させることは可能ですか?2.現在、htmlタグに属性がある場合は、それらも選択されます。属性なしでタグ名のみを選択することは可能ですか?
linqq

良い提案。これらはどちらも、v1.2でvim.orgに対応する必要があります。一致する正規表現はより複雑になりました。バグを見つけたらお知らせください。
Greg Sexton、

1
リクエストに応じて、このftpluginをgithubに追加しました。リンクについては私の更新された回答を参照してください。
グレッグセクストン

1
@GregSextonあなたは正式にヒーローになりました;)
lucapette

7
これを見つけただけで良さそうですが、〜/ .vimrcに「filetype plugin on」を追加してオンにする必要があったことに注意してください。プラグインをftpluginフォルダーに配置しても機能しない場合は、上記を〜/ .vimrcに追加してください。
Geoff

95

GregのMatchTag.vimプラグインは素晴らしいですが、もっと何かが欲しかったです。カーソルがタグの1つにあるときだけでなく、囲んでいるタグが常に強調表示されるようにしました。

私が書いたのでMatchTagAlways GregのMatchTagがないことをすべて行い、また常に囲みタグ、カーソルがコード内にあるどんなにを強調しています。また、閉じられていないタグや、JinjaやHandlebarsなどのHTMLテンプレート言語でも機能します。

動作中のGIFを次に示します。

MTAの動作


4
クールなソリューション-おそらく元のバージョンを使用しますが、これがどのように役立つかがわかります。より多くの回答にGIFデモがあったら良かったです。
Jason

3
Jasonと完全に同意します。すばらしいGIFハックで+1。
Dan Bechard、2014年

これは受け入れられた答えよりもうまく機能します。しかし、垂直の画面の高さを超えるタグを確認する方法はまだわかりません。vimでカーソルを越えて画面を移動できず、分割画面の両方のウィンドウでアクティブなタグが表示されません。
radix07 2014

1
あなたの絶対的な伝説、私の人生は
カールグレイザー

1
これは報奨金の答えよりもはるかに優れています
MohitC '25年

-2

Vimで対応するhtmlスタイルの山括弧を探してここに来ました。これはうまくいくようです:

:set mps+=<:>
:help matchpairs

7
この方法は解決策ではなく、「<」を「>」に一致させるだけです
Daniel YC Lin
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.