In dieser Frage antwortete Gilles
Eine weitere Möglichkeit besteht darin,
tail -f
in einem Emacs- Shell-Puffer zu arbeiten und die Syntax-Farbfunktionen von Emacs zu verwenden.
Da ich ein vim-Benutzer bin, möchte ich dies mit vim tun , nicht mit Emacs .
Hat vim diese Funktion?
Antworten:
Sie können ein Multithread-Plugin schreiben, um die Puffer in Echtzeit in Python oder einem anderen von Vim unterstützten Skript mit Threads zu ändern.
Soweit ich weiß, funktioniert dies jedoch nur im Terminal. Zumindest in X11 stürzt die GUI-Version ab, wenn die GUI von einem anderen Thread geändert wird.
Wenn Sie andere Programme akzeptieren, können grc und ccze Streams einfärben .
quelle
Ich mag es kurz und ohne viel Hacking oder externe Skripte. Sie können diesen Oneliner bei Bedarf von ex (innerhalb von vim) ausführen (oder jeden Befehl in vimrc einfügen, wenn Protokolldateien geöffnet werden.)
und zusätzlich können Sie
:set syntax=logtalk
das Protokoll einfärben(Wenn Sie (fast) zum Ende der Datei springen möchten, verwenden Sie bei Feedkeys einfach "G" anstelle von "lh".)
Erläuterung:
autoread
: liest die Datei, wenn sie von außen geändert wird (aber sie funktioniert nicht von alleine, es gibt keinen internen Timer oder ähnliches. Sie liest die Datei nur, wenn vim eine Aktion ausführt, wie ein Befehl in ex:!
CursorHold * checktime
: Wenn der Cursor vom Benutzer für die in angegebene Zeitupdatetime
(standardmäßig 4000 Millisekunden) nicht bewegt wird,checktime
wird ausgeführt, wodurch nach Änderungen von außerhalb der Datei gesucht wirdcall feedkeys("lh")
: Der Cursor wird einmal nach rechts und hinten nach links bewegt. und dann passiert nichts (... was bedeutet, dassCursorHold
ausgelöst wird, was bedeutet , dass wir eine Schleife haben )Um das Scrollen bei der Verwendung zu stoppen
call feedkeys("G")
, führen Sie aus:set noautoread
- jetzt erkennt vim, dass die Datei geändert wurde, und fragt, ob man die Änderungen lesen möchte oder nicht.Ich mag die Idee, Protokolldateien in vim (anstelle von tail -f) anzusehen, z. B. wenn Sie in einer SSH-Sitzung ohne screen / tmux arbeiten. Außerdem können Sie bei Bedarf direkt aus der Protokolldatei kopieren oder die Ausgabe direkt speichern oder ... was auch immer Sie mit vim tun können :)
* aus dieser Antwort (unter Bezugnahme auf eine Antwort von PhanHaiQuang und einen Kommentar von flukus )
quelle