Existe uma maneira de desmarcar automaticamente tudo no seu arquivo de origem usando um comando? [fechadas]

11

E depois recuar automaticamente depois disso? Eu tentei copiar o código de uma tela do terminal para o outro, mas a tabulação ficou toda bagunçada.

Eu não sabia como chamar essa funcionalidade, por isso era difícil encontrá-la no google (que geralmente retornava itens relacionados a como definir o tamanho da guia, que não era o que eu estava procurando, infelizmente).

Templário Sombrio
fonte
Relacionado: Como substituir guias por espaços? em Vim SE
kenorb
11
Estou votando para encerrar esta questão como fora de tópico, porque se trata de uma ferramenta de programação. Perguntas sobre ferramentas são mais adequadas para StackOverflow , ou neste caso, Vi.SE . No entanto, esta pergunta é muito antiga para migrar.
11
Eu estou votando para fechar esta questão como off-topic porque é sobre o uso de uma ferramenta específica e deveria ter sido solicitado em Stack Overflow ou (se perguntou agora) vi.se .

Respostas:

9

O Vim possui um retabcomando que permite tabular ou não tabular seu documento. Ele usa configurações como tabstope expandtab. Portanto, se você deseja substituir as guias por espaços, faça o seguinte:

:%retab

Consulte a retabdocumentação para obter detalhes completos.

Advertência Emptor : isso também substitui as guias que NÃO estão no início de uma linha. Portanto, se você usar guias rígidas no meio de cadeias, elas serão substituídas também.

Kaleb Pederson
fonte
3
Em geral, é uma má idéia incluir uma guia verdadeira em uma string de qualquer maneira. Ainda pode acontecer, mas \té preferível, apenas para evitar esse tipo de problema.
Spencer Rathbun
6

Para expandir a resposta de @ Kaleb (ainda não tenho o representante para comentar), antes de executar o comando retab, você precisará :set expandtab (set et). Caso contrário, a retab não substituirá as guias por espaços.

Além disso, você pode querer especificar os tabstops. Geralmente, no código-fonte criado por outras pessoas, o código é escrito com tabstops configurados para 4 ou até 2. Antes de executar o :%retabcomando, experimente diferentes tabstops. Tentar

:set ts=8 (the default)
:set ts=4 
:set ts=2  

para ver qual configuração faz mais sentido.

Para retroceder (substituindo espaços por caracteres apropriados TAB, use

:set noet
:%retab!
Firstrock
fonte
1

Ao desmarcar, você quer mudar as abas para espaços? Nesse caso, substitua espaços por tabulações no buffer inteiro como este:

:%s/^I/    /g

São quatro espaços no lado direito da substituição, mas você pode fazer o número que quiser. Para obter o ^Icaractere de tabulação literal , pressione ^Va tecla Tab.

Você pode recuar com o =comando Para re-indentar todo o conteúdo do buffer, use estes comandos:

gg
=G

Isso leva você para o topo e, em seguida, recua tudo para o fundo.

Boshvark
fonte
-1: substituir uma guia por um número fixo de espaços quase nunca é útil. Isso mudará a aparência de qualquer linha que contenha uma guia precedida por uma não guia.
Kevin cline