Czy są jakieś opcje, które pozwolą kotowi uzyskać kolor?

Odpowiedzi:

18

Wygląda na to, że pakiet GNU, source-highlight , (ale nie używa cat - jak zauważa John T, nie jest to możliwe w przypadku cat). Jest dostępny przez apt-get na Ubuntu i wymaga biblioteki wyrażeń regularnych Boost. Sprawdź w swoim menedżerze pakietów, czy oba są dostępne, w przeciwnym razie możesz pobrać je z Internetu. Myślę, że strona GNU, do której odsyłano wcześniej, zawiera link do Boost.

Po instalacji utworzyłem na swojej ścieżce nowy skrypt o nazwie ccat . Skrypt wygląda następująco:

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

Nic szczególnego, po prostu upraszczając mniejszą liczbę skryptów, które zawierają dzięki podświetleniu źródła. Zachowuje się jak kot, gdy jest wywoływany w ten sposób.

Jednak dołączony skrypt mniej jest również przyjemny w użyciu. Właśnie dodałem następujące .bashrc :

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

Ten skrypt jest również zawarty w podręczniku online dotyczącym podświetlania źródła.

Wydaje mi się, że możesz nazwać cat alias src-hilite-lesspipe.sh 1 USD, jeśli masz ochotę całkowicie zignorować kota, ale to może nie być pożądane.

rgm
źródło
4
Ja osobiście wolę alias niż jednowierszowe skrypty bash kończące się na $1:).
mgalgs
Tak, mitch_feaster, jesteś na miejscu. :]
rgm
2
Działa również na komputerze Mac brew install source-highlight. Nie można pokolorować yaml :(
Sairam
9

Aby wyprowadzić podświetlony kod składni za pomocą czegoś podobnego cat, utworzyłem ccatpolecenie, postępując zgodnie z instrukcjami na stronie http://scott.sherrillmix.com/blog/programmer/syntax-highlighting-in-terminal/ .

#!/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

Aby wyprowadzić podświetlony kod składni za pomocą czegoś takiego less, używam vima jako mniejszego zamiennika.

alias less='/usr/share/vim/vim72/macros/less.sh'
michaelvobrien
źródło
Jak zainstalować pygmentize: easy_install --install-dir $ SOMEDIR Pygments
psihodelia
Lubię tego rodzaju przenośne rozwiązania. Dodałem ten skrypt jako funkcję do mojego bash .functionsjakocolorize(){...}
guneysus
3

Aby rozwiązać ten problem, użyłem wyróżnienia . Stworzyłem funkcję, która próbuje wydrukować plik z podświetlaniem składni, a jeśli zawiedzie, wraca do zwykłego użycia cat do wydrukowania pliku. Możesz zmienić motyw podświetlania składni na cokolwiek chcesz.

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
}

Jeśli korzystasz z komputera Mac i używasz Homebrew (wysoce zalecane!), Możesz zainstalować podświetlanie, uruchamiając brew install highlight. W przeciwnym razie powinien być dostępny na większości innych menedżerów pakietów i można go pobrać tutaj .

Stworzyłem również funkcję drukowania pliku z podświetlaniem składni jako html i otwierania go w przeglądarce, aby wydrukować (polega na openpoleceniu w 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
}

Cieszyć się!

Kevin
źródło
1

Nie, kot nie ma zdolności podświetlania składni. Jeśli chcesz zobaczyć kod źródłowy z podświetlaniem składni, włóż go do vima lub wybranego edytora (który ma podświetlanie składni). W ten sposób możesz nawet przewijać dane wyjściowe, jeśli jest to długi plik, używając Ctrl+ F(do przodu) i Ctrl+ B(do tyłu).

John T.
źródło