Хорошо это или плохо, но PHP-код часто включает в себя и HTML, и Javascript. Заставить Vim правильно сделать отступ, может быть сложно.
Мой .vimrc
указывает, что табуляция всегда должна быть с двумя пробелами:
set tabstop=2
set softtabstop=2
set shiftwidth=2
Этот файл отступа отлично справляется с отступом смешанного PHP и HTML и использует 2 пробела для обоих, но по какой-то причине он отступает от встроенного Javascript с 4 пробелами. Фрагмент кода ниже автоматически вставляется, как показано на рисунке.
<?PHP
if (false) {
$foo = 'foo';
}
?>
<html>
<head>
<script type="text/javascript">
function(){
if (false) {
// Four spaces!?
var foo = 'foo';
}
}
</script>
</head>
</html>
Если я создаю отдельный файл javascript, он выравнивается, как и должно быть, вот так:
if (false) {
var foo = 'foo';
}
Я не уверен, почему Vim вставляет Javascript в первый пример так, как он это делает. Есть ли способ спросить Vim "какой синтаксис или отступ вы используете в этой конкретной строке?"