VIMの<li>自動インデントオプションを変更する


3

デフォルトでは、Vimは<li>他のほとんどのHTMLタグに対して適切に自動インデントを行いますが、タグ内のコンテンツをインデントしたくないようです。

たとえば、次のコードから始めた場合:

<ul>
<li>
foo
</li>
<li>
bar
</li>
</ul>

そして、私はそれを得るvim autoindentを持っています:

<ul>
  <li>
  foo
  </li>
  <li>
  bar
  </li>
</ul>

しかし、私が本当に欲しいのはこれです:

<ul>
  <li>
    foo
  </li>
  <li>
    bar
  </li>
</ul>

ほとんどの開始タグの後に自動インデントを設定するように新しいコードを作成する場合、これは面倒ですが、これは回避するのに十分簡単です。これが本当に私に届いているのは、vimを使用して、私が遊んでいる大きな生成されたHTMLを自動フォーマットするときです(生成されたソースを使用してUIの変更をモックアップしようとします)。

この自動インデント動作を変更して<li>、他の開始タグと同様に処理し、コンテンツをインデントする簡単な方法はありますか?

回答:


6

簡単な方法はわかりませんが、この解決策はそれほど難しくありません。

  1. Unixの場合は$ VIMRUNTIME / indent / html.vimを〜/ .vim / indent / html.vimにコピーし、Windowsの場合は〜/ vimfiles / indent / html.vimにコピーします。
  2. indent / html.vimのコピーを編集して、この行

    call <SID>HtmlIndentPush('li')

    をそのファイルに既にある類似の呼び出しのリストに追加します。

それはそれを行う必要があります。


私はそれが「簡単な修正」のカテゴリーに入ると思います。私はそれがそのようなものでなければならないと考えましたが、インデントの内容がどのように定義されているのかはわかりませんでした。完璧に働きました。
Herms

OSXでビルトインvimを使用しています。$ VIMRUNTIMEとは何ですか?vimは/ usr / bin /(シンボリックリンクではない)にある
ジョンヒンネガン

1
@JohnHinnegan:Vimを開いて実行できるはず:echo $VIMRUNTIMEです。
ゲイリージョン

2

私がGoogleで行ったように他の誰かがこの質問を見つけた場合、Tim Popeのrag-tag拡張機能を使用する別のソリューションがあります。これにより、正しいインデントが自動的に追加され、HTML5のその他のタグが更新されます。


申し訳ありませんが、私はあなたが言及したプラグインをインストールしますが<li>、私はコピー..「sが私のために正しくインデントされていないragtag.vim私には~/.vim/plugin/、その後のvimを再起動し、ディレクトリ、およびgg=G
user35538
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.