Vim中的自动格式选项(=)不能正确缩进HTML + JS吗?

时间:2012-02-23 22:35:17

标签: html vim formatting

自动格式化(gg=G)适用于类似代码(来自here的示例):

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格式化程序的缺点还是我错误地使用它?

编辑:感谢所有提及我应将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.htmlhtml.js也无济于事

1 个答案:

答案 0 :(得分:1)

因此,vim针对不同的文件类型具有不同的格式/语法突出显示选项。你可以阅读它here。所以对于你的常规c ++文件,缩进是非常标准的,所以它通常是正确的但是对于你的html文件你可能有不同的参数,然后是制作格式文件的pereson。您可以在~/.vim/ftplugin下编辑并查看linux中的格式配置,html文件将被称为html.vim

此外,比如说,您可能需要通过在~/.vimrc中设置文件类型插件或通过键入:filetype plugin indent on启用它来启用文件类型插件