Ich habe ein Plugin (ein Unite-Submodul), das extrem große Textdateien nach unten filtert, um ein hilfreiches 'Inhaltsverzeichnis' zu erstellen. Ich möchte dem Benutzer die Möglichkeit geben, viele der Filter zu aktivieren / deaktivieren ... und ich möchte, dass diese Einstellung bei jedem vim-Aufruf erhalten bleibt. (Sofortige Updates für gleichzeitige Sitzungen sind nicht unbedingt erforderlich.)
Gibt es einen in vim eingebauten Mechanismus dafür? Oder muss ich eine "Punktdatei" im $ HOME des Benutzers erstellen und verwalten? Oder gibt es eine akzeptierte Standardmethode, um damit umzugehen?
BEARBEITEN: Ich kann nicht einfach zulassen, dass der Benutzer eine globale Variable in der vimrc festlegt, da die Liste der Optionen derzeit mehrere hundert Einträge umfasst und die aktuelle Schnittstelle einfach "Typ d mit geöffnetem Index" ist, um sie aus der Liste zu entfernen .
quelle
viminfo
enthalten!
, und dann bestimmte Arten von g: Variablen persistent im viminfo Datei gespeichert werden, aber es ist nicht sinnvoll für die meisten Plugins viminfo auf Benutzer zu ändern.g:boolVariable
und dann den Benutzer angewiesen haben, es in seinem eigenen zu setzenvimrc
. Dann können Sie einfach die vom Benutzer festgelegten Optionen überprüfen und von dort aus arbeiten.Antworten:
Eine Möglichkeit, dies zu tun, besteht darin, dass Ihr Plugin eine globale Variable definiert, in der der Pfad zu dieser bestimmten Datei "Persistente Einstellungen / aktivierte Filter" gespeichert ist. Dies ähnelt der Funktionsweise verschiedener Plugins, die einige Werte zwischenspeichern müssen. Die Dokumentation könnte also so aussehen:
Mit der
$HOME
Variablen können Sie einen Standardwert für diesen Pfad erstellen und Ihre aktivierten Filter dort speichern. Die Benutzer können den Pfad ändern, indem sie die obige Variable in ihrem ändernvimrc
. Ich gehe davon aus, dass Sie beabsichtigen, einige Mittel (Funktionen, Befehle, Tastenzuordnungen) anzubieten, um verschiedene Filter im laufenden Betrieb zu aktivieren / deaktivieren, während Sie Ihr Plugin verwenden (Filter, an die Sie sich in dieser Datei erinnern), damit der Benutzer dies nicht muss direkt mit ihnen umgehen. Andernfalls ist es einfacher, den Benutzer eine globale Variable ändern zu lassen, in der eine Liste / ein Diktat usw. aktivierter Filter gespeichert istvimrc
(die durch Speichern der Variablen "bestehen bleiben" können ) und diese stattdessen zu lesen (gemäß dem obigen Kommentar von Tumbler41 ).Für weitere Details können Sie folgen, wie g: neocomplcache_temporary_dir im Shougo-
neocomplcache.vim
Plugin definiert und verwendet wird .Sie können aber auch leicht serialize (Speichern / Wiederherstellen) jede vim Variable (auch ein Wörterbuch) in dieser Datei durch so etwas wie mit dieser .
quelle