Wie kann man sprachspezifische Plugins in vim ändern?

872
Nosrettap

Ich schreibe ein SMLProgramm und versuche, die Größe der Einzüge zu ändern. Wenn ich meiner .vimrcDatei folgendes hinzufüge

set tabstop=8 set shiftwidth=8 set expandtab 

Es ist nicht in meinen tatsächlichen Dateien enthalten. Ich weiß das, weil, wenn ich eine .smlDatei öffne und tippe, :setdies das enthülltshiftwidth=2

Ich glaube, dass vim ein smlPlugin verwendet, weil meine .vimrcDatei (ähnlich wie die Standarddatei) Folgendes aufweist:

if has("autocmd")  " Enable file type detection. " Use the default filetype settings, so that mail gets 'tw' set to 72, " 'cindent' is on in C files, etc. " Also load indent files, to automatically do language-dependent indenting. filetype plugin indent on 

Zunächst einmal: Was bedeutet wenn "autocmd" bedeutet? Und zweitens: Wie kann ich die Standard-Einrückungsgröße für .sml-Dateien anpassen? Wo kann ich dieses Plugin finden (wenn dies tatsächlich der Fall ist), möchte ich die restlichen Funktionen des sml-Plugins behalten.

0

2 Antworten auf die Frage

2
romainl

autocmds sind spezielle Befehle, die bei bestimmten Ereignissen oder bestimmten Dateitypen ausgelöst werden. Sie werden häufig verwendet, um Optionen festzulegen oder Zuordnungen festzulegen, die in einer Sprache sinnvoll sind, in anderen jedoch nicht.

Da autocmds weit verbreitet für Dateityp-spezifische Dinge verwendet werden, if has("autocmd")ist ein Weg, um zu testen, ob die autocmdFunktion verfügbar ist und dass wir ohne viel Risiko weiter gehen können.

Der richtige Ort zum Speichern von dateitypspezifischen Einstellungen lautet ~/.vim/after/ftplugin/<filetype>.vim: Schreiben Sie Ihre Einstellungen also in:

~/.vim/after/ftplugin/sml.vim 

Diese Datei wird von Vim nach dem Standard-ftplugin bereitgestellt, sodass Sie beispielsweise nur den Wert von ändern tabstopund die anderen Einstellungen beibehalten können .

Betrachtet man jedoch meine eigene Vim-Laufzeit ( /usr/share/vim/vim73), sieht es so aus, als gäbe es kein ftplugin für sml. Dies bedeutet, dass ~/.vim/ftplugin/sml.vimdies eine ebenso richtige Standortwahl wäre. Wählen Sie den aus, den Sie mögen.

Fügen Sie in dieser Datei einfach die Zeilen hinzu, die Sie benötigen:

setlocal tabstop=8 setlocal shiftwidth=8 setlocal expandtab 

und du bist eingestellt.

0
Steven

Tippen :help autocmd die Eingabe erfahren Sie, was autocmd macht. Im Wesentlichen bedeutet dies, dass vim bei bestimmten Ereignissen automatisch Befehle ausführen kann.

Sie können eingeben, um :echo $VIMRUNTIMEzu sehen, wo vim systemweite Plugins speichert. Es wird wahrscheinlich ein Syntax-, Einrückungs- und ein FTP-Verzeichnis mit Dateien geben, die automatisch geladen werden, wenn ein passender Dateityp geladen wird.

Alternativ befinden sich diese Dateien in den gleichen Verzeichnissen unter Ihrem Verzeichnis ~ / .vim