Vim-Tabulatorgröße beim Drückenund wann die automatische Einrückung angewendet wird

Vim-Tabulatorgröße beim Drückenund wann die automatische Einrückung angewendet wird

Ich habe mich entschieden, meine Tabulatorgröße von 4 auf 2 zu ändern, weil, warum nicht? Jeder andere, der sich den Code ansehen möchte, kann sicherlich seine Präferenzen verwenden.

Dennoch eine Frage.

Wenn ich die Tabulatortaste drücke, wird 2 eingefügt, aber die automatische Einrückung von Vim fügt immer noch 4 ein. Was muss ich ändern, damit es 2 werden?

Eine weitere, nicht damit zusammenhängende Frage: Welcher Einrückungsstil ist für C und ähnliche Sprachen am besten geeignet? Ich habe 1TBS verwendet, aber es gibt so viele zur Auswahl. Ist einer davon professioneller oder wird er bevorzugt?

Antwort1

Versuchen Sie, ' shiftwidth' auf den gleichen Wert wie ' tabstop' zu setzen. Besser noch: Wenn Sie eine aktuelle Version von Vim verwenden, setzen Sie ' shiftwidth' auf 0 und es wird standardmäßig der Wert verwendet, der für ' tabstop' eingestellt ist.

Antwort2

Vim-Einrückungsoptionen

Vim verwendet hauptsächlich 3 Einstellungen für die Einrückungsgröße:

  • tabstop, ts: Wenn Vim in einer Datei, die Sie öffnen, auf eine Tabulatorzeichen stößt, zeigt es die Tabulatoren als {ts} Leerzeichen an (sieheTabstop-Hilfe, oder geben Sie :help tabstopVim ein).
  • softtabstop, sts: wenn Sie eine Datei bearbeiten und die Tabulatortaste drücken, verwendet Vim diese Einstellung, um die Breite der eingefügten Tabulatoren zu definieren (sieheSofttabstop-Hilfe, oder geben Sie :help softtabstopVim ein).
  • shiftwidth, sw: die Anzahl der Leerzeichen, die Vim beim Einrücken verwendet, entweder mit Autoindent-Zeug oder den üblichen >>, <<-Befehlen. Wie Heptite bemerkt hat, ist dies das, wonach Sie in diesem speziellen Fall gesucht haben. Und neuere Versionen von Vim erlauben es Ihnen tatsächlich, diese Option nicht zu definieren, shiftwidthwürde dann den durch definierten Wert annehmen tabstop. Ziemlich praktisch (sieheShiftwidth-Hilfe).

Beispiel

Wenn Sie beispielsweise die folgenden Einstellungen verwenden:

set sts=4
set ts=2
set sw=8

Diese würden das folgende Verhalten erzeugen:

  1. Das Einfügen einer Tabellierung in die Datei würde einen 4 Leerzeichen breiten Einzug erzeugen.
  2. Da Ihr tabstopWert auf 2 eingestellt ist, entspricht dies tatsächlich 2 Tabellierungen. Dies lässt sich relativ einfach überprüfen. Verwenden Sie einfach die Optionen listund listcharszum Anzeigen von Tabellierungen.
  3. Wenn Sie eine Zeile mithilfe von einrücken >>, ist die Einrückung 8 Leerzeichen breit (entspricht also 4 Tabellierungen, basierend auf tabstopdem Wert, wie oben).

Bildbeschreibung hier eingeben

Vim-Einrückungsempfehlungen (aus der Vim-Dokumentation)

Aus tabstopder Hilfe ( :help tabstopin Vim):

There are four main ways to use tabs in Vim:
  1. Always keep 'tabstop' at 8, set 'softtabstop' and 'shiftwidth' to 4
    (or 3 or whatever you prefer) and use 'noexpandtab'.  Then Vim
    will use a mix of tabs and spaces, but typing <Tab> and <BS> will
    behave like a tab appears every 4 (or 3) characters.
  2. Set 'tabstop' and 'shiftwidth' to whatever you prefer and use
    'expandtab'.  This way you will always insert spaces.  The
    formatting will never be messed up when 'tabstop' is changed.
  3. Set 'tabstop' and 'shiftwidth' to whatever you prefer and use a
    |modeline| to set these values when editing the file again.  Only
    works when using Vim to edit the file.
  4. Always set 'tabstop' and 'shiftwidth' to the same value, and
    'noexpandtab'.  This should then work (for initial indents only)
    for any tabstop setting that people use.  It might be nice to have
    tabs after the first non-blank inserted as spaces if you do this
    though.  Otherwise aligned comments will be wrong when 'tabstop' is
    changed.

Ich persönlich verwende hauptsächlich die zweite Lösung mit 2 Leerzeichen breiten Tabulatoren.

set ts=2
set sts=2
set et     "expand tabs to spaces

Antwort3

Entsprechendhttp://vim.wikia.com/wiki/Indenting_source_code, der Befehl „filetype plugin indent on“ bewirkt, dass das Programm dateitypspezifische Einrückungsskripte verwendet, die sich im Unterverzeichnis „indent“ der Vim-Installation befinden. Auf dieser Seite steht auch, dass „cindent“ in C- und C++-Dateien automatisch verwendet wird und dass Sie diesen Befehl nicht manuell verwenden müssen.

Ich bin mit Vim nicht sehr vertraut, da ich es nur gelegentlich für grundlegende Textbearbeitung verwende, aber ich würde versuchen, den Befehl „cindent“ manuell einzugeben, um Vims standardmäßige automatische Einrückungsgröße für diesen Code zu verwenden. Wenn das nicht funktioniert, können Sie „filetype plugin indent on“ ausprobieren und die Skripte selbst bearbeiten, um die gewünschten Einrückungen zu erhalten.

verwandte Informationen