144

彼の巨大な html ファイルのインデントを修正するにはどうすればいいですか?

コードファイルのインデントを修正するために使用する通常の"gg=Gコマンドを試しました。ただし、HTML ファイルでは正しく動作しないようです。すべてのフォーマットを削除しただけです。

を設定:filetype = xmlして、これをだまして XML ファイルであると思わせることが役立つかどうかを確認しましたが、それでもうまくいきませんでした。

4

11 に答える 11

204

すべてを整える必要があることがいくつかあります。それらすべてを1つの場所に要約するだけです。

次のオプションを設定します。

:filetype indent on
:set filetype=html           # abbrev -  :set ft=html
:set smartindent             # abbrev -  :set si

次に、カーソルをファイルの先頭に移動し、最後にインデントします。gg =G
または、インデントする目的のテキストを選択し、=を押してインデントします。

于 2013-01-01T22:43:04.587 に答える
96

filetype indent onmy 内で、.vimrcVim は HTML ファイルを非常にうまくインデントします。

a が 2 の簡単な例shiftwidth:

<html>
  <body>
    <p>
    text
    </p>
  </body>
</html>
于 2009-05-02T20:34:31.323 に答える
73

スマート インデントを使用する主な問題は、XML (または HTML) が 1 行に収まっている場合、curl 要求から戻ってくる可能性があるためgg=G、うまくいかないことです。代わりに、VI から直接呼び出された tidy を使用して適切なインデントを経験しました。

:!tidy -mi -xml -wrap 0 %

これは基本的に、行をラップせずに tidy を呼び出して XML ファイルをクリーンアップし、デフォルトの 68 文字幅の行に収まるようにすることを VI に指示します。29MB の大きな XML ファイルを処理したところ、5 ~ 6 秒かかりました。したがって、HTMLファイルの場合、コマンドは次のようになるはずです。

:!tidy -mi -html -wrap 0 %

コメントで述べたように、tidy多くのベース Linux / MacOS システムで見つけることができる基本的なツールです。あなたがそれを望んでいたが、そうではなかった場合のプロジェクトのページは次のとおりです: HTML Tidy

于 2013-11-13T17:43:21.603 に答える
49

上で tylerl が説明しているように、次のように設定します。

:filetype indent on
:set filetype=html
:set smartindent

ただし、vim 7.4 では、HTML タグhtmlheadbody、およびその他の一部がデフォルトでインデントされていないことに注意してください。HTML ファイル内のほぼすべてのコンテンツがこれらのタグに該当するため、これは理にかなっています。本当にしたい場合は、これらのタグを次のようにインデントすることができます:

:let g:html_indent_inctags = "html,body,head,tbody" 

詳細については、「コンパイル済みの Vim 7.4 で HTML インデントが機能しない、何かアイデアはありますか?」と「代替の html インデント スクリプト」を参照してください。

于 2013-10-13T23:16:01.010 に答える
12

これは、「醜い」HTMLを適切な間隔で開くのにうまく機能する私のソリューションです。

vim fileIn.html -c "set sw=2 | %s/>/>\r/ | execute 'normal gg=G' | set nohlsearch | g/^\\s*\$/d"
  • このswコマンドは、デフォルトが 4 であり、HTML には高すぎるためです。
  • 次の部分では、各要素 ( ) の後に改行を追加します (Vim は改行だと思います、ため息>)。
  • 次に、ファイル全体を=.
  • 次に、強調表示を解除します>set hlsearchvimrcにあるため)。
  • 次に、空/空白のみの行をすべて削除します (詳細については、「Vim delete blank lines」を参照してください。これもシェル内にあるため、二重にエスケープされます)。

| wq! fileOut.htmlVim をまったく起動したくない場合は、最後に追加することもできますが、ファイルをクリーンアップするだけです。

于 2013-05-01T18:56:07.667 に答える
7

私はこのスクリプトを使用します: https://github.com/maksimr/vim-jsbeautify

上記のリンクには、すべての情報があります。

  1. インストール
  2. 構成 (最初の例からコピー)
  3. 走る:call HtmlBeautify()

美しく仕事をします!

于 2014-04-17T13:16:10.243 に答える
4

Vim サイトで HTML インデント スクリプトを使用してみましたか?

于 2009-05-02T20:44:00.393 に答える
4

これは、インデントと、編集中に必ずしも気にする必要のないすべての HTML プリティプリントを実現する重量級のソリューションです。

まず、Tidyをダウンロードします。必ずバイナリをパスに追加して、任意の場所から呼び出すことができるようにしてください。

次に、好みの HTML フレーバーを記述した構成ファイルを作成します。ドキュメンテーションは Tidy には適していませんが、ここに概要とすべてのオプションのリストがあります。これが私の設定ファイルです:

bare: yes
break-before-br: no
clean: yes
drop-proprietary-attributes: yes
fix-uri: yes
indent-spaces: 4
indent: yes
logical-emphasis: yes
markup: yes
output-xhtml: yes
quiet: yes
quote-marks: yes
replace-color: yes
tab-size: 4
uppercase-tags: no
vertical-space: yes
word-2000: yes
wrap: 0

これをフォルダー (vimfiles の下)に保存tidyrc_html.txtします。ftplugin

もう 1 つのファイル: 次の行を に追加 (または作成)html.vimftpluginます。

map <leader>tidy :%! tidy -config ~/vimfiles/ftplugin/tidyrc_html.txt <CR>

使用するには、HTML ファイルを開いて、/tidy. (それ/<leader>鍵です。)

ほら!決して簡単な解決策ではありませんが、これで、巨大でめちゃくちゃな HTML ファイルを編集するための準備が少し整いました。

于 2013-02-08T01:42:09.467 に答える
2

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

于 2015-06-13T15:58:16.933 に答える