1311 Stimmen

Tabulator als 4 Leerzeichen umdefinieren

Meine derzeitige Einstellung geht von 8 Leerzeichen aus; wie könnte ich sie umdefinieren?

1911voto

Laurence Gonsalves Punkte 131009

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 mal tabstop . 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' )

817voto

Alan Haggai Alavi Punkte 69510

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

72voto

zen Punkte 11893

Oder die Abkürzung für vim modeline:

vim :set ts=4 sw=4 sts=4 et :

61voto

kenorb Punkte 134883

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.

31voto

Snowcrash Punkte 73122

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.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X