2012-02-23 17 views
1

オートフォーマット(gg=G)ので(hereからの例)のようなコードのために完璧に動作します:Vimの自動フォーマットオプション(=)は、HTML + JSを正しくインデントしませんか?

fun() 
{ 
for(...) 
{ 
for(...) 
{ 
if(...) 
{ 
} 
} 
} 
} 

fun() 
{ 
    for(...) 
    { 
    for(...) 
    { 
     if(...) 
     { 
     } 
    } 
    } 
} 

なるが、そう(hereからコピーされた)のように、それは、より複雑なコードで失敗した

<html> 
<head> 
<script type="text/javascript" src="jquery.js"></script> 
<script type="text/javascript"> 
$(document).ready(function(){ 
$("p").click(function(){ 
$(this).hide(); 
}); 
}); 
</script> 
</head> 

<body> 
<p>If you click on me, I will disappear.</p> 
</body> 

</html> 

となります。

<html> 
<head> 
<script type="text/javascript" src="jquery.js"></script> 
<script type="text/javascript"> 
$(document).ready(function(){ 
    $("p").click(function(){ 
     $(this).hide(); 
     }); 
    }); 
</script> 
</head> 

<body> 
<p>If you click on me, I will disappear.</p> 
</body> 

</html> 

なぜ、<p>タグが本文にインデントされていないのですか?これはvimのフォーマッタの欠点ですか、私は間違って使用していますか?

EDIT:ありがとうございます。filetype plugin indent on.vimrcに入れてください。それは、より多くのインデントを行いました。しかし、時にはまだ失敗しています。 (hereからコピー)

<!DOCTYPE html> 
<html> 
    <body> 

    <div style="text-align:center"> 
     <button onclick="playPause()">Play/Pause</button> 
     <button onclick="makeBig()">Big</button> 
     <button onclick="makeSmall()">Small</button> 
     <button onclick="makeNormal()">Normal</button> 
     <br /> 
     <video id="video1"> 
     <source src="mov_bbb.mp4" type="video/mp4" /> 
     <source src="mov_bbb.ogg" type="video/ogg" /> 
     Your browser does not support HTML5 video. 
     </video> 
    </div> 

    <script type="text/javascript"> 
     var myVideo=document.getElementById("video1"); 

function playPause() 
{ 
    if (myVideo.paused) 
    myVideo.play(); 
    else 
    myVideo.pause(); 
} 

function makeBig() 
{ 
    myVideo.height=(myVideo.videoHeight*2); 
} 

function makeSmall() 
{ 
    myVideo.height=(myVideo.videoHeight/2); 
} 

function makeNormal() 
{ 
    myVideo.height=(myVideo.videoHeight); 
} 
</script> 

<p>Video courtesy of <a href="http://www.bigbuckbunny.org/" target="_blank">Big Buck Bunny</a>.</p> 

</body> 
</html> 

は全く変更されません。これらの関数が<script>タグ内にネストされていることはわかりません。ファイルタイプをjs.htmlまたはhtml.jsに設定すると助けにならない

+0

を入力して、それを有効にするいずれかの方法でファイルタイププラグインをオンにする必要があるかもしれないと言いますか? (例えばJavaScriptを全く使わない) –

+0

これはここで答えられたようです: http://stackoverflow.com/questions/3276392/vim-gg-g-aligns-left-does-not-auto-indent – Chriseyre2000

+0

@ Chriseyre2000私は、ソリューションがより信頼できるものかどうかを調べるためにテストしています。 – puk

答えて

1

したがって、vimのファイルタイプごとに異なる書式設定/構文の強調表示オプションがあります。あなたはそれについてhereを読むことができます。通常のC++ファイルでは、字下げはかなり標準的なので、通常は正しくなりますが、htmlファイルの場合は、フォーマットファイルを作成したペレソンが別のperceptionを持つ可能性があります。 linuxのフォーマット設定を編集して見ることができます。~/.vim/ftplugin、htmlファイルはhtml.vimとなります。また、法案のような

は、任意の*のHTML *のための期待どおりにインデントんが、あなたの~/.vimrcでそれを設定するか、または:filetype plugin indent on

+0

':filetype plugin indent on'を設定しないと、書式設定は機能しません。私がそれを設定すると、VimはJSLint(Syntastic)を呼び出せないと訴えます。これをどうやって調整するのですか? – puk

関連する問題