Código de recuo / formato automático para Vim?

Estou tentando usar o Vim cada vez mais quando posso. Um dos meus maiores pontos entre o Vim e um IDE como o Aptana é a capacidade de indentação automática .

Existe um meio de formatar o código automaticamente (HTML, CSS, PHP) para que seja devidamente indentado?

Se sim, como você instala isso no vim? Eu não entendo muito de plug-ins. Tentei revisar este tópico e me deixou mais confuso: Como alterar o comportamento de indentação automática do vim?

Comentários

  • Você poderia esclarecer o idioma que está tentando indentar? Eu esperaria que se ele ‘ já fosse suportado pelo vim, ele já deveria ser indentado automaticamente sem esforço adicional. Caso contrário, você deve conseguir um plug-in.
  • de preferência Html / css e php

Resposta

Para recuar todo o arquivo automaticamente:

gg =G 

Explicação:

  • gg – vá para o início do arquivo
  • G – vá para o final do arquivo
  • = recuo

Comentários

  • Você poderia decompô-lo? O que é g normalmente por si só? e = G?
  • @Chris veja a edição
  • Bela dica, eu nunca soube disso. No entanto, ele faz um trabalho péssimo com o bash.
  • Como executar gg=G do shell sem abrir o arquivo?
  • @takeshin, você pode explique muito mais, precisamos digitá-lo no arquivo ou precisamos executá-lo no terminal

Resposta

Não sei sobre a formatação automática de código existente, mas se você estiver escrevendo código e precisar recuar automaticamente:

  • :set autoindent (ou :set ai) ativará o recuo automático
  • Ctrl d para desfazer o recuo (Também conhecido como recuo) seu código
  • Tabulação ou espaços para recuar – eu pessoalmente uso tabulação
  • :set tabwidth=4 (ou :set tw=4) controlará quantos espaços uma tabulação deve recuar o código
  • O comando >> recuará a linha atual. Se você prefixar com um número, diga 4>> e então recuará 4 linhas, começando com a linha atual.
  • Da mesma forma, << comando irá desfazer o indentação de uma linha

Espero que isso seja um bom começo.

Comentários

  • Para recuar automaticamente o código existente, use ={motion} no modo normal – por exemplo, =G recuará todo o código da linha atual até o final do arquivo. == recuará a linha atual.
  • certifique-se também de que os plug-ins de recuo estão sendo carregados (por exemplo, com :filetype indent on)
  • definir tw = 4 define TEXTWIDTH para 4

Resposta

Recuo automático *.sh

Basta adicionar as seguintes linhas em ~/.vimrc

filetype indent on set smartindent autocmd BufRead,BufWritePre *.sh normal gg=G 

Comentários

  • Isso se aplica apenas à edição com vim ou todas as ferramentas do editor?
  • ~./vimrc aplicável apenas ao editor vim.

Resposta

Este plugin torna mais fácil realizar a formatação em seu código . Ele se integra a formatadores externos e tem um fallback na funcionalidade de recuo do vim.

https://github.com/Chiel92/vim-autoformat

Além disso, observe a diferença entre a formatação e o recuo. O recuo corrige apenas os espaços em branco antes de cada linha, enquanto a formatação também lida com qualquer outra coisa, como espaços em branco ao redor de operadores etc.

Resposta

Crie / edite o arquivo ~/.vimrc e adicione a seguinte linha:

set autoindent 

Comentários

  • Isso não acrescenta nada às respostas existentes …
  • @jasonwryan atualmente Hai Vu ‘ s resposta menciona :set autoindent que ativa o recuo automático apenas para o arquivo atual. Adicionando-o ao .vimrc arquivo ativa o recuo automático permanentemente.
  • seu comentário já foi mencionado pela resposta de Rahul ‘, então pense antes de postar

Resposta

A autoformatação / recuo do vim “funciona muito bem. Primeiro, coloque esta linha em seu ~/.vimrc:

filetype plugin indent on 

Em seguida, abra um arquivo no vim e digite gg=G

(gg move o cursor para a primeira linha. = executa o comando indent. G diz ao comando indent para ser executado daqui até a última linha.)

Se a autoformatação parecer muito ruim, como se cada linha fosse recuada à esquerda, execute :scriptnames e verifique se .../indent/html.vim (ou qualquer idioma que você “esteja usando) está na lista. Caso contrário, certifique-se de que seu ~/.vimrc esteja correto. Ou se você executou :filetype plugin indent on na linha de comando do vim, você precisará reabrir o arquivo :e

Resposta

Para fazer uma reformatação do script bash, a solução gg = G proposta não funciona bem no VIM, independentemente se você definir o script para ser do tipo shell. Em vez disso, funciona;

shfmt -i 2 -ci script.sh

Para identificar todas as linhas com 2 espaços e corrigir outra formatação.

Resposta

No bash eu faço o seguinte:

source <(echo "Zibri () {";cat script_to_be_reindented.sh; echo "}") declare -f Zibri| cut -c 5-|head --lines=-1|tail --lines=+3 

Isso elimina comentários e reindenta o script “bash way”. Não vai funcionará se o script contiver HEREDOCS, mas se você fizer isso:

source <(echo "Zibri () {";cat script_to_be_reindented.sh; echo "}") declare -f Zibri|head --lines=-1|tail --lines=+3 

funcionará com qualquer script, mas todo o script será recuado em 4 espaços. sinta-se à vontade para modificar, mas cite meu nome em seu script e poste! : D

Comentários

  • Eu acredito que isso pode estar faltando o ponto da questão; em vez de recuar um conjunto de linhas, acredito que o OP desejava recuar automaticamente dentro do VIM para uma variedade de idiomas. Como um aparte, você pode conseguir isso um pouco mais diretamente com sed se desejar: cat script_to_be_reindented.sh | sed 's#^# #g' (bem, O markdown do SO é substituir os espaços por uma tabulação, mas você entendeu)
  • Tudo o que esta resposta faz é inserir espaços na frente da linha e redefinir todo o alinhamento. O mesmo (excluindo marcação) pode ser feito com sed -i 's|^[ \t]\+| |' script.sh (ou seja, 4 espaços dentro de | |, mas este site filtra vários espaços em um) .

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *