Ich habe gestern vundle installiert und seitdem wird die in meinem vimrc konfigurierte Tab-Breite ignoriert und auf 4 anstatt auf 2 zurückgesetzt.
Ich fand heraus, dass die folgende Zeile nach dem Vundle-Absatz dies verursacht:
filetype plugin indent on
Meine Einrückung ist wie folgt aufgebaut:
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
Sie können meine vollständige vimrc hier überprüfen .
Ich habe das Einrückungsproblem mit einem Python-Skript getestet (wobei Einrückung wirklich wichtig ist).
Ich habe bereits versucht, zu wechseln filetype plugin indent on
, filetype plugin on
aber das ändert nichts. Nur das Auskommentieren dieser Zeile hilft.
In der Vundle-Installationsanleitung heißt es nun, dass diese Zeile erforderlich ist.
Wie behebe ich dieses Einrückungsproblem? Kann ich die Dateitypzeile einfach weglassen oder ist es wirklich obligatorisch, sie im vimrc zu belassen?
Lösung:
Dank @ChristianBrabandt und @romainl habe ich jetzt eine Lösung gefunden, die sich auch in einer einzelnen vimrc-Datei befinden kann:
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
quelle
Antworten:
Das wichtigste zuerst; Die folgende Zeile hat absolut nichts mit Vundle oder Plugin-Management zu tun:
Dieser Befehl macht drei Dinge:
Diese Zeile ist vorhanden, da einige Plugin-Manager sicherstellen müssen, dass die Dateityperkennung deaktiviert ist, bevor sie ihre Magie ausführen. Die Verwendung von Vim für die Programmierung würde ohne ftplugins und korrekte Einrückung viel härter saugen. Ich bin der Meinung, dass sie sich einfach intern mit der Dateityperkennung befassen sollten, aber gut ...
Wie auch immer, Ihr Problem wird durch überbesessene Ftplugins verursacht, die Ihre Einrückungseinstellungen mit ihren überschreiben. Das Python-Ftplugin ist der häufigste Schuldige, da vor kurzem entschieden wurde, PEP8 durchzusetzen.
Der einfache Ausweg wäre, die Beschaffung von Ftplugins insgesamt zu vermeiden:
Aber sie kommen normalerweise mit nützlichen Sachen, so dass diese Methode nicht wirklich empfohlen wird.
Die sauberste Lösung besteht darin, die
filetype
Leitung in ihrem "optimalen" Zustand zu belassen:und überschreiben Sie ihre Überschreibungen mit Ihren eigenen
after/ftplugin/python.vim
:Anmerkungen:
smartindent
weil es anfangs nicht so schlau ist und ohnehin von filetypspezifischen Einrückungsskripten nicht mehr unterstützt wird.:execute
Befehle durch sauberere:let
Befehle ersetzt, um unnötige Verkettungen zu vermeiden.quelle
shiftwidth
auf Null undsofttabstop
auf -1 setzen, folgt dies der Tabstop-Einstellung.Das Einrückungsproblem kommt vom ftplugin, das eine .vim-Datei lädt
/usr/share/vim/vim-version-/ftplugin/-filetype-.vim
, die alles überschreibt, was Sie in Ihrer.vimrc
Datei haben. Sie können herausfinden, wo sich diese Datei befindet, indem Sie den folgenden Befehl in vim ausführen:verbose set tabstop?
. Die Ausgabe verweist auf die Datei, die Ihre Konfiguration überschreibt.In meinem Fall hatte ich Probleme mit meiner Python-Einrückungskonfiguration.
Eine einfache Möglichkeit, dies zu lösen, besteht darin, Folgendes zu tun:
Erstellen Sie einen .vim-Ordner in Ihrem Home-Ordner (falls Sie ihn nicht haben).
Fügen Sie Folgendes hinzu:
Ändern Sie, was Sie im Befehl wollen. Meins sieht so aus, weil ich mit Tabs anstelle von Leerzeichen arbeite.
quelle