¿Por qué vim no obedece mi expandtab en archivos Python?

Después de instalar Vundle, my vim ya no obedece a la configuración de expandtab que tenía. Mis tabs se establecieron en 2 espacios, pero ahora en archivos de Python ya no lo hace. El problema es llamado por esta línea:

filetype plugin on 

¿Qué hace esta línea (lo requiere vundle)? Además, ¿qué puedo hacer para asegurarme de que se cumplan mis configuraciones?

¡Gracias!

VIMRC: pastebin.com/tGmfCi78

El problema es que su configuración está siendo anulada por un complemento de tipo de archivo que es parte de Vim. El problema está en ftplugin/python.vim :

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

El complemento de python intenta configurar su código fuente para que sea compatible con PEP8 de forma predeterminada, por lo que está ajustando la pestaña. Deseará algo de lo que estos complementos tienen para ofrecer, pero es posible que necesite configurar sus propios comandos automáticos para corregir cualquier cosa que no le guste.

Hay dos maneras de hacer esto. Si tiene una carpeta ~/.vim , la forma más fácil es agregar el archivo ~/.vim/after/ftplugin/python.vim :

 " Here, you can set the setting directly, or call a command or function " to help you. We'll call a command, and then implement that command in " your top-level vimrc to help keep things in one place. SetupPython 

En su .vimrc , agregue:

 function! SetupPython() " Here, you can have the final say on what is set. So " fixup any settings you don't like. setlocal softtabstop=2 setlocal tabstop=2 setlocal shiftwidth=2 endfunction command! -bar SetupPython call SetupPython() 

El último bit solo le permite llamar a la función como SetupPython lugar de call SetupPython() en el archivo posterior.

Por otro lado, es mantener todo en su .vimrc , pero utiliza el VimEnter para configurar un autocomando FileType para que python configure sus preferencias. Al esperar hasta que se VimEnter , todos los demás complementos habrán tenido tiempo de configurar sus autocomandos, por lo que se agregarán al final de la lista. Esto le permite ejecutar el FileType automático FileType del complemento de FileType y establecer su propia configuración. Sin embargo, esto es un poco desordenado, y el mecanismo after/ es la forma preferida de hacerlo.

FWIW, muchos ajustes comunes que mantengo en una función SetupSource() son llamados desde una cantidad de FileType diferentes. Entonces tendría SetupPython() llamada SetupSource() . Esto ayuda a mantener las funciones específicas un poco más limpias y reducir algunas duplicaciones. Si esto ayuda, eche un vistazo a las funciones en mis vimfiles aquí: https://github.com/jszakmeister/vimfiles/blob/master/vimrc#L5328

Configuraciones anuladas

Es posible que la configuración esté siendo reemplazada por configuraciones específicas del idioma. Consulte http://vim.wikia.com/wiki/Keep_your_vimrc_file_clean para obtener más información:

La forma más rápida de comenzar es mover todo el material específico de su archivo .vimrc a un archivo llamado .vim / ftplugin / language.vim (o $ HOME / vimfiles / ftplugin / language.vim en Windows).

Compruebe en esas ubicaciones un archivo .vim específico de Python.

Tipo de archivo en

Vundle parece requerir el filetype off , y no estoy seguro de si debe volver a encenderlo. Hay un hilo en la página de problemas de Github para Vundle que explica por qué es necesario filetype on . Tal vez esto proporcionará alguna idea.

También creo que tener filetype plugin indent on seguido de filetype on de filetype on es redundante. De acuerdo con los documentos de ayuda de vim , el primero activa la detección, el complemento y la sangría, y el último activa la detección y deja el complemento y la sangría sin cambios:

 Overview: *:filetype-overview* command detection plugin indent :filetype on on unchanged unchanged :filetype off off unchanged unchanged :filetype plugin on on on unchanged :filetype plugin off unchanged off unchanged :filetype indent on on unchanged on :filetype indent off unchanged unchanged off :filetype plugin indent on on on on :filetype plugin indent off unchanged off off 
    Intereting Posts