我如何知道 Vim 在某一行使用了什么语法和缩进规则?

我如何知道 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:当前语法表示 vim 为文件加载了什么语法。如果你手动设置语法,例如使用命令

:ownsyntax cpp

将语法设置为 c++ 语法,那么您想知道w:当前语法w:当前语法在你设置之前不存在,并且你无法更改b:当前语法已加载文件的。

看着那(这当前语法进入帮助了解更多信息。

相关内容