vimrc – vundle "sangría del complemento de tipo de archivo en" se mete con el ancho de tabulación

Pregunta:

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 de vundle 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 la sangría usando un script de Python (donde la sangría realmente importa).

Ya intenté cambiar la filetype plugin indent on de filetype plugin on de filetype plugin on pero eso no cambia nada. Solo ayuda comentar esa línea.
Ahora, dice la guía de instalación de vundle, esta línea es obligatoria.

¿Cómo soluciono este problema de sangría? ¿Puedo simplemente omitir la línea de tipo de archivo o es realmente obligatorio mantenerlo en 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

Respuesta:

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:

filetype plugin indent on

Ese comando hace tres cosas:

  • habilita la detección de tipo de archivo,
  • habilita scripts específicos de tipo de archivo (ftplugins),
  • habilita secuencias de comandos de sangría específicas de tipo de archivo.

Esa línea está ahí porque algunos administradores de complementos tienen que asegurarse de que la detección de tipos de archivos esté deshabilitada 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. En mi opinión, simplemente deberían ocuparse de la detección de tipos de archivos internamente, pero bueno …

De todos modos, su problema es causado por ftplugins demasiado 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 se decidió que debería hacer cumplir PEP8.

La salida más fácil sería evitar el suministro de ftplugins por completo:

filetype indent on

pero por lo general vienen con cosas útiles, por lo que ese método no es realmente recomendable.

La solución más limpia es dejar la línea del filetype de filetype en su estado "óptimo":

filetype plugin indent on

y anule sus anulaciones con su propio after/ftplugin/python.vim :

setlocal noexpandtab
setlocal shiftround
setlocal autoindent

let s:tabwidth=2
let &l:tabstop = s:tabwidth
let &l:shiftwidth = s:tabwidth
let &l:softtabstop = s:tabwidth

Notas:

  • smartindent porque no es tan inteligente para empezar y, de todos modos, está obsoleto por los scripts de sangría específicos de tipo de archivo.
  • Reemplacé sus comandos :execute con más limpios :let comandos para evitar concatenaciones innecesarias.

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım