Frage Definieren Sie die Registerkarte als 4 Leerzeichen neu


Meine aktuelle Einstellung nimmt 8 Leerzeichen an; Wie könnte ich es neu definieren?


860
2017-12-10 06:18


Ursprung


Antworten:


Es kommt darauf an, was du meinst. Möchten Sie tatsächliche Tab-Zeichen in Ihrer Datei zu erscheinen 4 Felder breit, oder mit "Tab" meinst du eigentlich ein Einzug, erzeugt durch Drücken der Tabulatortaste, was dazu führen würde, dass die Datei buchstäblich (bis zu) 4 Leerzeichen für jede von Ihnen eingegebene "Registerkarte" enthält?

Abhängig von Ihrer Antwort, einer der folgenden Sätze von Einstellungen sollten für Sie funktionieren:

  • Für Registerkarten, die 4 Felder breit erscheinen:

    set tabstop=4
    

    Wenn Sie in Ihrem Quellcode tatsächlich Tabulatorzeichen verwenden, möchten Sie wahrscheinlich auch diese Einstellungen (dies sind die Standardwerte, aber Sie können sie auch defensiv einstellen):

    set softtabstop=0 noexpandtab
    

    Wenn Sie möchten, dass ein Einzug einem einzelnen Tab entspricht, sollten Sie auch Folgendes verwenden:

    set shiftwidth=4
    
  • Für Einrückungen, die aus 4 Leerzeichen bestehen aber sind mit der Tab-Taste eingegeben:

    set tabstop=8 softtabstop=0 expandtab shiftwidth=4 smarttab
    

Um die obigen Einstellungen dauerhaft hinzuzufügen, fügen Sie hinzu diese Zeilen zu deinem vimrc.

Falls Sie Anpassungen vornehmen müssen oder einfach nur verstehen möchten, was diese Optionen bedeuten, finden Sie hier eine Aufschlüsselung der einzelnen Optionen:

tabstop

Die Breite eines harten Tabstops, gemessen in "Leerzeichen" - effektiv die (maximale) Breite eines tatsächlichen Tab-Zeichens.

shiftwidth

Die Größe eines "Einzugs". Es wird auch in Leerzeichen gemessen, also wenn Sie Ihre Code-Basis mit Tabulator-Zeichen versehen möchten, dann möchten Sie shiftwidth um die Anzahl der Tab-Zeichen mal gleich zu setzen tabstop. Dies wird auch von Dingen wie der verwendet =, > und < Befehle.

softtabstop

Setzen Sie dies auf einen anderen Wert als Null tabstop macht die Tab-Taste (im Einfügemodus)   Fügen Sie eine Kombination von Leerzeichen (und möglicherweise Tabs) ein simulieren Tabstopp bei dieser Breite.

expandtab

Wenn Sie dies aktivieren, wird die Tabulatortaste (im Einfügemodus) anstelle von Leerzeichen eingefügt   Tabulatorzeichen. Dies betrifft auch das Verhalten der retab Befehl.

smarttab

Wenn Sie dies aktivieren, wird die Tabulatortaste (im Einfügemodus) Leerzeichen oder Tabulatoren einfügen   Gehe zum nächsten Gedankenstrich   des nächsten Tabstops, wenn sich der Cursor am Anfang einer Zeile befindet (d. h   nur vorangehende Zeichen sind Whitespace).

Für weitere Details zu diesen Themen siehe :help 'Optionsname' in vim (z.B. :help 'tabstop')


1277
2017-12-10 06:19



Um dies für den aktuellen Benutzer dauerhaft zu definieren, erstellen Sie (oder bearbeiten Sie) das .vimrc Datei:

$ vim ~/.vimrc

Fügen Sie anschließend die folgende Konfiguration in die Datei ein. Sobald vim neu gestartet wird, 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

638
2017-12-10 06:20



oder Kurzschrift für vim modeline:

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

44
2017-12-10 06:22



Ich habe das 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 wenn ich Tab drücke, ich 4 Leerzeichen bekomme. Die dritte Einstellung bedeutet, dass wenn ich es tue V> (d. h. visuell und Einzug) Ich bekomme auch 4 Leerzeichen.

Nicht so umfassend wie die angenommene Antwort, aber es könnte Leuten helfen, die einfach nur etwas kopieren und einfügen möchten.


20
2018-06-28 10:49



Setzen Sie Ihre gewünschten Einstellungen in die ~ / .vimrc Datei - Siehe unten für einige Richtlinien und Best Practices.

Es gibt vier Möglichkeiten, Tabs in Vim zu verwenden:

  1. Halte immer 'tabstop' bei 8, setze 'softtabstop' und 'shiftwidth' auf 4 (oder 3 oder was immer du bevorzugst) und benutze 'noexpandtab'. Dann wird Vim eine Mischung aus Tabulatoren und Leerzeichen verwenden, aber die Eingabe und wird sich wie eine Registerkarte verhalten wird alle 4 (oder 3) Zeichen 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. Setze 'Tabstop' und 'Shiftwidth' auf was auch immer du bevorzugst und verwende 'expandtab'. Auf diese Weise werden immer Leerzeichen eingefügt. Die Formatierung wird nie durcheinander gebracht, wenn 'Tabstop' geändert wird.

  3. Setzen Sie 'Tabstop' und 'Shiftwidth' auf das, was Sie bevorzugen, und verwenden Sie eine | Modeline | um diese Werte beim erneuten Bearbeiten der Datei festzulegen. Funktioniert nur, wenn Sie Vim zum Bearbeiten der Datei verwenden.

  4. Setzen Sie 'Tabstop' und 'Shiftwidth' immer auf den gleichen Wert und 'noexpandtab'. Dies sollte dann funktionieren (nur für erste Gedankenstriche) für alle Tabstop-Einstellungen, die Benutzer verwenden. Es mag schön sein, wenn Tabs nach dem ersten Leerzeichen als Leerzeichen eingefügt werden. Andernfalls werden falsch ausgerichtete Kommentare falsch angezeigt, wenn "Tabstop" geändert wird.

Quelle:


11
2018-05-07 01:45



Noch etwas, benutze es
:retab
um bestehende zu konvertieren tab zu spaces http://vim.wikia.com/wiki/Converting_tabs_to_spaces


7
2017-11-10 14:40



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


6
2017-07-19 14:12



:set sw=4

Sehen Mastering des VI-Editors


4
2017-12-10 06:21



Es gibt wenige Einstellungen, die festlegen, ob Leerzeichen oder Tabulatoren verwendet werden sollen.

So, hier sind praktische Funktionen, die in Ihrem definiert werden können ~/.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 es pro Dateierweiterungen zu verwenden, kann die folgende Syntax verwendet werden (hinzugefügt zu .vimrc):

au! BufWrite,FileWritePre *.module,*.install call UseSpaces()

Siehe auch: Konvertieren von Registerkarten in Leerzeichen.


Hier ist ein weiterer Ausschnitt aus Wikia, mit dem man arbeiten kann Wechseln zwischen Tabs und Leerzeichen:

" 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 umzuschalten.


4
2018-01-22 21:37