Die Befehle echon
und echohl
sind sehr nützlich für die Ausgabe von Textzeilen mit mehreren Hervorhebungsgruppen innerhalb derselben Zeile. Dies kann zum Beispiel verwendet werden, um nette Statusmeldungen für Plugins zu erstellen.
In einem Plugin, an dem ich arbeite, verwende ich genau diese Methode zur Ausgabe farbiger Statusmeldungen. Manchmal möchte ich diese Nachrichten jedoch auf message-history
ähnliche Weise wie bei hinzufügen echomsg
. Ist das irgendwie möglich? Ich glaube nicht, dass es dafür eine intrinsische Funktionalität gibt, aber vielleicht könnte man die Funktionalität mit vim script hinzufügen?
statusline
highlight
Karl Yngve Lervåg
quelle
quelle
echon
undechomsg
arbeiten Sie gleich, außer dass dem Verlaufechomsg
Nachrichten hinzugefügt werden? Sie erwähnt : „Ich habe jetzt seit einiger Zeit versucht , “ , sollten Sie uns sagen , was genau Sie versucht haben, was Sie passieren zu erwarten, und was hat geschehen. Auf diese Weise können wir versuchen, das Problem zu beheben (falls vorhanden) oder ein Missverständnis zu erklären, das Sie möglicherweise haben.echon
Funktionalität mit dem Hinzufügen von Nachrichten zum Verlauf kombinieren möchte .Antworten:
Dies ist derzeit in Vim nicht möglich.
Intern
:echomsg
wird implementiert , wie:execute
, mit der Ausnahme , dass , wenn aufgerufen , wie:echomsg
das Ergebnis der Ausführung mit dem Attribute der letzten angezeigt:echohl
und gespeichert zu der Nachrichtenlistesrc/eval.c
(Referenzfunktionenex_echohl
undex_execute
), das ist , wie Sie jede mögliche Farbe auf einer gespeicherten Nachricht erhalten.Der tatsächliche Nachrichtenverlauf ist eine Sammlung (verknüpfte Liste) von Zeichenfolgen mit Attributen und wird in gespeichert und abgerufen
src/message.c
. Jede Zeichenfolge ist eine Nachricht (bestehend aus einer oder mehreren Zeilen), und das Attribut bestimmt unter anderem die Markierungsgruppe, die für die Anzeige verwendet werden soll. Aus diesem Grund muss jede Nachricht als Ganzes hervorgehoben werden (einzelne Hervorhebungsgruppe), und es darf sich nicht mehr als eine Nachricht in derselben Zeile befinden.src/message.c
(Referenzstrukturmsg_hist
und Funktionex_messages
)Ich kann das nicht umgehen (ich dachte daran, eine Nachricht zu verwenden
:echohl
und:echon
anzuzeigen, aber eine einfache Nachricht im Verlauf zu speichern. Leider scheint die Möglichkeit, dem Verlauf hinzuzufügen, ohne auch die Nachricht anzuzeigen, keinem Ex ausgesetzt zu sein -Befehle), ohne den Vim-Quellcode zu ändern.quelle