Frage Tab-Taste == 4 Leerzeichen und automatischer Einzug nach geschweiften Klammern in Vim


Wie mache ich vi-Vim Verwenden Sie nie Tabs (Konvertieren von Leerzeichen in Tabs, schlecht!), macht die Tab-Taste == 4 Leerzeichen und Code automatisch nach geschweiften Klammern Blöcke wie einrücken Emacs tut das?

Wie kann ich diese Einstellungen speichern, damit ich sie nie wieder eingeben muss?

Ich habe andere Fragen dazu gesehen, aber es scheint immer ein bisschen von dem zu sein, was ich will.


1054
2017-10-24 17:41


Ursprung


Antworten:


Wie in einigen Antworten unten erwähnt wurde, ist die bevorzugte Methode jetzt nicht, smartindent zu verwenden, sondern stattdessen das folgende (in Ihrem .vimrc):

filetype plugin indent on
" show existing tab with 4 spaces width
set tabstop=4
" when indenting with '>', use 4 spaces width
set shiftwidth=4
" On pressing tab, insert 4 spaces
set expandtab

In deinem .vimrc: Datei:

set smartindent
set tabstop=4
set shiftwidth=4
set expandtab

Die Hilfe-Dateien brauchen etwas Zeit, um sich daran zu gewöhnen, aber je mehr Sie lesen, desto besser wird Vim:

:help smartindent

Noch besser: Sie können diese Einstellungen für die Portabilität in Ihre Quelle einbetten:

:help auto-setting

So sehen Sie Ihre aktuellen Einstellungen:

:set all

Wie Grauwh weist in den Kommentaren darauf hin, dass smartindent durch cindent ersetzt wurde, das "schlauer arbeitet", obwohl immer noch hauptsächlich für Sprachen mit C-ähnlicher Syntax:

:help C-indenting


1573
2017-10-24 17:45



Related, wenn Sie eine Datei öffnen, die Tabs und Leerzeichen verwendet, vorausgesetzt, Sie haben

set expandtab ts=4 sw=4 ai

Sie können alle Registerkarten durch Leerzeichen in der gesamten Datei ersetzen

:%retab

199
2017-11-27 05:42



Der beste Weg, einen Dateityp-spezifischen Einzug zu erhalten, ist die Verwendung filetype plugin indent on in deinem vimrc. Dann können Sie Dinge wie angeben set sw=4 sts=4 et B. in .vim / ftplugin / c.vim, ohne dass diese für alle zu bearbeitenden Dateien global gemacht werden müssen und andere Nicht-C-Typ-Syntaxen ebenfalls korrekt eingerückt werden (lispelt sogar).


83
2018-01-04 21:09



Um in den meisten Dateien Registerkarten mit 4 Leerzeichen, in Makefiles echte 8-Bit-Tab-Zeichen und in verschiedenen Dateien, einschließlich C / C ++, automatisch einzurücken, legen Sie dies in Ihre ~/.vimrc Datei:

" Only do this part when compiled with support for autocommands.
if has("autocmd")
    " Use filetype detection and file-based automatic indenting.
    filetype plugin indent on

    " Use actual tab chars in Makefiles.
    autocmd FileType make set tabstop=8 shiftwidth=8 softtabstop=0 noexpandtab
endif

" For everything else, use a tab width of 4 space chars.
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.

42
2018-01-24 02:42



Auf vielen Linux-Systemen, wie Ubuntu, der .vimrc Die Datei existiert standardmäßig nicht. Daher wird empfohlen, sie zuerst zu erstellen.

Benutze nicht die .viminfo Datei, die im Home-Verzeichnis existiert. Es wird für einen anderen Zweck verwendet.

Schritt 1: Gehen Sie zu Ihrem Home-Verzeichnis

cd ~

Schritt 2: Erstellen Sie die Datei

vim .vimrc

Schritt 3: Fügen Sie die oben angegebene Konfiguration hinzu

filetype plugin indent on
set tabstop=4
set shiftwidth=4
set expandtab

Schritt 3: Datei speichern, indem Sie drücken Verschiebung + ZZ.


39
2017-08-04 13:26



Der empfohlene Weg besteht darin, den Dateityp-basierten Einzug zu verwenden und nur dann smartindent und cindent zu verwenden, wenn dies nicht ausreicht.

Fügen Sie Ihrer .vimrc Folgendes hinzu:

set expandtab
set shiftwidth=2
set softtabstop=2
filetype plugin indent on

Hoffe es hilft als eine andere Antwort.


26
2017-11-18 19:08



Von dem VIM Wiki:

:set tabstop=4
:set shiftwidth=4
:set expandtab

9
2017-10-08 01:26



editiere deine ~ / .vimrc

$ vim ~/.vimrc

füge folgende Zeilen hinzu:

set tabstop=4
set shiftwidth=4
set softtabstop=4
set expandtab

9
2017-10-24 17:48



Der automatische Einzug basiert auf dem aktuellen Syntaxmodus. Ich weiß, wenn Sie Foo.java bearbeiten, dann geben Sie ein { und schlagen Eingeben Zieht die folgende Zeile ein.

Wie für Tabs gibt es zwei Einstellungen. Geben Sie in Vim einen Doppelpunkt und dann "set tabstop = 4" ein, wodurch die Registerkarten als vier Leerzeichen angezeigt werden. Drücken Sie den Doppelpunkt erneut und geben Sie "set expandtab" ein, wodurch Leerzeichen für Registerkarten eingefügt werden.

Sie können diese Einstellungen in einem .vimrc (oder _vimrc unter Windows) in Ihrem Home-Verzeichnis speichern, so dass Sie sie nur einmal eingeben müssen.


7