it-swarm.com.de

Wie ändere ich die Tab-Größe in Vim?

Jedes Mal, wenn ich einen Selektor in CSS hinzufüge und Enter drücke, um die Eigenschaften zu definieren, sieht das so aus:

#selector {
        property: value;
}

(8-stellige Tabulatoren)

Wie kann ich Vim so konfigurieren, dass es so aussieht:

#selector {
    property: value;
}

(4-stellige Tabulatoren)

125
alexchenco

Erweitere die Antwort von zoul:

Wenn Sie Vim so einrichten möchten, dass beim Bearbeiten eines bestimmten Dateityps bestimmte Einstellungen verwendet werden, sollten Sie die folgenden automatischen Befehle verwenden:

autocmd Filetype css setlocal tabstop=4

Dadurch werden die Registerkarten als 4 Leerzeichen angezeigt. Das Setzen von expandtab bewirkt, dass Vim tatsächlich Leerzeichen einfügt (deren Anzahl von tabstop gesteuert wird), wenn Sie die Tabulatortaste drücken. Möglicherweise möchten Sie softtabstop verwenden, damit die Rücktaste ordnungsgemäß funktioniert (dh die Einrückung verringern, wenn dies bei Verwendung von Tabulatoren der Fall wäre, anstatt immer ein Zeichen nach dem anderen zu löschen).

Um eine fundierte Entscheidung bezüglich der Einrichtung zu treffen, müssen Sie die Vim-Dokumente in tabstop, shiftwidth, softtabstop und expandtab lesen. . Das interessanteste Bit finden Sie unter expandtab (:help 'expandtab):

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.

  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 'Tabstop' geändert wird.

78
Michał Marczyk
:set tabstop=4
:set shiftwidth=4
:set expandtab

Dadurch werden anstelle eines Tabulatorzeichens vier Leerzeichen eingefügt. Leerzeichen sind etwas "stabiler", was bedeutet, dass mit Leerzeichen eingerückter Text im Browser und in jeder anderen Anwendung gleich angezeigt wird.

172
zoul

Verwenden Sie diesen Befehl, um die Änderung für eine Sitzung vorzunehmen:

:set tabstop=4

Um die Änderung dauerhaft zu machen, fügen Sie sie zu ~/.vimrc Oder ~/.vim/vimrc Hinzu:

set tabstop=4

Dies betrifft alle Dateien, nicht nur CSS. So wirken Sie sich nur auf CSS-Dateien aus:

autocmd Filetype css setlocal tabstop=4

wie in Michałs Antwort .

96
Keith

Bei mehreren Antworten auf dieser Seite handelt es sich um Lösungen zur einmaligen Verwendung des beschriebenen Problems. Das heißt, wenn Sie das nächste Mal ein Dokument mit vim öffnen, werden die vorherigen Registerkarteneinstellungen wiederhergestellt.

Wenn jemand daran interessiert ist, die Einstellungen der Registerkarte dauerhaft zu ändern:

  • finde/öffne deine .vimrc - Anleitung hier
  • füge die folgenden Zeilen hinzu: ( mehr Infos hier )

     set tabstop=4
     set shiftwidth=4
     set expandtab
    
  • dann Datei speichern und testen

32

Wenn Sie die Größe häufig ändern müssen und dies nicht an einen bestimmten Dateityp binden möchten, können Sie vordefinierte Befehle für Ihre .vimrc-Datei verwenden, um die Einstellungen schnell zu ändern:

nmap <leader>t :set expandtab tabstop=4 shiftwidth=4 softtabstop=4<CR>
nmap <leader>m :set expandtab tabstop=2 shiftwidth=2 softtabstop=2<CR>

Dies ordnet den Schlüsseln\t und\m zwei unterschiedliche Größen zu. Sie können dies mit beliebigen Schlüsseln neu verknüpfen.

6
Jens

Als Einzeiler in vim:

:set tabstop=4 shiftwidth=4 expandtab

Fügen Sie für eine dauerhafte Einrichtung die folgenden Zeilen zu ~/.vimrc hinzu:

set tabstop=4
set shiftwidth=4
set expandtab
0
oz19