Estou tentando fazer recuo automático do vim com guias e alinhar com espaços em branco, mas, na verdade, recuo do vim com guias e preencher o alinhamento com guias + espaços em branco.
Vim faz isso:
(cada bloco é uma guia)
{
>--long a = 1,
>-->--..b = 2,
>-->--..c = 3;
}
Pode fazê-lo:
{
>--long a = 1,
>--.....b = 2,
>--.....c = 3;
}
Então, acho que há muitas perguntas sobre o assunto de guias e espaços, mas nenhuma delas fornece uma solução Just Works:
- /programming/8493705/vim-use-tabs-for-indentation-spaces-for-alignment-with-c-source-files
- /programming/29208431/vim-indent-with-tabs-align-with-spaces
- /programming/6504507/vim-indenting-and-alignment-combining-spaces-and-tabs
Na verdade eu estou usando:
set ai
set cindent
set cinoptions=(0,:0,u0,U0,g0)
Eu tentei o plug-in Smart Tab , que parece funcionar bem, mas quando tento gg=G
recebo alguns erros estranhos:
Error detected while processing function CtabRedoIndent..<SNR>12_CheckAlign:
line 11:
E108: No such variable: "b:ctab_lastalign"
Press ENTER or type command to continue
Error detected while processing function CtabRedoIndent:
line 10:
E170: Missing :endwhile
Essa discussão parece velha demais, então agora, 2015, existe uma solução oficial para lidar com isso?
tab-characters
whitespace
tjbrn
fonte
fonte
Respostas:
Fazer isso verdadeiramente automaticamente é difícil. Vim não sabe o que é "recuo" e o que é "alinhamento"; e algumas pessoas podem discordar sobre o que exatamente constitui recuo e alinhamento.
Dito isto, o plug - in Smart Tabs foi projetado para fazer o que você deseja; Eu descobri que ele funciona razoavelmente bem para arquivos C, mas tem várias advertências; ele quebra arquivos Python, por exemplo, e faz algumas inesperado (para mim, pelo menos) as coisas para arquivos C, às vezes.
Olhando a fonte, não consigo descobrir como funciona em 5 minutos e, combinado com o fato de que quebra algumas coisas, deve pedir para você prosseguir com cuidado ...
fonte
O plug-in Smart Tabs que você mencionou é o melhor possível. Inicialmente, encontrei o mesmo erro que você cometeu e desistiu, mas acabei gastando alguns minutos para corrigi-lo. Tente aplicar o seguinte patch:
Mais tarde, descobri que alguém sugeriu uma correção semelhante na seção wiki do Smart Tabs . Infelizmente, não houve um novo lançamento.
fonte
A indentação no vim é realizada simplesmente usando o seguinte script
Script para executar o recuo de um único arquivo
fonte