Параметр автоформатирования (=) в Vim неправильно делает отступ в HTML + JS? - PullRequest
1 голос
/ 24 февраля 2012

Автоматическое форматирование (gg=G) отлично работает для такого кода (например, здесь ):

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

становится

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

, но не удаетсядля более сложного кода, подобного этому (скопировано с здесь )

<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.Это сделало отступ намного лучше.Однако, это все еще иногда терпит неудачу.наблюдать (скопировано с здесь )

<!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 не помогает либо

1 Ответ

1 голос
/ 24 февраля 2012

Таким образом, vim имеет разные опции форматирования / подсветки синтаксиса для разных типов файлов.Вы можете прочитать об этом здесь .Таким образом, для вашего обычного файла C ++ отступы довольно стандартные, поэтому обычно они корректны, но для вашего HTML-файла у вас могут быть другие права доступа, чем у человека, который создал файл форматирования.Вы можете отредактировать и просмотреть свою конфигурацию форматирования в linux под ~/.vim/ftplugin, и html-файл будет называться html.vim.

Также как Билл говорит, что вам может понадобиться включить плагин filetype, либо установив его вваш ~/.vimrc или включить его, набрав :filetype plugin indent on

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...