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, diga4>>
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) .