VIでHTMLファイルのインデントを整理するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/815548

  •  03-07-2019
  •  | 
  •  

質問

すべて台無しにされた彼の巨大なhtmlファイルのインデントを修正するにはどうすればよいですか?

通常の < !> quot; gg = G <!> quot;コマンド。これは、コードファイルのインデントを修正するために使用します。ただし、HTMLファイルでは正しく機能しないようです。単にすべてのフォーマットを削除しました。

:filetype = xmlも設定してみました。これをだましてXMLファイルだと思わせるかどうかを確認しましたが、それでも解決しませんでした。

役に立ちましたか?

解決

filetype indent on内に.vimrcがあると、VimはHTMLファイルを非常にうまくインデントします。

shiftwidthが2の単純な例

<html>
  <body>
    <p>
    text
    </p>
  </body>
</html>

他のヒント

すべての準備が必要なものがいくつかあります。それらをすべて1つの場所にまとめるだけです:

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

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

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

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

:!tidy -mi -xml -wrap 0 %

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

:!tidy -mi -html -wrap 0 %

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

これが役立つことを願っています。

tylerlが上で説明したように、以下を設定します:

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

ただし!

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

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

こちらおよび詳細については、こちらをご覧ください。

これは、<!> quot; ugly <!> quot;を開くのに最適な私のソリューションです。きれいに間隔を空けてHTML:

vim fileIn.html -c "set sw=2 | %s/>/>\r/ | execute 'normal gg=G' | set nohlsearch | g/^\\s*\$/d"

swコマンドは、デフォルトが4でHTMLには高すぎるためです。

次の部分では、各要素(>)の後に改行(Vimはキャリッジリターンと思われます)を追加します

次に、=

でファイル全体を再度インデントします

次にハイライトを解除set hlsearch(vimrcに| wq! fileOut.htmlがあるため)

その後、すべての空/空白のみの行を削除します(こちらをご覧ください。シェル内にあるためダブルエスケープされます)

Vimをまったく使用しないで、ファイルをクリーンアップする場合は、最後に<=>を追加することもできます。

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

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

  1. インストール
  2. 設定(最初の例からコピー)
  3. 実行:call HtmlBeautify()

仕事を美しくします!

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

インデントを取得できるヘビーウェイトなソリューションに加えて、編集中に必ずしも気にしたくないすべてのHTMLプリティプリンティングがあります。

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

次に、お気に入りの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

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

もう1つのファイル:次の行をhtml.vimに追加(または作成)します。これも/tidy

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

これを使用するには、HTMLファイルを開いて/と入力するだけです。 (つまり、<leader>は<=>キーです。)

そこに行きます!決して迅速な解決策ではありませんが、これらの巨大なめちゃくちゃなHTMLファイルを編集できるようになりました。

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

  

通常の<!> quot; gg = G <!> quot;を試しました。これは、コードファイルのインデントを修正するために使用するコマンドです。ただし、HTMLファイルでは正しく機能しないようです。単にすべてのフォーマットを削除しました。

vimのautoformat / indent gg=Gが<!> quot; broken <!> quot;の場合(各行を左にインデントするなど)、ほとんどの場合、インデントプラグインは有効化/ロードされていません。間違ったインデントを行うのではなく、実際にエラーメッセージを表示する必要があります。そうしないと、実際にはかなり良いのに、オートフォーマット/インデント機能がひどいと思うだけです。

インデントプラグインが有効/ロードされているかどうかを確認するには、:scriptnamesを実行します。リストに.../indent/html.vimがあるかどうかを確認します。そうでない場合は、プラグインがロードされていないことを意味します。その場合、この行を~/.vimrc

に追加します
filetype plugin indent on

ファイルを開いて:filetype plugin indent onを実行すると、:eが表示されます。次にautoindentを実行します。これにより、正しいオートフォーマット/インデントがすぐに実行されます。 (改行は追加されませんが、すべてのhtmlコードが1行にある場合、インデントされません)。

注:vimコマンドラインでsmartindentではなく<=>を実行している場合は、ファイル<=>を再度開く必要があります。

また、<=>および<=>の設定について心配する必要はありません。これらは関連していません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top