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?

Paolo
quelle

Antworten:

48

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

Ignacio Vazquez-Abrams
quelle
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 .)

Mann bei der Arbeit
quelle
Schön, danke, dass du dir die Zeit genommen hast, diese Antwort zu schreiben
Paolo,
3

Highlight ist einfach zu bedienen und schneller alspygmentize

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