私はしばらくVimを使用してきましたが、PHPファイルで適切なHTMLインデントが機能しません。
たとえば、下に示すように、各子が親よりも1タブだけインデントされるようにします。
<?php
if(isset($sports)) {
//Do something
?>
<div>
<label>Uniform Size</label>
<ul>
<li class="left"><label for="s" class="small">S</label><input type="radio" name="size[]" value="S" id="s" class="radio" /></li>
<li class="left"><label for="m" class="small">M</label><input type="radio" name="size[]" value="M" id="m" class="radio" /></li>
<li class="left"><label for="l" class="small">L</label><input type="radio" name="size[]" value="L" id="l" class="radio" /></li>
<li class="left"><label for="xl" class="small">XL</label><input type="radio" name="size[]" value="XL" id="xl" class="radio" /></li>
</ul>
</div>
<?php
}
?>
PHP-correct-Indent スクリプトを使用すると、コードは次のようにフォーマットされます。
<?php
if(isset($sports)) {
//Do something
?>
<div>
<label>Uniform Size</label>
<ul>
<li class="left"><label for="s" class="small">S</label><input type="radio" name="size[]" value="S" id="s" class="radio" /></li>
<li class="left"><label for="m" class="small">M</label><input type="radio" name="size[]" value="M" id="m" class="radio" /></li>
<li class="left"><label for="l" class="small">L</label><input type="radio" name="size[]" value="L" id="l" class="radio" /></li>
<li class="left"><label for="xl" class="small">XL</label><input type="radio" name="size[]" value="XL" id="xl" class="radio" /></li>
</ul>
</div>
<?php
}
?>
インデントされたHTMLでPHPコードを追加した場合でも、インデントは無視され、インデントなしでHTMLコードの新しい行を移動します。
だから、Vimを使用してPHPファイル内でHTMLで作業したいインデント形式を取得する方法はありますか?
これはまだ気になります。私だけjust最良の回避策(個人的には)はこれだと決めました:
:set filetype=html
次に、テキストを強調表示して=
。ブーム! HTMLフォーマットは成功します。 (理想的ではありませんが、少なくとも動作します。)
Vim Wikiには と呼ばれる一連のvimrc命令があります。PHP with HTML )のインデントのサポートは、ブロックに応じて正しいプラグインを使用します。
同じコードを使用する Vundle/Pathogen Plugin もありますが、インストールが簡単で、.vimrc
掃除。
病原体
cd ~/.vim/bundle
git clone https://github.com/captbaritone/better-indent-support-for-php-with-html.git
バンドル
.vimrcに配置
Bundle 'captbaritone/better-indent-support-for-php-with-html'
Vimで実行
:BundleInstall
すべてのソリューションを真剣に検討した後、このプラグインを見つけました。
http://www.vim.org/scripts/script.php?script_id=604
それは私の問題を解決したようです!!!!!
私にとっては、最初に:set ft=html
その後 :set syn=php
。
Php + htmlで、次のことが私に適していることがわかりました。
:set ft=html # Change the file type to html
=G # to indent all lines
:set ft=phtml # Change the file type to phtml
=G # to indent all php lines
このソリューションの方がはるかに優れていることがわかりました。 http://www.vim.org/scripts/script.php?script_id=112
hEREDOC htmlスタイルのサポート。私のコードで頻繁に発生します。
BTW:古いバージョンよりも多くのバージョンがあります(スクリプトID 604、アレックスが上記に投稿)
php-correct-indentingは、PHPのみを考慮し、HTMLの可読性は重要ではないと想定します。 XMLインデンターはタグを適切に配置しますが、<?php>処理命令のコンテンツをインデントして一致させることはできません。多分PHPプログラミング言語と[X] [HT] MLテンプレート化されたマークアップ言語の両方のCのような構文を理解するインデントスクリプトがありますが、私はまだ1つに会ったことがありません- ごめんなさい。
それでも、php-correct-indentingが悪用する前であっても、あなたの例のインデントをいじりたいです! <div>要素は外側のif文の中にありますが、インデントからそれを確認する方法はありません。私は次のようなものを提案します:
<?php if(isset($sports)) { ?>
<?php
// Do something
?>
<div>
<label>Uniform Size</label>
<ul>
<li>etc. etc.</li>
</ul>
</div>
<?php } ?>
.vimrc内:
:function IndentPHPHTML()
: set ft=html
: normal gg=G
: set ft=php
:endfunction
ctrl-shift-L(または何でも)を使用してインデントする
nnoremap <C-S-l> :call IndentPHPHTML()<cr>
解決策を数日間探した後、何も機能せず、最終的にこれが機能したので、これをvimrcに追加してください
au BufEnter,BufNew *.php :set filetype=html