回答:
filetype indent on
私の内部.vimrc
は、VimインデントHTMLは非常にうまくファイル。
a 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
または、インデントするテキストを選択して、インデントするためにクリックします=。
home.html
ます。.phpファイルのインデントに問題はありません。:ここでは私の.vimrc持っpastebin.com/FAJ0MCA9
smartindent
必要ありません。また、CおよびC ++用に調整されているので、autoindent
代わりにより一般的なものを使用することを好みます。
スマートインデントを使用する場合の主な問題は、XML(またはHTML)が1行にある場合、curlリクエストから戻ってくる可能性gg=G
があるため、うまくいきません。代わりに、VIから直接呼び出されるtidyを使用して良いインデントを経験しました。
:!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"
詳細については、「コンパイルされたVim 7.4でHTMLインデントが機能しない、なんらかのアイデア」および「代替のHTMLインデントスクリプト」を参照してください。
これは、「醜い」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にまったく入りたくない場合は、最後に追加して、ファイルをクリーンアップすることもできます。
:%s/>\s*/>\r/g
(g
グローバル置換のためにa を追加し、\s*
末尾の空白を削除しました)。また:%s/</\r</g
、開き角括弧の前に改行を追加することも追加しました。それ以外の場合、のようなタグ<td>foo</td>
は<td>
およびのように分割されfoo</td>
ます。
私はこのスクリプトを使用します:https : //github.com/maksimr/vim-jsbeautify
上記のリンクには、すべての情報があります。
:call HtmlBeautify()
仕事は美しくします!
VimサイトでHTMLインデントスクリプトを使用してみましたか?
/usr/share/vim/vim74/indent/html.vim
ます。「2014年7月4日:Vim 7.4.356以降には、このスクリプトの子孫が含まれています(公式スクリプトは現在Bramによって保守されており、大幅な変更が含まれています)」
ここでは、インデントを設定するヘビーウェイトソリューションに加えて、編集中に必ずしも気にする必要のないすべての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.vim
しftplugin
ます。
map <leader>tidy :%! tidy -config ~/vimfiles/ftplugin/tidyrc_html.txt <CR>
これを使用するには、HTMLファイルを開いてと入力し/tidy
ます。(それ/
が<leader>
鍵です。)
よし!決して迅速な解決策ではありませんが、今では、これらの巨大なめちゃくちゃになったHTMLファイルを編集するための設備が少し良くなっています。
プラグインvim-autoformatをインストールすることで、tidyとhtml-beautifyの両方を自動的に統合できます。その後、インストールされているフォーマッタを1回のキーストロークで実行できます。
通常の「gg = G」コマンドを試しました。これは、コードファイルのインデントを修正するために使用するものです。ただし、HTMLファイルでは正しく機能しないようです。それは単にすべてのフォーマットを削除しました。
vimのautoformat / indent gg=G
が「壊れている」ように見える場合(すべての行を左インデントするなど)、おそらくインデントプラグインが有効になっていないか、ロードされていません。悪いインデントをするだけでなく、本当にエラーメッセージを出すべきです。そうでなければ、ユーザーはオートフォーマット/インデント機能が実際にかなり良いのにひどいと思っているだけです。
インデントプラグインが有効/ロードされているかどうかを確認するには、を実行し:scriptnames
ます。.../indent/html.vim
がリストにあるかどうかを確認します。そうでない場合、それはプラグインがロードされていないことを意味します。その場合は、次の行を追加し~/.vimrc
ます。
filetype plugin indent on
ファイルを開いて実行すると:scriptnames
、表示されるはず.../indent/html.vim
です。次にを実行するgg=G
と、正しいオートフォーマット/インデントが実行されます。(ただし、改行は追加されないため、すべてのHTMLコードが1行にある場合は、インデントされません)。
注:の:filetype plugin indent on
代わりにvimコマンドラインで実行している場合は~/.vimrc
、ファイルを再度開く必要があります:e
。
また、あなたが心配する必要はありませんautoindent
し、smartindent
設定、彼らはこのためには関係ありません。