Чи є якісь варіанти, щоб випустити кішку з кольором?


Відповіді:


18

Пакет GNU, джерело-підкреслення , здається, що робить трюк (хоча це не з використанням кота - як зазначає Джон Т, це неможливо конкретно з кішкою). Він доступний через apt-get на Ubuntu, і вимагає бібліотеки Boost regex. Перевірте свого менеджера пакунків, щоб перевірити, чи доступні обидва, інакше їх можна захопити з Інтернету. Сторінка GNU, зв'язана раніше, посилається на Boost, я думаю.

Після встановлення я створив новий сценарій на своєму шляху, який називався ccat . Сценарій виглядає так:

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

Нічого фантазійного, просто спрощуючи менший сценарій, який вони містять із джерелом виділення. Він діє так само, як кіт, коли його називають таким чином.

Хоча включений менший сценарій - це і хороший сценарій. Щойно я додав у .bashrc :

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

Цей сценарій також включений в онлайн-посібник для виділення джерел.

Я думаю, ви могли б псевдонім кота зателефонувати на src-hilite-lesspipe.sh $ 1, якщо вам здасться взагалі ігнорувати кота, але це може бути не бажаним.


4
Я особисто віддаю перевагу псевдоніму однорядкових скриптів bash, що закінчуються на $1:).
mgalgs

Так, mitch_feaster, ти вже на місці. :]
rgm

2
На Mac також працює brew install source-highlight. Неможливо розфарбувати yaml :(
Сайрам

9

Для виведення виділеного синтаксису коду з чимось подібним cat, я створив ccatкоманду, дотримуючись інструкцій на веб-сторінці 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

Для виведення виділеного синтаксису коду чимось подібним lessя використовую vim як меншу заміну.

alias less='/usr/share/vim/vim72/macros/less.sh'

Як встановити pygmentize: easy_install --install-dir $ SOMEDIR Pygments
psihodelia

Мені подобається цей тип портативних рішень. Я додав цей скрипт як функцію до мого bash .functionsякcolorize(){...}
guneysus

3

Для вирішення цього питання я використав висвітлення . Я створив функцію, яка намагається роздрукувати файл із підсвічуванням синтаксису, і якщо він не вдається, він просто повертається до використання кота для друку файлу. Ви можете змінити тему виділення синтаксису на все, що завгодно.

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
}

Якщо ви перебуваєте на Mac і використовуєте Homebrew (настійно рекомендується!), Ви можете встановити підсвічування, запустивши brew install highlight. В іншому випадку вона має бути доступною для більшості інших менеджерів пакетів і їх можна завантажити тут .

Я також створив функцію роздрукувати файл із виділенням синтаксису як html та відкрити його у браузері для друку (покладається на openкоманду в 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
}

Насолоджуйтесь!


1

Ні, кішка не має здібностей до виділення синтаксису. Якщо ви хочете переглянути вихідний код із підсвічуванням синтаксису, вставте його у vim або у ваш редактор за вибором (у якому виділяється синтаксис). Таким чином, ви навіть можете переглядати вихід, якщо це довгий файл, використовуючи Ctrl+ F(вперед) та Ctrl+ B(назад).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.