Abas no Vim: Quando o alinhamento está errado, como você conserta…?

2

Então, minha situação é que eu tenho um arquivo, myfile.py (escrito em python ) que comecei a desenvolver em minha própria máquina. Eu usei o vim para fazer isso, mas naquela época eu não sabia que o Vim poderia permitir que você definisse o comprimento de suas guias, e também mostrar quantas vezes a linha tinha sido tabulada usando um marcador.

Então, antes de fazer o SCP'ed myfile.py para um servidor unix remoto e começar a trabalhar nele, todas as minhas guias tinham cerca de 6 espaços cada, e não havia marcações definindo quantas recortes estavam presentes em uma linha particular. Mas como 6 espaços é muito, realmente não havia necessidade ...

Mas quando comecei a desenvolver no servidor remoto, notei que as configurações do vim tinham a guia de modo que ficasse com 4 espaços de comprimento cada, e, assim, <<> / em> ser marcas verticais para mostrar que uma guia está presente. No entanto, ele não alterou automaticamente as linhas de código que já estavam lá em myfile.py para ajustar suas configurações de tabulação, e as configurações acabaram se aplicando apenas a qualquer nova linha de código que eu escrevi usando vim em deles server.

Sendo o newb que eu era, não me preocupei em consertar nada para tornar o arquivo consistente. Agora eu tenho algumas misturas estranhas, entrelaçadas, onde algumas linhas têm guias com 4 de comprimento, outras com 6, e aquelas com menor comprimento têm uma marcação vertical para cada aba e as mais longas não têm nada .

Como eu corrijo eficientemente essa bagunça para reverter para o padrão um ? (esperançosamente o que tem o comprimento de tabulação mais curto com as marcações verticais). Estou à procura de qualquer pessoa que tenha experiência remota em relação a essa situação - se isso me faz aprender mais sobre um nível avançado, ou começar com um primeiro caminho indireto, eu não me importo. Eu simplesmente prefiro qualquer coisa sobre a correção manual de cada linha - você sabe o quão errado isso pode fazer seu código quando você está lidando com o Python!

[EDITAR] - > Também pensei que deveria notar que cada linha não tem o mesmo número de abas ... algumas linhas têm 0, 1, 4, 5, etc etc ...

    
por Dark Templar 20.12.2011 / 06:45

3 respostas

3

O entalhe no vim pode ser um pouco peludo.

Você pode configurar o vim para inserir um caractere de tabulação ou inserir algum número de espaços ao pressionar a tecla tab usando o expandtab . Você também pode configurar as abas amplas (quantos espaços ocupam) com a guia opção. Por fim, você também pode configurar o vim para exibir as guias com um caractere especial usando a opção listchars (▸ é uma escolha comum). No entanto, esse caractere não será mostrado onde os espaços são usados no lugar das guias. É por isso que algumas de suas guias têm um caractere especial e outras não, algumas delas são caracteres de tabulação reais e outras são apenas muitos espaços agindo como uma guia.

Parece que o servidor unix remoto foi configurado com expandtab on e tabstop definido como 6, portanto, quando você digita uma guia, gera 6 espaços, enquanto o servidor de desenvolvimento parece estar configurado com noexpandtab e tabstop definido como 4.

Para corrigir isso, você pode usar a funcionalidade de localizar / substituir do vim para substituir todas as ocorrências de seis espaços por uma única guia usando o comando :%s/ \{6}/\t/g . Para entender esse comando, você deve ler os recursos de pesquisa e substituição do vim aqui . Para evitar que isso aconteça no futuro, você deve criar seu próprio arquivo .vimrc que configure as coisas da maneira que preferir e colocá-lo em seu diretório pessoal para que ele seja carregado automaticamente ou :source sempre que você editar algum arquivo.

Observação: há também outras opções de guias, como shiftwidth e softtabstop mas não são tão relevantes para o seu problema. No entanto, você deve ler sobre eles para que você possa configurar o vim para agir exatamente como deseja.

    
por 20.12.2011 / 07:46
1

COMO CONVETAR 6 - > 4

1. Sua configuração atual (guia = 6 espaços e largura & expanda)

:set ts=6 et

#!/usr/bin/env python
def fun():
······print "hello, world"

2. convet 6-spaces to tab

:set noet e :ret!

#!/usr/bin/env python
def fun():
»·····print "hello, world"

3. redefinir a guia para a largura de 4 espaços

:set ts=4

#!/usr/bin/env python
def fun():
»···print "hello, world"

4. aba do convet para 4 espaços

:set et e :ret!

#!/usr/bin/env python
def fun():
····print "hello, world"
    
por 20.12.2011 / 14:14
0

Como eu faria isso. Configure a tabulação no seu .vimrc em ambas as máquinas como você preferir.

Número de espaços que uma guia conta para

set tabstop=4

Número de espaços usados para recuo (automático)

set shiftwidth=4

Se você deseja expandir as guias para espaços

set expandtab

ou não

set noexpandtab

Toda vez que você abre um arquivo com um recuo confuso. Vá para o início da página g g e autoindent até o final da página = G

    
por 21.12.2011 / 01:53

Tags