vimrc ändert sich nicht in vim-Sitzungen, die Einstellungen bleiben nicht erhalten

477
Misha Krul

Ich versuche, mein Tab auf 2 Tab im Abstand von der Standardbreite zu ändern.

Meine vimrc-Datei sieht folgendermaßen aus:

" Configuration file for vim set modelines=0 " CVE-2007-2438 " Normally we use vim-extensions. If you want true vi-compatibility " remove change the following statements set expandtab set backspace=2 " more powerful backspacing set tabstop=2 set softtabstop=2 set shiftwidth=2 map <C-c> "+y<CR>  " Don't write backup file if vim is being called by "crontab -e" au BufWrite /private/tmp/crontab.* set nowritebackup nobackup " Don't write backup file if vim is being called by "chpass" au BufWrite /private/etc/pw.* set nowritebackup nobackup  let skip_defaults_vim=1 

Selbst nachdem ich die Einstellungen geändert habe, werden meine vorhandenen Dateien nicht mit 2 Speicherplätzen versehen. Wenn ich :set expandtabund :set stoptab=2zu meinen Dateien hinzufüge, werden für diese Sitzung zwei Tabulatoren in Abständen erlaubt, aber nachdem ich die Datei gespeichert, geschlossen und wieder geöffnet habe, sieht alles wieder in Tabulierungen mit vier Abständen aus.

Natürlich bin ich kein Vim-Experte. Wie kann ich es so gestalten, dass vim immer zwei Leerzeichen verwendet und diese Einstellung für alle Sitzungen beibehalten wird?

0

1 Antwort auf die Frage

0
Ingo Karkat

Wenn sich in Ihren Bearbeitungsdateien physische Registerkarten befinden, können Sie tatsächlich die optische Breite der Registerkarten ändern, indem Sie den 'tabstop'Optionswert ändern . Innerhalb des Textes bleiben die Registerkarten gleich.

In :set expandtabIhren Dateien sollten sich jedoch keine Registerkarten befinden (sofern diese regelmäßig bearbeitet wurden). Bei allen Änderungen, die Sie vorgenommen haben, werden bei jedem Drücken die entsprechenden Leerzeichen eingefügt Tab. Das führt zu dem von Ihnen gemeldeten Verhalten: Bei neuen Änderungen werden für jede Registerkarte zwei Leerzeichen eingefügt. Die vorhandenen Zeilen enthalten jedoch den Einzug von 4 Leerzeichen.

Wenn Sie die Breite des Einzugs ändern möchten, wenn Leerzeichen verwendet werden, müssen Sie die Anzahl der Leerzeichen physisch ändern. Reduzieren Sie beispielsweise 4 Leerzeichen auf 2. Vim bietet den :retabBefehl ( :help change-tabs) an, aber die Verwendung mit der Leerzeichen-basierten Einrückung ist umständlich und wirkt sich auch auf alle Leerzeichen aus, nicht nur auf den Einzug am Zeilenanfang. Es ist einfacher, :substitutedies zu verwenden. Der folgende Befehl halbiert die Anzahl der Leerzeichen am Zeilenanfang:

:%substitute/^\( \+\)\1/\1/e 

TL; DR : Mit physischen Registerkarten im Text können Sie das Erscheinungsbild über den 'tabstop'Wert ändern. Bei physischen Leerzeichen müssen Sie die Anzahl der Leerzeichen im Text konvertieren.