Tab-Taste == 4 Räume und auto-indent nach geschweiften Klammern in Vim
-
04-07-2019 - |
Frage
Wie mache ich vi - Vim nie Tabs verwenden (Leerzeichen zu Tabulatoren konvertieren, schlecht!), macht die Tabulatortaste == 4 Räume und automatisch indent Code nach geschweiften Klammer Blöcke wie Emacs tut?
Auch, wie speichere ich diese Einstellungen, damit ich nie Eingang haben sie wieder?
Ich habe andere Fragen im Zusammenhang mit diesem zu sehen, aber es scheint immer ein wenig zu sein, weg von dem, was ich will.
Lösung
Wie bereits unten in ein paar Antworten darauf hingewiesen, ist die bevorzugte Methode jetzt NICHT smartindent zu verwenden, sondern verwenden Sie die folgende (in der 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 Ihrer .vimrc: Datei:
set smartindent
set tabstop=4
set shiftwidth=4
set expandtab
Die Hilfedateien nehmen ein wenig Zeit zu gewöhnen, aber je mehr Sie lesen, desto besser Vim wird:
:help smartindent
Noch besser ist, können Sie diese Einstellungen in Ihrer Quelle für die Portabilität einbetten:
:help auto-setting
Um Ihre aktuellen Einstellungen finden Sie unter:
:set all
Wie graywh Punkte in den Kommentaren aus, smartindent wurde von cindent ersetzt, die „mehr geschickt Works“, obwohl nach wie vor vor allem für Sprachen mit C-ähnlicher Syntax:
:help C-indenting
Andere Tipps
Verwandte, wenn Sie eine Datei öffnen, die beide Tabs und Leerzeichen verwendet, vorausgesetzt, Sie haben
set expandtab ts=4 sw=4 ai
Sie können mit
alle Registerkarten mit Leerzeichen in der gesamten Datei ersetzen:%retab
Der beste Weg, Dateityp spezifische Vertiefung zu erhalten, ist filetype plugin indent on
in Ihrem vimrc zu verwenden. Dann können Sie Dinge wie set sw=4 sts=4 et
angeben in .vim / ftplugin / c.vim, zum Beispiel, ohne diejenigen, global zu müssen für alle Dateien und andere nicht-C-Typ-Syntaxen eingekerbten richtig, bekommen bearbeitet (auch lisps ) .
haben 4-Raum Registerkarten in den meisten Dateien, real 8 weite Register char in Makefiles, und automatisches Einrücken in verschiedenen Dateien einschließlich C / C ++, diese in deiner ~/.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.
Auf vielen Linux-Systemen wie Ubuntu, die .vimrc
Datei standardmäßig nicht vorhanden ist, so wird empfohlen, dass Sie es zuerst erstellen.
Sie nicht die .viminfo
Datei verwenden, die im Home-Verzeichnis vorhanden ist. Es wird für einen anderen Zweck verwendet wird.
Schritt 1: Gehen Sie zu Ihrem Home-Verzeichnis
cd ~
Schritt 2: Erstellen Sie die Datei
vim .vimrc
Schritt 3: Fügen Sie die Konfiguration über
angegebenfiletype plugin indent on
set tabstop=4
set shiftwidth=4
set expandtab
Schritt 3:. Speichern Sie die Datei, indem Sie Umschalttaste + ZZ
Die empfohlene Methode ist Dateityp auf Basis Einzug zu verwenden und nur smartindent und cindent verwenden, wenn das nicht ausreicht.
Fügen Sie den folgenden auf Ihre .vimrc
set expandtab
set shiftwidth=2
set softtabstop=2
filetype plugin indent on
Hoffe, dass es hilft, eine andere Antwort zu sein.
bearbeiten Sie Ihre ~ / .vimrc
$ vim ~/.vimrc
fügen folgende Zeilen ein:
set tabstop=4
set shiftwidth=4
set softtabstop=4
set expandtab
Von der VIM Wiki :
:set tabstop=4
:set shiftwidth=4
:set expandtab
Das Auto-indent wird auf dem aktuellen Syntax-Modus basiert. Ich weiß, dass, wenn Sie Foo.java bearbeiten, dann eine {
Eingabe und schlägt Enter Rückt die folgende Zeile.
Wie für Tabs gibt es zwei Einstellungen. Innerhalb Vim, gibt einen Doppelpunkt und dann „gesetzt tabstop = 4“, die die Laschen festgelegt wird, wie vier Leerzeichen anzuzeigen. Hit Doppelpunkt wieder und geben Sie „gesetzt expandtab“, die Räume für Registerkarten einfügen wird.
Sie können diese Einstellungen in einem .vimrc (oder _vimrc unter Windows) in Ihrem Home-Verzeichnis setzen, so haben sie nur einmal eingeben.