Как узнать, какие правила синтаксиса и отступов использует Vim для конкретной строки?
Хорошо это или плохо, но 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 "какой синтаксис или отступ вы используете в этой конкретной строке?"
1 ответ
Чтобы узнать используемый синтаксис, вы хотите узнать значение переменной b:current_syntax. Введите следующий пример команда
:echo b:current_syntax
b: current_syntax говорит, какой синтаксис vim загружен для файла. Если вы установите синтаксис вручную, например, с помощью команды
:ownsyntax cpp
который устанавливает синтаксис на синтаксис C++, тогда вы хотите узнать значение w: current_syntax. w: current_syntax не существует, пока вы его не установите, и вы не можете изменить b: current_syntax загруженного файла.
Посмотрите на запись current_syntax в справке для получения дополнительной информации.