VIでHTMLファイルのインデントを整理するにはどうすればよいですか?
-
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タグhtml
、head
、body
、およびその他のタグはデフォルトでインデントされないことに注意してください。これは理にかなっています。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
上記のリンクにはすべての情報があります:
- インストール
- 設定(最初の例からコピー)
- 実行
: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
ではなく<=>を実行している場合は、ファイル<=>を再度開く必要があります。
また、<=>および<=>の設定について心配する必要はありません。これらは関連していません。