Meine derzeitige Einstellung geht von 8 Leerzeichen aus; wie könnte ich sie umdefinieren?
Antworten
Zu viele Anzeigen?Das hängt davon ab, was Sie meinen. Wollen Sie, dass die tatsächlichen Tabulatorzeichen in Ihrer Datei erscheinen 4 Leerzeichen breit, oder meinen Sie mit "Tab" tatsächlich ein Einzug die durch Drücken der Tabulatortaste erzeugt wird, was dazu führen würde, dass die Datei buchstäblich (bis zu) 4 Leerzeichen für jeden eingegebenen "Tab" enthält?
Je nach Ihrer Antwort wird eine der folgenden Gruppen von Einstellungen für Sie geeignet sein:
-
Für Tabulatorzeichen, die 4 Leerzeichen breit sind :
set tabstop=4
Wenn Sie in Ihrem Quellcode Tabulatorzeichen verwenden, möchten Sie wahrscheinlich auch diese Einstellungen verwenden (dies sind eigentlich die Standardeinstellungen, aber Sie möchten sie vielleicht defensiv einstellen):
set softtabstop=0 noexpandtab
Wenn Sie schließlich möchten, dass ein Einzug einem einzelnen Tabulator entspricht, sollten Sie auch diesen verwenden:
set shiftwidth=4
-
Für Einzüge, die aus 4 Leerzeichen bestehen sondern werden mit der Tabulatortaste eingegeben:
set tabstop=8 softtabstop=0 expandtab shiftwidth=4 smarttab
Um die obigen Einstellungen dauerhaft zu machen, fügen Sie diese Zeilen zu Ihrem vimrc .
Für den Fall, dass Sie Anpassungen vornehmen müssen oder einfach nur verstehen möchten, was die einzelnen Optionen bedeuten, finden Sie hier eine Aufschlüsselung der Bedeutung 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 "Einrückens". Sie wird ebenfalls in Leerzeichen gemessen. Wenn Ihr Code also mit Tabulatorzeichen eingerückt wird, sollten Sie
shiftwidth
um die Anzahl der Tabulatorzeichen maltabstop
. Dies wird auch von Dingen wie dem=
,>
y<
Befehle.
softtabstop
Die Einstellung auf einen von Null verschiedenen Wert als
tabstop
w eine Kombination von Leerzeichen (und möglicherweise Tabulatoren) einfügen, um simulieren. Der Tabulator bleibt bei dieser Breite stehen.
expandtab
E Tabulatorzeichen einfügt. Dies beeinflusst auch das Verhalten der
retab
mando.
smarttab
E auf den nächsten Einzug des nächsten Tabstopps zu gehen, wenn der Cursor am Anfang einer Zeile steht (d.h. die die einzigen vorangehenden Zeichen sind Leerzeichen).
Weitere Einzelheiten zu diesen Themen 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 .vimrc
Datei:
$ vim ~/.vimrc
Fügen Sie dann die unten stehende Konfiguration in die Datei ein. Sobald vim neu gestartet wird, werden die Einstellungen der Registerkarten übernommen.
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
Es gibt einige wenige Einstellungen, die festlegen, ob Leerzeichen oder Tabulatoren verwendet werden sollen.
Hier sind also praktische Funktionen, die Sie in Ihrem ~/.vimrc
Datei:
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
Verwendung:
:call UseTabs()
:call UseSpaces()
Um sie für Dateierweiterungen zu verwenden, kann die folgende Syntax verwendet werden (hinzugefügt zu .vimrc
):
au! BufWrite,FileWritePre *.module,*.install call UseSpaces()
Siehe auch: Umwandlung von Tabulatoren in Leerzeichen .
Hier ist ein weiterer Ausschnitt aus Wikia, der verwendet werden kann, um zwischen Tabulatoren und Leerzeichen hin- und herschalten :
" virtual tabstops using spaces
set shiftwidth=4
set softtabstop=4
set 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 jeden Tabulator und eine Zuordnung zu F9 um die Einstellungen umzuschalten.
Ich habe dies 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 beiden Einstellungen bedeuten, dass ich 4 Leerzeichen erhalte, wenn ich die Tabulatortaste drücke. Die dritte Einstellung bedeutet, dass, wenn ich V>
(d. h. Sichtbarkeit und Einzug) erhalte ich auch 4 Leerzeichen.
Sie ist nicht so umfassend wie die akzeptierte Antwort, aber sie könnte Leuten helfen, die nur etwas zum Kopieren und Einfügen brauchen.
- See previous answers
- Weitere Antworten anzeigen