it-swarm.com.de

Tabulator als 4 Leerzeichen neu definieren

Meine aktuelle Einstellung geht von 8 Leerzeichen aus. Wie könnte ich es neu definieren?

1008
Ricky

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

1492

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
714

oder Abkürzung für Vim Modeline:

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

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.

24
Snowcrash

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.

18
kenorb

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:

  1. 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).

  2. 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.

  3. 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.

  4. 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:

13
ElasticThoughts

Eins noch, benutze
:retab
um vorhandene tab in spaces zu konvertieren http://vim.wikia.com/wiki/Converting_tabs_to_spaces

9
DawnSong

Zeile hinzufügen
set ts=4
im
~/.vimrc Datei für jeden Benutzer
oder
/etc/vimrc Datei für das gesamte System

6
5
Amarghosh

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 >> 
0