Como formatar automaticamente o código a partir da linha de comando?

6

Digamos que eu tenha um JavaScript em someRandomFile.js e quero executar um comando como:

formatMyCode someRandomFile.js

Em seguida, dentro do arquivo, basta recuar tudo de uma forma legal.

Eu quero fazer o formato PHP ou HTML também. No VIM você pode destacar algum texto e pressionar = e ele irá formatá-lo automaticamente (mesmo se estiver misturado com HTML / PHP / JavaScript). Existe uma maneira fácil de fazer isso?

    
por Clay 14.12.2015 / 08:31

2 respostas

5

Se você gosta do vim , pode invocar sua ação a partir da linha de comando .

echo -e "G=gg\n:wq\n" | vim ./myfile.php 

Aviso o comando acima modificará seu arquivo sem solicitar . Faça um backup antes.
É possível encontrar exemplos integrados com find para realizar o mesmo trabalho em vários arquivos [ 0 ] .

Olhando além, é possível encontrar muitos utilitários para isso, e esse número continuará a crescer no tempo; você pode procurar por suas versões atualizadas na internet e você pode começar por exemplo a partir de:

  • Estilo artístico [ 1 ] , astyle , para < Linguagens de programação C> C, C ++, C ++ / CLI, Objective-C, C # e Java.
  • tidy [ 2 ] para Html
  • Soluções IDE invocadas por linha de comando a partir de kate [ 3 ] para o qual existe apenas o plug-in; você pode criar seus próprios scripts de recuo [ 4 ] também, continuando com UniversalIndentGUI [ 5 ] , eclipse [ 5 ] ...
por 14.12.2015 / 10:21
1
vim -c "execute 'normal! =G' | :wq! out.js" input.js

Você também pode usar a sintaxe alternativa + em vez de -c . É o mesmo.

vim +"execute 'normal! =G' | :wq! out.js" input.js
  1. Executa o comando normal =G , que formatará automaticamente / indent ( = ) todas as linhas até o final do arquivo ( G ).

  2. Então :wq! out.js escreve em um arquivo e sai do vim. Se você quiser apenas sobrescrever o mesmo arquivo, remova o out.js .

Além disso, você precisa ter essa linha em ~/.vimrc para que o plug-in de recuo de formatação automática funcione:

filetype plugin indent on

    
por 22.06.2018 / 03:37