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.

War es hilfreich?

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

angegeben
filetype 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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top