Wie kann ich Syntaxhervorhebungen für eine Datei anzeigen?


42

Gibt es eine Variante cat, die syntaktisch hervorgehobene Codezeilen ausgibt, wenn sie in einer Quelldatei verwendet werden?

Eine Idee: Vielleicht kann ein vi[m]anderer Editor gebeten werden, den syntaktisch hervorgehobenen Inhalt dieser Dateien zu speichern stdoutund sofort zu beenden?

Antworten:


48

Beim Durchreichen der Datei wird versucht, den Typ anhand des Dateinamens zu erkennen und ihn entsprechend hervorzuheben.pygmentize-f terminal


Ist das die Schriftart Star Trek: Deep Space Nine in ihrem Logo? Wenn es so ist, ist es großartig.
Amphetamachine

2
Verfügbar als Paket python-pygmentsauf Debian.
Enzotib

6
Ich fand alias pcat="pygmentize -f terminal256 -O style=native -g"es eine schöne Lösung
Mikael Öhman

1
auch erhältlich überpip install pygments
craigb

1
Eigentlich muss es sein cat code.extension | pygmentize -f terminal -l extension.
Fiatjaf

13

Das Source-Highlight- Paket wird mit der Ausgabesprachendefinition esc.outlang ausgeliefert, die mit ANSI-Escape-Sequenzen hervorgehoben wird.

Ein praktischer Wrapper src-hilite-lesspipe.shist ebenfalls im Lieferumfang enthalten, sodass die Anzeige der hervorgehobenen Ausgabe im Terminal einfach ist src-hilite-lesspipe.sh source.file.

Eigentlich ist src-hilite-lesspipe.shder Hauptgrund, um die Verwendung von source-highlightmit zu automatisieren less. Sie haben gerade eingestellt:

export LESSOPEN="| /path/to/src-hilite-lesspipe.sh %s"
export LESS=' -R '

Dann zeigt jeder less source.filemarkierten Quellcode an. (Code in unbekannter Sprache wird unverändert durchgelassen. Hervorhebungen werden auch bei umgeleiteten Inhalten wie less < source.file. Übersprungen .)


Schön, danke, dass du dir die Zeit genommen hast, diese Antwort zu schreiben
Paolo,

3

Highlight ist einfach zu bedienen und schneller alspygmentize


2
Vergessen Sie aber nicht -O ansi: Im Gegensatz dazu pygmentizewird highlightHTML standardmäßig ausgegeben.
Ruslan

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.