Wann soll das Verzeichnis after / verwendet werden?

13

Ich verstehe, dass es der Ort ist, an dem Dinge platziert werden sollten, die das letzte Wort haben und nicht von einer anderen Quelle überschrieben werden sollten, aber ich bin mir nicht sicher, wie ich entscheiden soll, wann etwas eingefügt werden soll, ~/.vim/after/ftplugin/anstatt ~/.vim/ftplugin/.

Verwenden ~/.vim/ftplugin/und verschieben Leute Dinge im Allgemeinen nur, ~/.vim/after/ftplugin/wenn sie unerwünschtes Verhalten beobachten, oder legen sie alles einfach sofort in das Nachverzeichnis?

ivan
quelle

Antworten:

19

Wenn Sie ein eigenes Plugin hinzufügen oder ein Standard-Plugin durch ein eigenes ersetzen möchten, wird es im Allgemeinen in ~/.vim/pluginoder eingegeben ~/.vim/ftplugin. Wenn Sie stattdessen die Funktionalität eines vorhandenen Plugins beibehalten, aber ergänzen oder nur einige von ihm vorgenommene Einstellungen ändern möchten, wird Ihr Plugin in ~/.vim/after/pluginoder angezeigt ~/.vim/after/ftplugin.

Garyjohn
quelle
Aus irgendeinem Grund habe ich immer angenommen, dass Vim den Laufzeitpfad durchsucht und jede Datei, die den Suchkriterien entspricht, ausgewählt hat, anstatt nur die erste gefundene Übereinstimmung zu ermitteln. Es hört sich so an, als würde das After-Directory diese Art von "zusätzlich" behandeln, aber vielleicht wird alles andere eher wie die Unix PATH-Variable behandelt, bei der das erste Match gewinnt?
Ivan
4
Vim tut Quelle jede Datei , die die Suchkriterien entsprechen, aber richtig geschriebener Plugins hat einen Test in der Nähe ihres oberen Rand des Formulars, if exists("g:loaded_<plugin name>") finish endif let g:loaded_<plugin name> = 1. Das zuerst geladene Plugin "gewinnt" und nachfolgende gleichnamige Plugins werden vorzeitig über den finishBefehl beendet. So ~/.vim/pluginkann beispielsweise ein Plugin in Ihrem Verzeichnis verhindern, dass ein Plugin $VIMRUNTIME/pluginvollständig geladen wird. Dieser Test ist nicht in afterPlugin-Dateien enthalten.
Garyjohn
Ok, ich glaube ich verstehe es jetzt. Da alle passenden Dateien werden bezogen wird, verwenden Sie einen finishWach Klausel , wenn Sie nur das erste Spiel laden möchten, und verwenden Sie die After-Verzeichnis ( ohne eine finishWache - Klausel) , wenn Sie eine Einstellung außer Kraft setzen müssen , die von einer der anderen betroffen ist Quellen.
Ivan
1

Wenn Vanilla Vim einen bestimmten Dateityp erkennt und Sie das Versandverhalten ändern möchten, werden Ihre eigenen Einstellungen vorgenommen ~/.vim/after/ftplugin/

Naumann
quelle