Wie kann ich feststellen, welche Syntaxdatei verwendet wird?

50

Vim hebt meine Datei auf witzige Weise in der Syntax hervor, und ich möchte wissen, welche Syntaxdatei für dieses Verhalten verantwortlich ist. Wie finde ich heraus, welche Syntaxdateien vim geladen hat?

Edward Z. Yang
quelle

Antworten:

39

Um herauszufinden, welche Dateien Vim tatsächlich geladen hat, führen Sie Folgendes aus

:scriptnames
garyjohn
quelle
Das ist nützlich. Nun, hier ist etwas, bei dem ich mir nicht sicher bin: Wenn eine Syntaxdatei in dieser Liste angezeigt wird, ist garantiert, dass die Syntaxdatei "aktiv" ist? Ich kann hier einige Syntaxdateien sehen.
Edward Z. Yang
7
Im Allgemeinen ist nur die zuletzt aufgeführte Option "aktiv", und möglicherweise ist dies auch nicht der Fall, wenn Sie die Syntaxhervorhebung deaktiviert haben. Um die aktuell gültige Syntax anzuzeigen, führen Sie Folgendes aus :echo b:current_syntax. Um die derzeit gültigen Syntaxelemente anzuzeigen, führen Sie die Schritte aus, die Ingo vorgeschlagen hat :syntax list. Letzteres kann hilfreich sein, wenn, wie Ingo bemerkt, Syntaxelemente aus mehr als einer Syntaxdatei aktiv sind.
Garyjohn
1
Unter Mac OS XI wurde das geändert /usr/share/vim/vim73/filetype.vim. Nachdem ich den obigen Befehl verwendet hatte, stellte ich fest, dass MacVims Version unter verwendet wurde ~/Applications/MacVim.app/Contents/Resources/vim/runtime/filetype.vim. Wenn Sie MacVim installiert haben, stellen Sie sicher, dass Sie die richtige Datei ändern.
18.
1
Möglicherweise sind zwei Syntaxdateien mit demselben Namen geladen. Zum Beispiel wird vim mit einer Syntaxhervorhebung für ColdFusion ( /usr/share/vim/vim81/syntax/cf.vimfür mich) ausgeliefert. Ich habe eine benutzerdefinierte cf.vim installiert, da die Standardversion datiert ist. :scriptnameszeigt beide Dateien. Der Standardwert ist in der Skriptliste niedriger. Ersteres wird jedoch verwendet. Wenn Sie sehen /usr/share/vim/vim81/syntax/cf.vim, gibt es eine Wache if exists("b:current_syntax") finish endif. Also, in meinem Fall war das scriptnameshilfreich, aber ich musste etwas tiefer graben.
Avejidah
31

Die Syntax für den aktuellen Puffer kann über abgefragt werden

:setlocal syntax?

Es entspricht normalerweise (aber nicht unbedingt) dem Dateityp des Puffers ( :setlocal filetype?).

Für einen tieferen Blick

:syntax list

zeigt alle Syntaxdefinitionen (einige Syntaxen (can) umfassen Syntaxen die andere Sprache, zum Beispiel javahat htmlfür den JavaDoc Kommentar Markup).

Ingo Karkat
quelle
Dies ist, wonach ich gesucht habe, basierend auf dem Titel der OP-Frage. Natürlich stellt OP in der Beschreibung klar, dass er nach der eigentlichen Syntaxdatei sucht, aber ich schätze es, dass Sie dies hier belassen, da es eine der ersten Antworten in Suchmaschinen ist.
6.
4

Sie können anzeigen, welche Dateitypen derzeit und von verwendet werden

:verbose set ft ?

Das Plugin, das den Dateityp verwaltet, befindet sich höchstwahrscheinlich unter

:e $VIMRUNTIME\ftplugin
Lieven Keersmaekers
quelle