Frage

Könnte mir jemand erklären in einfachen Worten die einfachste Weg, um das Einrücken Verhalten von Vim basierend auf dem Dateityp zu ändern? Zum Beispiel, wenn ich eine Python-Datei öffnen, sollte es mit zwei Leerzeichen einrücken, aber wenn ich einen Powershell-Skript öffnen sollte es 4 Leerzeichen verwenden.

War es hilfreich?

Lösung

Sie .vim Dateien hinzufügen können, wenn vim Schalter auf einen bestimmten Dateityp ausgeführt werden.

Zum Beispiel, ich habe eine Datei ~/.vim/after/ftplugin/html.vim mit folgendem Inhalt:

setlocal shiftwidth=2
setlocal tabstop=2

Welche Ursachen vim mit einer Breite von 2 Zeichen Registerkarten zu verwenden für Einrücken (die noexpandtab Option global an anderer Stelle in meiner Konfiguration festgelegt).

Dies ist hier beschrieben: http://vimdoc.sourceforge.net/htmldoc/usr_05 .html # 05.4 , blättern Sie zu dem Abschnitt über Dateityp-Plugins nach unten.

Andere Tipps

Mit ftplugins oder automatischen Befehlen Optionen einzustellen.

ftplugin

In ~/.vim/ftplugin/python.vim:

setlocal shiftwidth=2 softtabstop=2 expandtab

Und vergessen Sie nicht, sie in ~/.vimrc einzuschalten:

filetype plugin indent on

(:h ftplugin für weitere Informationen)

automatischer Befehl

In ~/.vimrc:

autocmd FileType python setlocal shiftwidth=2 softtabstop=2 expandtab

Sie können eine der langen Befehle oder Einstellungen mit ihren kurzen Versionen ersetzen:
autocmd : au
setlocal : setl
shiftwidth : sw
tabstop : ts
softtabstop : sts
expandtab : et

Ich würde auch vorschlagen, den Unterschied zwischen tabstop und softtabstop lernen. Viele Menschen wissen nicht, über softtabstop.

bearbeiten Sie Ihre ~/.vimrc, und fügen Sie verschiedene Dateitypen für unterschiedliche Einzüge, z. Ich möchte html/rb Einzug für 2 Leerzeichen und js/coffee Dateien Einzug für 4 Felder:

" by default, the indent is 2 spaces. 
set shiftwidth=2
set softtabstop=2
set tabstop=2

" for html/rb files, 2 spaces
autocmd Filetype html setlocal ts=2 sw=2 expandtab
autocmd Filetype ruby setlocal ts=2 sw=2 expandtab

" for js/coffee/jade files, 4 spaces
autocmd Filetype javascript setlocal ts=4 sw=4 sts=0 expandtab
autocmd Filetype coffeescript setlocal ts=4 sw=4 sts=0 expandtab
autocmd Filetype jade setlocal ts=4 sw=4 sts=0 expandtab

siehe: Einstellung Vim Leerzeichen Präferenzen nach Dateityp

Setzen Sie autocmd Befehle auf der Grundlage der Dateierweiterung in Ihrem ~ / .vimrc

autocmd BufRead,BufNewFile   *.c,*.h,*.java set noic cin noexpandtab
autocmd BufRead,BufNewFile   *.pl syntax on

Die Befehle, die Sie suchen sind wahrscheinlich ts = und sw =

Ich arbeite in der Regel mit expandtab Satz, aber das ist schlecht für Makefiles. Ich habe vor kurzem:

:autocmd FileType make set noexpandtab

bis zum Ende meiner .vimrc Datei und es erkennt Makefile, Make-Datei, und * .mk als Makefiles und nicht Registerkarten erweitern. Vermutlich können Sie diese erweitern.

Ich bin immer von Menschen begeistert, die die Größe der Registerkarten für verschiedene Dateitypen ändern. Was auf der Erde tun Sie, wenn Sie in einer Datei unter Verwendung von weniger aus?

Persönlich benutze ich diese Einstellungen in .vimrc:

autocmd FileType python set tabstop=8|set shiftwidth=2|set expandtab
autocmd FileType ruby set tabstop=8|set shiftwidth=2|set expandtab

Dies könnte durch die meisten von uns bekannt sein, aber trotzdem (ich war mein erstes Mal verwirrt): Doing :set et (:set expandtabs) nicht die Zungen bereits ändern in der Datei existiert, hat eine :retab zu tun. Zum Beispiel:

:set et
:retab

und die Reiter in der Datei werden durch genügend Leerzeichen ersetzt. Um Tabs wieder einfach tun:

:set noet
:retab

Heute könnten Sie versuchen, editorconfig , gibt es auch eine vim Plugin für sie. Damit sind Sie in der Lage nicht nur Eindrückungsgröße in vim ändern, sondern auch in vielen anderen Editoren, halten konsistente Codierung Stile.

Hier ist eine einfache editorconfig, wie Sie die Python-Dateien sehen können, haben vier Räume für Einzüge und Mops Vorlagendateien werden nur 2 haben

# 4 space indentation for python files
[*.py]
indent_style = space
indent_size = 4

# 2 space indentation for pug templates
[*.pug]
indent_size = 2

Während Sie Vims Einbuchtung konfigurieren können ganz gut den Einzug Plugin oder manuell die Einstellungen verwenden, empfehle ich ein Python-Skript namens Vindect , die automatisch die entsprechenden Einstellungen für Sie setzt, wenn Sie ein python-Datei öffnen. Verwenden Sie dieser Spitze zu machen mit Vindect noch effektiver. Als ich zuerst von anderen mit verschiedenen Einrückungsstile (Tab vs Raum und Anzahl) erstellten Dateien Bearbeitung Python begann, war es unglaublich frustrierend. Aber Vindect zusammen mit dieser indent Datei

Auch empfehlen:

Ich benutze ein Dienstprogramm, das ich in C geschrieben genannt autotab . Er analysiert die ersten paar tausend Zeilen einer Datei, die Sie Werte für die Parameter Vim shiftwidth laden und bestimmt, tabstop und expandtab.

Dies ist mit kompiliert, zum Beispiel gcc -O autotab.c -o autotab. Anweisungen für die Integration mit Vim sind im Kommentarkopf an der Spitze.

Autotab ist ziemlich clever, kann aber von Zeit zu Zeit verwirrt, insbesondere durch die beibehalten wurden inkonsequent unterschiedliche Einrückungsstile verwendet wird.

Wenn eine Datei offenbar verwendet Tabs oder eine Kombination von Tabulatoren und Leerzeichen, für Vertiefung, wird Autotab herauszufinden, welche Registerkarte Größe wird durch Berücksichtigung von Faktoren wie Ausrichtung der internen Elemente in aufeinanderfolgenden Zeilen verwendet werden, wie zum Beispiel Kommentare.

Es funktioniert für eine Vielzahl von Programmiersprachen und verzeiht für „out-of-Band“ Elemente, die nicht gehorchen Einbuchtung Schritte, wie C Vorverarbeitung Richtlinien, C Erklärung Etikett, nicht die offensichtlichen Leerzeilen zu nennen.

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