webentwicklung-frage-antwort-db.com.de

Festlegen der Vim-Whitespace-Einstellungen nach Dateityp

Bei meiner Arbeit muss ich dem Einrückungsstil des Hauses folgen, der wie folgt lautet:

  • 2 Leerzeichen bei der Codierung von HTML und Ruby
  • tabs beim Codieren von Javascript, mit tabwidth = 4 empfohlen

Was ist der beste Weg, um verschiedene Whitespace-Einstellungen pro Dateityp festzulegen?

143
nelstrom

es gibt viele Möglichkeiten, aber hier ist eine einfache, leicht verständliche Möglichkeit. Fügen Sie diese Zeilen zu Ihrem ~/.vimrc hinzu:

autocmd FileType html setlocal ts=2 sts=2 sw=2
autocmd FileType Ruby setlocal ts=2 sts=2 sw=2
autocmd FileType javascript setlocal ts=4 sts=4 sw=4
228
Peter

Peters Antwort ist klar, aber leider stimmen die Optionen nicht. Sie müssen stattdessen die folgenden Optionen verwenden:

autocmd Filetype html setlocal ts=2 sw=2 expandtab
autocmd Filetype Ruby setlocal ts=2 sw=2 expandtab
autocmd Filetype javascript setlocal ts=4 sw=4 sts=0 noexpandtab

Beachten Sie auch:

  • Mit :set list Können Sie vim Tabulatorzeichen anzeigen lassen.
  • Wenn Sie die Tabulator-/Leerzeichenoptionen richtig eingestellt haben, können Sie vim veranlassen, die Datei mit dem Befehl :retab! Zu reparieren (Leerzeichen durch Tabulatoren ersetzen oder umgekehrt).
80
too much php

+1 auf Peters Antwort, aber Vim bietet auch eine andere Lösung. Wenn Sie etwas Komplizierteres als ein einzelnes setlocal tun möchten, beispielsweise eine ganze Reihe von Optionen, Befehlen und Zuordnungen auf einmal einrichten möchten, hilft Ihnen die Funktion des Dateityp-Plugins von vim.

Sie müssen filetype plugin on Oder filetype plugin indent on In Ihrem .vimrc Haben und dann ein Plugin für z. Ruby Sie können ~/.vim/ftplugin/Ruby.vim Erstellen. Technisch können Sie alle Befehle verwenden, die Sie hier mögen, um ausgeführt zu werden, wenn eine Ruby Datei geladen wird, Zu den empfohlenen gehören jedoch setlocal, map <buffer>, command -buffer und das Definieren von Funktionen.Viele weitere Informationen finden Sie im Benutzerhandbuch zu :help 41.11, andernfalls lesen Sie :help usr_40 und :help usr_41.

33
hobbs

Es gibt auch ein Nice vim-Skript: DetectIndent , das versucht, den Einzug einer Datei zu erkennen, die Sie öffnen. Es ist sehr praktisch, wenn Sie mit vielen Dateien mit unterschiedlichen Codierungsstilen arbeiten.

In meinem . Vimrc verwende ich einen Autobefehl:

:autocmd BufReadPost * :DetectIndent 
10

Um bei jedem Drücken der Tabulatortaste Leerzeichen einzufügen, aktivieren Sie die Option 'expandtab':

:set expandtab

Der nächste Schritt besteht darin, die Anzahl der Leerzeichen zu steuern, die beim Drücken der Tabulatortaste eingefügt werden. Aktivieren Sie die Option 'Tabstop'. Um beispielsweise zwei Leerzeichen für eine Registerkarte einzufügen, verwenden Sie:

:set tabstop=2

ref: http://vim.wikia.com/wiki/Converting_tabs_to_spaces

0
bartoindahouse