O Vim não usa o recuo correto nos arquivos Python

7

Encontrei algo que nunca vi antes no Vim. Enquanto eu tentava modificar parte do código fonte do software em que planejava trabalhar, notei que o vim estava exibindo espaçamento incorreto para a linha de código que eu adicionei. O Gedit mostra o código com o espaçamento correto. Eu sei que o Gedit tem o espaçamento correto porque o código Python gera erros se eu alterar o código no Vim para que ele pareça pertencer à janela do Vim. Anexei as imagens abaixo. A linha que adicionei é a linha que diz: print "Estou prestes a avaliar um fatorial". Incluí também meu arquivo .vimrc curto. Alguém viu isso? Estou usando o vim há meses e não consigo me lembrar de algo assim.

  • Vim (incorreto):

    Vim errado

  • Gedit (correto):

    Gedit certo

  • Vimrc:

    Arquivo Vimrc

BenB
fonte
3
Sei que isso pode ser um pouco complicado, mas você pode ativar set list listchars=tab:>-e reenviar a primeira foto (Vim)? Eu acho que isso nos ajudaria a ver o que está acontecendo com as guias.
Tumbler41
Parece-me que seu vimrc está funcionando muito bem. A guia possui 4 espaços, conforme desejado. No entanto, o restante do documento está usando apenas espaços. Eu usaria apenas espaços nesta linha para corrigir o problema. Ou, de qualquer forma, mantenha a consistência entre o uso de guias e espaços para recuo.
Tumbler41
Usando todos os espaços trabalhados, obrigado. No entanto, estou surpreso, pois esperava que a guia não fosse interpretada de maneira diferente.
BenB

Respostas:

10

Ele é redefinido pelo plugin do tipo de arquivo Python; de /usr/share/vim/vim74/ftplugin/python.vim:

" As suggested by PEP8.
setlocal expandtab shiftwidth=4 softtabstop=4 tabstop=8

Este arquivo é carregado toda vez que um arquivo Python é carregado. Pessoalmente, acho que adicionar configurações de recuo aqui é um pouco surpreendente.

De qualquer forma, para substituir isso, use isto no seu vimrc:

augroup python
    autocmd!
    autocmd FileType python setlocal noet ts=4
augroup end

Isso será carregado após o arquivo ftplugin, substituindo as configurações definidas lá.

Pessoalmente, eu recomendaria não usar guias em arquivos Python, pois o padrão da comunidade é usar espaços.

Martin Tournoij
fonte
Sim, verifique se você tem filetype plugin onseu vimrc. Eu não substituiria o set tabstop=8pensamento. A razão está aqui
Antony
2

A solução para mim foi adicionar esta linha após o plugin do tipo de arquivo no meu ~/.vimrcarquivo

filetype plugin on
autocmd FileType python setlocal noexpandtab shiftwidth=4 softtabstop=4
Philippe Gachoud
fonte