Como posso saber quais regras de sintaxe e recuo o Vim está usando em uma determinada linha?

0

Para melhor ou pior, o código PHP geralmente inclui HTML e Javascript. Fazer o Vim recuar corretamente pode ser complicado.

Meu .vimrc especifica que uma guia deve sempre ter dois espaços:

set tabstop=2
set softtabstop=2
set shiftwidth=2

Este arquivo de recuo faz um bom trabalho ao recuar PHP e HTML misturados e usa 2 espaços para ambos, mas, por algum motivo, recua o Javascript embutido com 4 espaços. O snippet de código abaixo fica com o recuo automático, conforme mostrado.

<?PHP
  if (false) {
    $foo = 'foo';
  }
?>
<html>
  <head>
    <script type="text/javascript">
      function(){
          if (false) {

              // Four spaces!?
              var foo = 'foo';
          }
      }
    </script>
  </head>
</html>

Se eu criar um arquivo javascript separado, ele recua como deveria, assim:

if (false) {
  var foo = 'foo';
}

Não sei porque o Vim recua o Javascript no primeiro exemplo. Existe uma maneira de perguntar ao Vim "qual a sintaxe ou recuo que você está usando nesta linha específica?"

    
por Nathan Long 31.08.2011 / 17:40

1 resposta

1

Para descobrir a sintaxe em uso, você quer saber o valor da variável b: current_syntax. Digite o seguinte Ex. comando

:echo b:current_syntax

b: current_syntax diz qual a sintaxe vim carregada para o arquivo. Se você definir a sintaxe manualmente, como com o comando

:ownsyntax cpp

que define a sintaxe para a sintaxe c ++, então você quer saber o valor de w: current_syntax . w: current_syntax não existe até que você o defina e não é possível alterar b: current_syntax de um arquivo carregado.

Veja a entrada current_syntax em help para mais informações.

    
por 24.07.2012 / 21:45