Wie wird Vim so eingestellt, dass die Farben gemäß den Farbcodes angezeigt werden?

60

Kurz gesagt, ich bin in dem Bemühen , zu ersetzen lessmit vim( vimpager). Ich habe Einstellungen für Skripte, um Farben (und fett und alles schön) auszuspucken, wann immer sie können. lessversteht die Farbcodes und zeigt sie gut an. Wie kann ich vimdie Codes analysieren und Farben / Kühnheit so anzeigen lassen, wie lesses der Fall ist?

phunehehe
quelle

Antworten:

45

Zwei Antworten:

Kurz: Sie möchten das vim-Skript AnsiEsc.vim verwenden . Dadurch werden die tatsächlichen ANSI-Escape-Sequenzen in Ihrer Datei ausgeblendet und der Text wird mithilfe der Syntaxhervorhebung entsprechend eingefärbt. Das Problem bei der Verwendung in einem Pager ist, dass Sie vim erkennen lassen müssen, wann dies verwendet werden soll. Ich bin mir nicht sicher, ob Sie es einfach immer laden können oder ob es zu Konflikten mit anderen Syntaxdateien kommt. Sie müssen damit experimentieren.

Eine lange Antwort: Das Beste, auf das Sie hoffen können, ist eine teilweise nicht tragbare Lösung. Less versteht die terminalen Escape-Sequenzen nicht wirklich, da diese weitgehend terminalabhängig sind, aber weniger kann (eine Teilmenge von) diesen erkennen und weiß, dass sie an das Terminal weitergeleitet werden, wenn Sie -r(oder) verwenden-R) Möglichkeit. Das Terminal interpretiert die Escape-Sequenzen und ändert die Attribute des Texts (Farbe, Fettdruck, Unterstreichung ...). Vim, der eher ein Editor als ein Pager ist, übergibt keine einfachen Steuerzeichen an das Terminal. Sie müssen auf irgendeine Weise angezeigt werden, damit Sie sie tatsächlich bearbeiten können. Sie können andere Funktionen von vim verwenden, z. B. das Verbergen und Hervorheben der Syntax, um die Sequenzen auszublenden und sie zum Festlegen der Farben des Texts zu verwenden. Es wird jedoch immer nur eine Teilmenge der Terminalsequenzen verarbeiten und möglicherweise auf einigen Terminals nicht funktionieren .

Dies ist nur eines von vielen Problemen, auf die Sie stoßen, wenn Sie versuchen, einen Texteditor als Pager zu verwenden.

Jan Hlavacek
quelle
Um es auf den Punkt zu bringen, müssen Sie einen Teil eines Terminalemulators in Vim schreiben, den Teil, der die in Ihrer Eingabe vorhandenen Terminal-Escape-Sequenzen verarbeitet.
Gilles 'SO - hör auf, böse zu sein'
Danke, ich glaube ich gebe auf. Wenn es nicht einfach ist, ergibt es keinen Sinn mehr.
Phunehehe
1
@ JanHlavacek Link ist kaputt :(
Nitrodist
19
@ Nitrodist: less -r FILE( Quelle )
Adobe
1
Es scheint, als wäre Jan's Link zu linux-tips.com/t/how-to-enable-syntax-highlighting-in-less/208
Timothy Zorn
2

Jetzt können Sie mit vim 8 den Terminalmodus verwenden :terminalund dann in diesem Terminal cat myfilemit Strg-w N in den normalen Modus zurückkehren. Dadurch werden die ANSI-Farbcodes korrekt angezeigt. Durch die Automatisierung dieser Schritte und das Lesen von der Standardeingabe anstelle einer Datei sollte es möglich sein, vim zu verwenden, um weniger zu ersetzen.

Rubystallion
quelle
Das beantwortet die Frage überhaupt nicht. Wie ersetzt dies less?
ossbuntu vor
@ossbuntu Wenn du rennst ls --color=always >/tmp/colored.txtund dann in vim :terminal cat /tmp/colored.txtgefolgt von :only, dann hast du die ls-Ausgabe in vim schön gefärbt, wie es weniger tun würde. Da vim das Übergeben von Befehlen als Befehlszeilenargumente beim Start unterstützt, ist es eindeutig möglich, less
herumzuspielen