Autoformatação para Perl no Vim

5

Eu tenho um código Perl mal formatado:

if ($a==1){
   &err_report("$a");
while($b!=1){
                      &err_ok();
}
}

Eu quero reformatar no Vim. Depois de usar o comando gg=G , o código é formatado como:

if ($a==1){
&err_report("$a");
while($b!=1){
&err_ok();
}
}

Na verdade, quero formatá-lo no Vim, conforme abaixo:

if ($a==1){
  &err_report("$a");
  while($b!=1){
    &err_ok();
  }
}

O que devo fazer?

  • Depois de usar o vim-perl , o auto-formatação ainda não faz o que eu quero.
por Marslo 01.09.2014 / 11:06

3 respostas

4

Supondo que você esteja em um sistema operacional semelhante ao Unix ...

Obtenha o perltidy (um indentizador / formatador de código Perl altamente personalizável). Em seguida, atualize seu arquivo ~/.vimrc para incluir o seguinte:

filetype plugin indent on
autocmd FileType perl setlocal equalprg=perltidy\ -st

Isso permitirá que você marque qualquer bloco de código Perl desejado e, em seguida, reformate-o pressionando = . Isso pressupõe que perltidy seja encontrado em seu $PATH , caso contrário, basta especificar o caminho completo para o executável.

Por padrão, perltidy formatará seu código como

if ( $a == 1 ) {
    &err_report("$a");
    while ( $b != 1 ) {
        &err_ok();
    }
}

... mas usando -i=2 ( --indent-columns=2 ) e -pt=2 ( --paren-tightness=2 ) (você colocaria essas opções no seu arquivo ~/.perltidyrc , uma por linha) você obtém

if ($a == 1) {
  &err_report("$a");
  while ($b != 1) {
    &err_ok();
  }
}

Isso é basicamente o que você pediu.

Se você realmente não deve ter espaço após while , use -nsak=while ( --nospace-after-keyword=while ).

    
por 01.06.2015 / 17:19
0

Primeiro, defina as opções de formatação necessárias, por exemplo, set cindent sw=2 expandtab (use recuo semelhante a C, espaços de recuo 2, expanda o caractere de tabulação para espaços). Em seguida, recuar todo o arquivo / buffer.

    
por 25.05.2015 / 15:45
0

O Vim vem com um plug-in de recuo Perl e, contanto que você tenha :filetype indent on em algum ponto da sua inicialização (como o seu vimrc), ele poderá fazer recuos de arquivos Perl para você. Mas note que ele só fará recuos, não adicionará nem removerá novas linhas.

    
por 22.06.2016 / 19:09