Instalé vundle ayer y, como lo hice, el ancho de tabulación que configuré en mi vimrc se ignora y se vuelve a establecer en 4 en lugar de 2.
Descubrí que la siguiente línea después del párrafo del paquete lo está causando:
filetype plugin indent on
Mi sangría está configurada así:
set noexpandtab " Make sure that every file uses real tabs, not spaces
set shiftround " Round indent to multiple of 'shiftwidth'
set smartindent " Do smart indenting when starting a new line
set autoindent " Copy indent from current line, over to the new line
" Set the tab width
let s:tabwidth=2
exec 'set tabstop=' .s:tabwidth
exec 'set shiftwidth=' .s:tabwidth
exec 'set softtabstop='.s:tabwidth
Puedes consultar mi vimrc completo aquí .
Probé el problema de sangría usando un script de python (donde la sangría realmente importa).
Ya he intentado cambiar filetype plugin indent on
a filetype plugin on
, pero eso no cambia nada. Solo comentar esa línea ayuda.
Ahora, la guía de instalación de vundle dice que esta línea es obligatoria.
¿Cómo soluciono este problema de sangría? ¿Puedo omitir la línea de tipo de archivo o es realmente obligatorio mantenerla en el vimrc?
Solución:
Gracias a @ChristianBrabandt y @romainl ahora encontré una solución que también puede residir en un solo archivo vimrc:
filetype plugin indent on
[...]
set noexpandtab " Make sure that every file uses real tabs, not spaces
set shiftround " Round indent to multiple of 'shiftwidth'
set autoindent " Copy indent from current line, over to the new line
" Set the tab width
let s:tabwidth=2
au Filetype * let &l:tabstop = s:tabwidth
au Filetype * let &l:shiftwidth = s:tabwidth
au Filetype * let &l:softtabstop = s:tabwidth
fuente
Respuestas:
Lo primero es lo primero; la línea a continuación no tiene absolutamente nada que ver con Vundle o la administración de complementos:
Ese comando hace tres cosas:
Esa línea está ahí porque algunos administradores de complementos deben asegurarse de que la detección del tipo de archivo esté desactivada antes de hacer su magia y usar Vim para la programación sería mucho más difícil sin ftplugins y la sangría adecuada. Es mi opinión que simplemente deberían tratar internamente la detección de tipos de archivos, pero bueno ...
De todos modos, su problema es causado por ftplugins excesivamente posesivos que anulan su configuración de sangría con la de ellos. El ftplugin de Python es el culpable más común porque no hace mucho tiempo se decidió que debía aplicar PEP8.
La salida fácil sería evitar el abastecimiento de ftplugins por completo:
pero generalmente vienen con cosas útiles, por lo que ese método no se recomienda realmente.
La solución más limpia es dejar la
filetype
línea en su estado "óptimo":y anule sus anulaciones con las suyas propias
after/ftplugin/python.vim
:Notas:
smartindent
porque no es tan inteligente para empezar y desaprobado por los guiones de sangría específicos de tipo de archivo de todos modos.:execute
comandos con comandos más limpios:let
para evitar la concatenación innecesaria.fuente
shiftwidth
en cero ysofttabstop
en -1, seguirá la configuración de tabulación.El problema de sangría proviene del ftplugin, que carga un archivo .vim
/usr/share/vim/vim-version-/ftplugin/-filetype-.vim
que anula lo que tenga en su.vimrc
archivo. puede averiguar dónde está ese archivo ejecutando el siguiente comando dentro de vim:verbose set tabstop?
. El resultado lo dirigirá al archivo que anula su configuración.En mi caso, estaba teniendo problemas con mi configuración de sangría de Python.
Una manera fácil de resolver esto es hacer lo siguiente:
Cree una carpeta .vim en su carpeta de inicio (si no la tiene)
Agregue lo siguiente:
Modifique lo que quiera en el comando. El mío se ve así porque trabajo con pestañas en lugar de espacios en blanco.
fuente