Meine aktuelle Einstellung geht von 8 Leerzeichen aus. Wie könnte ich es neu definieren?
Es kommt darauf an, was du meinst. Wollen Sie, dass die tatsächlichen Tabulatorzeichen in Ihrer Datei erscheinen 4 Leerzeichen breit sind, oder meinen Sie mit "Tabulator" tatsächlich Einrückung, die durch Drücken der Tabulatortaste erzeugt wird führen dazu, dass die Datei buchstäblich (bis zu) 4 Leerzeichen für jeden "Tabulator" enthält, den Sie eingeben?
Abhängig von Ihrer Antwort sollte eine der folgenden Einstellungen für Sie funktionieren:
Für Tabulatorzeichen, die 4-stellig erscheinen :
set tabstop=4
Wenn Sie in Ihrem Quellcode das eigentliche Tabulatorzeichen verwenden, möchten Sie wahrscheinlich auch diese Einstellungen (dies sind eigentlich die Standardeinstellungen, aber Sie möchten sie möglicherweise defensiv festlegen):
set softtabstop=0 noexpandtab
Wenn Sie möchten, dass ein Einzug einer einzelnen Registerkarte entspricht, sollten Sie außerdem Folgendes verwenden:
set shiftwidth=4
Für Einzüge, die aus 4 Leerzeichen bestehen , aber mit der Tabulatortaste eingegeben werden:
set tabstop=8 softtabstop=0 expandtab shiftwidth=4 smarttab
Um die obigen Einstellungen dauerhaft zu machen, fügen Sie diese Zeilen zu Ihrem vimrc hinzu.
Falls Sie Anpassungen vornehmen müssen oder einfach nur verstehen möchten, was diese Optionen bedeuten, finden Sie hier eine Auflistung der Bedeutungen der einzelnen Optionen:
tabstop
Die Breite eines harten Tabstopps, gemessen in "Leerzeichen" - effektiv die (maximale) Breite eines tatsächlichen Tabulatorzeichens.
shiftwidth
Die Größe eines "Einzugs". Es wird auch in Leerzeichen gemessen. Wenn Ihre Codebasis mit Tabulatorzeichen eingerückt ist, soll
shiftwidth
der Anzahl der Tabulatorzeichen maltabstop
entsprechen. Dies wird auch von Dingen wie den Befehlen=
,>
und<
verwendet.
softtabstop
Wenn Sie diesen Wert auf einen anderen Wert als
tabstop
setzen, wird mit der Tabulatortaste (im Einfügemodus) eine Kombination von Leerzeichen (und möglicherweise Tabulatoren) eingefügt, um simulieren Tabulatoren an dieser Breite zu setzen.
expandtab
Wenn Sie dies aktivieren, werden mit der Tabulatortaste (im Einfügemodus) Leerzeichen anstelle von Tabulatorzeichen eingefügt. Dies wirkt sich auch auf das Verhalten des Befehls
retab
aus.
smarttab
Wenn Sie dies aktivieren, werden mit der Tabulatortaste (im Einfügemodus) Leerzeichen oder Tabulatoren eingefügt, um zum nächsten Einzug des nächsten Tabulators zu gelangen, wenn sich der Cursor am Anfang einer Zeile befindet (d. H. Die einzigen vorhergehenden Zeichen sind Leerzeichen).
Weitere Einzelheiten zu diesen finden Sie unter :help 'optionname'
in vim (z. B. :help 'tabstop'
).
Um dies dauerhaft für den aktuellen Benutzer zu definieren, erstellen (oder bearbeiten) Sie die Datei .vimrc
:
$ vim ~/.vimrc
Fügen Sie dann die unten stehende Konfiguration in die Datei ein. Nach dem Neustart von vim gelten die Registerkarteneinstellungen.
set tabstop=4 " The width of a TAB is set to 4.
" Still it is a \t. It is just that
" Vim will interpret it to be having
" a width of 4.
set shiftwidth=4 " Indents will have a width of 4
set softtabstop=4 " Sets the number of columns for a TAB
set expandtab " Expand TABs to spaces
oder Abkürzung für Vim Modeline:
vim :set ts=4 sw=4 sts=4 et :
Ich habe Folgendes kopiert und in meine .vimrc-Datei eingefügt:
" size of a hard tabstop
set tabstop=4
" always uses spaces instead of tab characters
set expandtab
" size of an "indent"
set shiftwidth=4
Die ersten 2 Einstellungen bedeuten, dass ich beim Drücken der Tabulatortaste 4 Leerzeichen bekomme. Die dritte Einstellung bedeutet, dass ich bei V>
(d. H. Visuell und eingerückt) auch 4 Leerzeichen bekomme.
Nicht so umfassend wie die akzeptierte Antwort, aber es kann Menschen helfen, die nur etwas kopieren und einfügen möchten.
Es gibt nur wenige Einstellungen, die festlegen, ob Leerzeichen oder Tabulatoren verwendet werden sollen.
Hier sind also nützliche Funktionen, die in Ihrer ~/.vimrc
-Datei definiert werden können:
function! UseTabs()
set tabstop=4 " Size of a hard tabstop (ts).
set shiftwidth=4 " Size of an indentation (sw).
set noexpandtab " Always uses tabs instead of space characters (noet).
set autoindent " Copy indent from current line when starting a new line (ai).
endfunction
function! UseSpaces()
set tabstop=2 " Size of a hard tabstop (ts).
set shiftwidth=2 " Size of an indentation (sw).
set expandtab " Always uses spaces instead of tab characters (et).
set softtabstop=0 " Number of spaces a <Tab> counts for. When 0, featuer is off (sts).
set autoindent " Copy indent from current line when starting a new line.
set smarttab " Inserts blanks on a <Tab> key (as per sw, ts and sts).
endfunction
Verwendungszweck:
:call UseTabs()
:call UseSpaces()
Zur Verwendung pro Dateierweiterung kann die folgende Syntax verwendet werden (hinzugefügt zu .vimrc
):
au! BufWrite,FileWritePre *.module,*.install call UseSpaces()
Siehe auch: Konvertieren von Tabulatoren in Leerzeichen .
Hier ist ein weiterer Ausschnitt aus Wikia, mit dem Sie zwischen Tabulatoren und Leerzeichen wechseln :
" virtual tabstops using spaces
set shiftwidth=4
set softtabstop=4
expandtab
" allow toggling between local and default mode
function TabToggle()
if &expandtab
set shiftwidth=8
set softtabstop=0
set noexpandtab
else
set shiftwidth=4
set softtabstop=4
set expandtab
endif
endfunction
nmap <F9> mz:execute TabToggle()<CR>'z
Es ermöglicht die Verwendung von 4 Leerzeichen für jede Registerkarte und eine Zuordnung zu F9 um die Einstellungen zu ändern.
Fügen Sie die gewünschten Einstellungen in die Datei ~/.vimrc ein. Im Folgenden finden Sie einige Richtlinien und Best Practices.
Es gibt vier Hauptmethoden, um Registerkarten in Vim zu verwenden:
Halten Sie 'tabstop' immer auf 8, setzen Sie 'softtabstop' und 'shiftwidth' auf 4 (oder 3 oder was auch immer Sie bevorzugen) und verwenden Sie 'noexpandtab'. In diesem Fall verwendet Vim eine Mischung aus Tabulatoren und Leerzeichen. Bei der Eingabe wird jedoch alle 4 (oder 3) Zeichen ein Tabulator angezeigt.
Hinweis: Wenn Sie 'tabstop' auf einen anderen Wert als 8 setzen, kann Ihre Datei an vielen Stellen falsch angezeigt werden (z. B. beim Drucken).
Stellen Sie "tabstop" und "shiftwidth" auf die von Ihnen bevorzugte Option ein und verwenden Sie "expandtab". Auf diese Weise fügen Sie immer Leerzeichen ein. Die Formatierung wird niemals durcheinander gebracht, wenn 'Tabstop' geändert wird.
Setzen Sie 'tabstop' und 'shiftwidth' auf die von Ihnen bevorzugte Einstellung und verwenden Sie eine | modeline | um diese Werte beim erneuten Bearbeiten der Datei festzulegen. Funktioniert nur, wenn Vim zum Bearbeiten der Datei verwendet wird.
Setzen Sie 'tabstop' und 'shiftwidth' immer auf den gleichen Wert und 'noexpandtab'. Dies sollte dann (nur für die ersten Einrückungen) für alle Tabstoppeinstellungen funktionieren, die von den Benutzern verwendet werden. Wenn Sie dies dennoch tun, ist es möglicherweise hilfreich, nach dem ersten nicht leeren Tabulator Tabulatoren als Leerzeichen einzufügen. Ansonsten sind ausgerichtete Kommentare falsch, wenn der Tabulator geändert wird.
Quelle:
Eins noch, benutze:retab
um vorhandene tab
in spaces
zu konvertieren http://vim.wikia.com/wiki/Converting_tabs_to_spaces
Zeile hinzufügenset ts=4
im~/.vimrc
Datei für jeden Benutzer
oder/etc/vimrc
Datei für das gesamte System
:set sw=4
Meine grundlegende ~/.vimrc mit Kommentar:
set number " show line number
set tabstop=2 " set display width of tab; 1 tab = x space with
set expandtab " transform tab to x space (x is tabstop)
set autoindent " auto indent; new line with number of space at the beginning same as previous
set shiftwidth=2 " number of space append to lines when type >>