Quando copio o código de outro arquivo, a formatação fica desarrumada, assim:
fun()
{
for(...)
{
for(...)
{
if(...)
{
}
}
}
}
Como posso formatar automaticamente esse código no vim?
c
vim
code-formatting
Yongwei Xing
fonte
fonte
Respostas:
Tente as seguintes teclas:
Explicação:
gg
vai para a parte superior do arquivo,=
é um comando para corrigir o recuo eG
solicita que ele execute a operação até o final do arquivo.fonte
Eu gosto de usar o programa Artistic Style. De acordo com o site :
É executado no Windows, Linux e Mac. Ele fará coisas como recuar, substituir guias por espaços ou vice-versa, colocando espaços em torno das operações da maneira que você desejar (convertendo
if(x<2)
para se( x<2 )
é assim que você gosta), colocando chaves na mesma linha das definições de função ou movendo-as para o linha abaixo, etc. Todas as opções são controladas por parâmetros de linha de comando.Para usá-lo no vim, basta definir a opção formatprg e, em seguida, use o comando gq. Então, por exemplo, eu tenho no meu .vimrc:
para que, sempre que abrir um arquivo .cpp, o formatprg seja definido com as opções que eu desejar. Em seguida, posso digitar gg para ir para o topo do arquivo e gqGformatar o arquivo inteiro de acordo com meus padrões. Se eu precisar reformatar apenas uma única função, posso ir para o topo da função, digite gq][e ela reformatará exatamente essa função.
As opções que tenho para o estilo
-T4pb
são apenas minhas preferências. Você pode consultar os documentos deles e alterar as opções para que ele formate o código da maneira que desejar.Aqui está uma demonstração. Antes do estilo:
Após o estilo (gggqG):
Espero que ajude.
fonte
O comando interno para recuar corretamente o código já foi mencionado (
gg=G
). Se você deseja embelezar o código, precisará usar um aplicativo externo como recuo . Como%
denota o arquivo atual no modo ex, você pode usá-lo assim:fonte
O plug-in vim-autoformat permite formatar seu buffer (ou seleções de buffer) com um único comando: https://github.com/Chiel92/vim-autoformat . Ele usa programas de formato externo para isso, com um recurso à funcionalidade de indentação do vim.
fonte
Acho que
clang-format
funciona bem.Existem alguns exemplos de combinações de teclas na documentação do clang
Eu prefiro usar a
equalprg
ligação no vim. Isso permite que você chameclang-format
comG=gg
ou outras=
opções de recuo.Basta colocar o seguinte no seu arquivo .vimrc:
fonte
sudo apt install clang-format
Talvez você possa tentar o seguinte $ indent -kr -i8 * .c
Espero que seja útil para você!
fonte
Gosto como
indent
mencionado acima, mas na maioria das vezes quero formatar apenas uma pequena seção do arquivo em que estou trabalhando. Comoindent
pode pegar o código do stdin, é realmente simples::!indent
.astyle
leva stdin também, então você pode usar o mesmo truque lá.fonte
Eu gostaria de acrescentar que, para evitar que seja confuso, você pode digitar
:set paste
antes de colar. Após colar, você pode digitar:set nopaste
coisas como js-beautify e recuo para trabalhar novamente.fonte
:set paste!
para isso, que alterna o valor da pasta em vez de defini-lo. Isso facilita a desativação, pois você pode simplesmente voltar alguns comandos e pressionar enter.A ferramenta deles é chamada
indent
. Você pode baixá-lo eapt-get install indent
, em seguida, executarindent my_program.c
.fonte