it-swarm.com.de

Ändern des Vim-Einrückungsverhaltens nach Dateityp

Könnte mir jemand in einfachen Worten erklären, wie ich am einfachsten das Einrückverhalten von Vim basierend auf dem Dateityp ändern kann? Wenn ich beispielsweise eine Python -Datei öffne, sollte sie mit zwei Leerzeichen eingerückt werden. Wenn ich jedoch ein Powershell-Skript öffne, sollten vier Leerzeichen verwendet werden.

358
EBGreen

Du kannst hinzufügen .vim Dateien, die ausgeführt werden sollen, wenn vim zu einem bestimmten Dateityp wechselt.

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

setlocal shiftwidth=2
setlocal tabstop=2

Dies führt dazu, dass vim Tabulatoren mit einer Breite von 2 Zeichen zum Einrücken verwendet (die Option noexpandtab ist an anderer Stelle in meiner Konfiguration global festgelegt).

Dies wird hier beschrieben: http://vimdoc.sourceforge.net/htmldoc/usr_05.html#05.4 , scrollen Sie nach unten zum Abschnitt über Dateityp-Plugins.

288
SpoonMeiser

Verwenden Sie ftplugins oder autocommands, um Optionen festzulegen.

ftplugin

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

setlocal shiftwidth=2 softtabstop=2 expandtab

Und vergiss nicht, sie in ~/.vimrc Einzuschalten:

filetype plugin indent on

(:h ftplugin Für weitere Informationen)

autocommand

In ~/.vimrc:

autocmd FileType python setlocal shiftwidth=2 softtabstop=2 expandtab

Sie können jeden der langen Befehle oder Einstellungen durch ihre 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 zu lernen. Viele Leute wissen nichts über softtabstop.

163
graywh

bearbeite dein ~/.vimrc, und fügen Sie verschiedene Dateitypen für verschiedene Einzüge hinzu, z. Ich will html/rb Einzug für 2 Leerzeichen und js/coffee Dateien werden für 4 Leerzeichen eingerückt:

" 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: Einstellen der Vim-Whitespace-Einstellungen nach Dateityp

77

Fügen Sie autocmd-Befehle basierend auf dem Dateisuffix in Ihre ~/.vimrc ein

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 =

58
Paul Tomblin

Normalerweise arbeite ich mit expandtab set, aber das ist schlecht für Makefiles. Ich habe kürzlich hinzugefügt:

:autocmd FileType make set noexpandtab

bis zum Ende meiner .vimrc-Datei und erkennt Makefile, Makefile und * .mk als Makefiles und erweitert keine Tabulatoren. Vermutlich können Sie dies erweitern.

23

Ich bin immer wieder erstaunt über Leute, die die Größe von Registerkarten für verschiedene Dateitypen ändern. Was um alles in der Welt machen Sie, wenn Sie eine Datei mit weniger betrachten?

Persönlich verwende 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
14
Nello

Dies ist vielleicht den meisten von uns bekannt, aber trotzdem (ich war das erste Mal verwirrt): :set et (:set expandtabs) ändert nicht die bereits in der Datei vorhandenen Tabs, man muss :retab. Zum Beispiel:

:set et
:retab

und die Registerkarten in der Datei werden durch genügend Leerzeichen ersetzt. Um Tabs zurück zu haben, machen Sie einfach Folgendes:

:set noet
:retab
6
Juan Lanus

Heute könnten Sie versuchen editorconfig , es gibt auch ein vim plugin dafür. Auf diese Weise können Sie nicht nur die Einrückungsgröße in vim ändern, sondern auch in vielen anderen Editoren konsistente Codierungsstile beibehalten.

Unten sehen Sie eine einfache Editor-Konfiguration. Wie Sie sehen können, haben die python Dateien 4 Leerzeichen zum Einrücken und die Mops-Vorlagendateien nur 2.

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

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

Sie können die Einrückung von Vim problemlos mit dem Einrückungs-Plugin oder manuell mit den Einstellungen konfigurieren. Ich empfehle jedoch die Verwendung eines python Skriptes mit dem Namen Vindect , das die relevanten Einstellungen automatisch für Sie festlegt Wenn Sie eine python Datei öffnen. Verwenden Sie diesen Tipp , um Vindect noch effektiver zu machen. Als ich anfing, python Dateien zu bearbeiten Es wurde von anderen mit verschiedenen Einrückungsstilen (Tabulator vs Leerzeichen und Anzahl der Leerzeichen) erstellt und war unglaublich frustrierend, aber Vindect zusammen mit diese Einrückungsdatei

Auch empfehlen:

3
haridsv

Ich benutze ein Dienstprogramm, das ich in C geschrieben habe, mit dem Namen autotab . Es analysiert die ersten paar tausend Zeilen einer Datei, die Sie laden, und ermittelt Werte für die Vim-Parameter shiftwidth, tabstop und expandtab.

Dies wird kompiliert mit zum Beispiel gcc -O autotab.c -o autotab. Anweisungen zur Integration in Vim finden Sie in der Kommentarkopfzeile oben.

Autotab ist ziemlich clever, kann aber von Zeit zu Zeit verwirrt werden, insbesondere dadurch, dass es mit verschiedenen Einrückungsstilen inkonsistent gewartet wurde.

Wenn in einer Datei offensichtlich Tabulatoren oder eine Kombination aus Tabulatoren und Leerzeichen zum Einrücken verwendet werden, ermittelt Autotab die Größe der Tabulatoren, indem Faktoren wie die Ausrichtung interner Elemente über aufeinanderfolgende Zeilen wie Kommentare berücksichtigt werden.

Es funktioniert für eine Vielzahl von Programmiersprachen und ist für "Out-of-Band" -Elemente gedacht, die Einrückungsinkremente wie C-Vorverarbeitungsdirektiven, C-Anweisungsbezeichnungen und die offensichtlichen Leerzeilen nicht berücksichtigen.

1
Kaz