%20Puffer%20mit%20den%20%E2%80%9ENachrichten%E2%80%9C%20von%20Vim%20erhalten%3F.png)
Wenn ich also einen Fehler von einem Plugin erhalte, möchte ich diesen Fehler auf GitHub oder Ähnlichem melden können.
Leider kann es nicht mit der Maus ausgewählt werden. Und nachdem es angezeigt wurde und ich aufgefordert wurde, die Eingabetaste zu drücken, scheint es für immer verschwunden zu sein.
Ich habe festgestellt, dass ich die Fehler verursachen kannwiedermit
:messages
oder:3messages
oder ähnlich; sie erscheinen aber auf die gleiche Weise: nicht auswählbar, nutzlos.Ein weiterer Staplerfragteeine ähnliche Frage, die den nützlichen Befehl ergab
:let @+=v:errmsg
— aber das erfasst nur dieallerletzteZeile der Nachrichten; viele Fehler, die ich sehe, bestehen ausmehrereZeilen, die ich alle auswählen möchte.
Bitte helfen Sie mir entweder A. ein :messages
Fenster in einen Puffer umzuwandeln, so dass ich die normale, ebenso visuelle Auswahl verwenden kann, um zu kopieren, was ich außerhalb von Vim melden möchte, oder zumindest B. etwas zu konstruieren, das ich in meinen einfügen kann und .vimrc
das kopiertalleder Zeilen des aktuellsten Fehlers in meine Zwischenablage.
Danke!(=
Antwort1
Die Antwort von Heptite ist eine gute Möglichkeit, dies mit integrierten Funktionen zu tun. Wenn Sie mit der Verwendung eines Plugins einverstanden sind, meinepuffernPlugin automatisiert den Prozess ein wenig. Sie können einfach Folgendes tun:
:Bufferize messages
Um einen Vorschaupuffer mit dem Inhalt der Ausgabe dieses Befehls zu erhalten.
Nebenbei bemerkt bin ich überrascht, dass die :messages
Ausgabe nicht auswählbar ist. Ich vermute, Sie verwenden Vim mit einer GUI? Mit dem Terminal Vim können Sie den Inhalt auswählen und dann mit der mittleren Maustaste klicken und einfügen.
Antwort2
Versuche dies:
:put = execute('messages')
Erläuterung:
:put {register}
setzt den Inhalt des Registers an die Cursorposition (wiep
im Normalmodus)execute('messages')
ist eine Vimscript-Funktion, die einen Ex-Befehl ausführt und dessen Ausgabe erfasst={vimscript expression}
ist das Ausdrucksregister, dessen Wert das Ergebnis des Vimscript-Ausdrucks ist
Das Obige erfasst also die Ausgabe des :messages
Befehls im Ausdrucksregister und platziert den Inhalt des Ausdrucksregisters an der Cursorposition.
Sehen :h quote=
, :h :put
,:h execute()
Antwort3
Versuche dies:
:redir > messages.txt
:messages
:redir END
:e messages.txt
Sie können die Ausgabe auf dem Display unterdrücken und gleichzeitig die ausgegebenen Nachrichten erfassen, indem Sie :messages
zu ändern :silent messages
.