web-dev-qa-db-ja.com

VimでHTMLをフォーマットしてインデントする

現在、改行がなく、1行で表示される巨大なHTMLファイルがあります。

Vim(特にmacvim)でフォーマットしたいです。次のオプションを試しましたが、どれもうまくいきませんでした。

  • テキストを選択して=を押しました。これは、コードを自動的に意図するだけです。ただし、コード全体が1行に含まれているため、何も実行されません。
  • 私はこのプラグインを試しました http://www.vim.org/scripts/script.php?script_id=361 この種の機能はありますが、現在のタグに対してのみ改行を挿入します。ファイル全体をフォーマットしたい

プラグインまたはその他の方法でこれを行う方法はありますか?

ありがとう!

19
Sudar

それを開始する1つの方法は、すべてのタグを独自の行に分割することです。

:s/<[^>]*>/\r&\r/g
:g/^$/d

フローティングがある場合<または>シンボル(例:無効なHTML、JavaScript比較演算子、CSS直接子孫セレクター部分)、これは正しく機能せず、終了タグを実行するようなものに切り替えることができます-<\/[^>]*>。とにかく、それは確実なスタートを提供します。

デモンストレーション:

このような理想化されたドキュメントで、

<!DOCTYPE html><html><head><title>hello</title></head><body>world</body></html>

これはこれを生成します:

<!DOCTYPE html>
<html>
<head>
<title>
hello
</title>
</head>
<body>
world
</body>
</html>

次に、=あなたが望むものを生み出します:

<!DOCTYPE html>
<html>
    <head>
        <title>
            hello
        </title>
    </head>
    <body>
        world
    </body>
</html>
38
Chris Morgan

より良い結果を得るには、専用の外部フォーマットプログラムを使用する必要があります。

プラグイン vim-autoformat をインストールすることで、 tidyhtml-beautify の両方を自動的に統合できます。その後、1回のキーストロークでインストールされているフォーマッタを実行できます。

3

整頓されたユーティリティを使用する方が良いでしょう この回答で説明されているように

この仕事のために良いツールがすでに書かれています

0
New Alexandria