Wie kann ich neue Zeilen automatisch einrücken?

15

Ich arbeite an Projekten mit unterschiedlichem Einzug. In vielen dieser Projekte werden die meisten Zeilen aufgrund der typischen Struktur der Dateien auf mindestens zwei Ebenen eingerückt (z. B. Methoden in Java-Dateien).

Dies würde bedeuten, dass Sie eine neue Linie erstellen, wenn Sie sich auf einer Linie befinden

public void something () {

Würde meinen Cursor in die nächste Zeile bringen, automatisch eingerückt, wie

public void something () {
    [cursor]

Kann ich die Tabulatortaste in einer neuen Zeile ein paar Mal drücken, um sie in eine Linie zu bringen? Gibt es dafür eine bessere Möglichkeit (automatisch möglich)?

Kevin Brown
quelle

Antworten:

11

Dies kann durch eine Kombination der autoindentOption und des filetypePlugins erfolgen.

Die autoindentOption kopiert Ihren aktuellen Einzug, wenn Sie eine neue Zeile erstellen. Wenn Ihre aktuelle Einrückungsstufe 4 ist, wenn Sie die neue Zeile beginnen, wird der Cursor in der nächsten Zeile auf dieselbe Einrückungsstufe verschoben.

In deine ~/.vimrcAkte würdest du setzen

set autoindent

Sie können das filetypePlugin auch verwenden, um die nächste Einrückungsstufe basierend auf dem Dateityp automatisch zu bestimmen.

Sie können dies im laufenden Betrieb mit aktivieren

:filetype indent on

Oder in deine ~/.vimrcAkte, die du setzen würdest

filetype plugin indent on

Welches wird automatisch den Einzug basierend auf dem Dateityp bestimmen.

Kevin Brown
quelle
6

Verwenden Sie :set cindent( :set cinkurz) oder :set smartindent( :set sikurz). Wenn Ihre Zeile in einer öffnenden Klammer endet und Sie drücken Enter, wird die folgende Zeile automatisch um eine weitere Ebene eingerückt. (Dies ist besser als :set autoindent, da nur die nächste Zeile auf derselben Ebene eingerückt wird.) Es cindentist besser auf C-ähnliche Sprachen zugeschnitten und kann smartindentvielseitiger mit anderen Programmiersprachen verwendet werden.

Die Menge und Art der Vertiefung ist durch eine kontrollierte :set shiftwidth=…, :set tabstop=…und :set expandtab.

200_erfolg
quelle
'smartindent'ist veraltet, das ist also nicht die beste Wahl. Es wurde durch 'cindent'und 'cinoptions'für C-ähnliche Sprachen ersetzt. Im Allgemeinen ist das Einrücken von Dateitypen jedoch der richtige Weg, um 'autoindent'eine Ausweichmöglichkeit zu schaffen.
Jamessan
@jamessan smartindentist nicht veraltet, aber cindentes lohnt sich, darauf hinzuweisen . Ich habe die Antwort aktualisiert. (Danke!)
200_success
Ich würde Ihnen auch empfehlen, sich editorconfig.org anzuschauen . Es gibt natürlich ein Plugin für vim (und viele andere Editoren) und es ist eine großartige Möglichkeit, die Standardeinstellungen Ihres Editors auf Ihrem VCS
Cyber ​​Oliveira
0

Am Ende der Datei verwende ich:

# vim: ts=2 sw=2 sts=2 sr noet st ai si

Zum Beispiel Dockerfile:

FROM centos-7
RUN ...
CMD ...

# vim: ts=2 sw=2 sts=2 sr noet st ai si

Wenn Sie nur den Einzug behalten möchten, verwenden Sie # vim: st ai si

Eduardo Cuomo
quelle