Gibt es Möglichkeiten, die Katze mit Farbe ausgeben zu lassen?

14734
Jichao

Kann ich eine C-Quellcodedatei mit Syntaxhervorhebung ausgeben cat?

18

4 Antworten auf die Frage

18
rgm

Ein GNU-Paket, Source-Highlight, scheint den Trick zu erfüllen (obwohl cat nicht verwendet wird - wie John T hervorhebt, ist dies mit cat nicht möglich). Es ist über apt-get unter Ubuntu verfügbar und erfordert die Boost-Regex-Bibliothek. Überprüfen Sie in Ihrem Paketmanager, ob beide verfügbar sind. Andernfalls können Sie sie aus dem Internet abrufen. Die zuvor verlinkte GNU-Seite hat einen Link zu Boost, denke ich.

Nach der Installation habe ich in meinem Pfad ein neues Skript namens ccat erstellt . Das Skript sieht folgendermaßen aus:

#!/bin/bash src-hilite-lesspipe.sh $1 

Nichts Besonderes, nur das weniger Skript, das sie mit Source-Highlight enthalten, wird vereinfacht . Es wirkt wie eine Katze, wenn sie auf diese Weise aufgerufen wird.

Das mitgelieferte less-Skript ist jedoch auch ein schönes Skript. Ich habe gerade Folgendes hinzugefügt .bashrc :

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

Dieses Skript ist auch im Online-Handbuch für das Hervorheben von Quellen enthalten.

Ich denke, Sie könnten alias cat nennen, um src-hilite-lesspipe.sh $ 1 zu nennen, wenn Sie die Katze überhaupt ignorieren möchten, aber das ist vielleicht nicht wünschenswert.

Ich persönlich bevorzuge einen Alias ​​vor einzeiligen Bash-Skripten, die mit "$ 1" enden :). mgalgs vor 12 Jahren 4
Ja, Mitch_feaster, du bist genau richtig. :] rgm vor 12 Jahren 0
Funktioniert auch auf einem Mac mit 'brew install source-highlight'. Yaml kann nicht eingefärbt werden :( Sairam vor 11 Jahren 2
9
michaelvobrien

Um den hervorgehobenen Code für die Syntax so auszudrücken cat, habe ich einen ccatBefehl erstellt, indem ich den Anweisungen unter http://scott.sherrillmix.com/blog/programmer/syntax-highlighting-in-terminal/ folgte .

#!/bin/bash if [ ! -t 0 ];then file=/dev/stdin elif [ -f $1 ];then file=$1 else echo "Usage: $0 code.c" echo "or e.g. head code.c|$0" exit 1 fi pygmentize -f terminal -g $file 

Um Syntax hervorgehobenen Code mit so etwas auszugeben less, verwende ich vim als weniger Ersatz.

alias less='/usr/share/vim/vim72/macros/less.sh' 
So installieren Sie pygementize: easy_install --install-dir $ SOMEDIR Pygments psihodelia vor 10 Jahren 0
Ich mag diese Art von tragbaren Lösungen. Ich habe dieses Skript als Funktion zu meiner bash `.functions` als` colorize () {...} `hinzugefügt guneysus vor 10 Jahren 0
3
Kevin

Um dieses Problem zu lösen, habe ich Highlight verwendet . Ich habe eine Funktion erstellt, mit der versucht wird, die Datei mit Syntaxhervorhebung zu drucken, und wenn sie fehlschlägt, greift sie einfach auf cat zurück, um die Datei zu drucken. Sie können das Syntaxhervorhebungsthema beliebig ändern.

function hl { # Overrides the cat command to use syntax highlighting # Highlight with 'moria' theme to terminal, and suppress errors highlight $1 -s moria -O xterm256 2> /dev/null  if (($? != 0)); then # If the command had errors cat $1 # Just cat the file out instead fi } 

Wenn Sie sich auf einem Mac befinden und Homebrew verwenden (sehr zu empfehlen!), Können Sie highlight durch Ausführen installieren brew install highlight. Ansonsten sollte es auf den meisten anderen Paketmanagern verfügbar sein und kann hier heruntergeladen werden .

Ich habe auch eine Funktion zum Ausdrucken einer Datei mit Syntaxhervorhebung als html erstellt und zum Drucken im Browser geöffnet (abhängig vom openBefehl unter OS X):

function hlprint { # Print with line numbers and 'moria' theme highlight $1 -l -o print.html -s moria open print.html # Open in browser sleep 5 # Give the browser time to open rm print.html highlight.css # Remove output files } 

Genießen!

1
John T

Nein, Katze hat keine Syntax-Hervorhebungsfähigkeiten. Wenn Sie Quellcode mit Syntaxhervorhebung anzeigen möchten, fügen Sie ihn in vim oder Ihrem Editor (mit Syntaxhervorhebung) ein. Auf diese Weise können Sie sogar die Ausgabe durchblättern, wenn es sich um eine lange Datei handelt, und zwar mit Ctrl+ F(vorwärts) und Ctrl+ B(rückwärts).