18

Если я хочу вывести файл с исходным кодом C с подсветкой синтаксиса, могу ли я использовать cat?

4 ответа4

18

Пакет GNU, source-highlight, похоже, делает свое дело (хотя и не использует cat - как отмечает Джон Т, это не возможно для cat специально). Он доступен через apt-get в Ubuntu и требует библиотеки регулярных выражений Boost. Проверьте менеджер пакетов, чтобы увидеть, доступны ли оба, иначе вы можете получить их из Интернета. Я думаю, что на странице GNU, на которую вы ссылались ранее, есть ссылка на Boost.

После установки я создал новый скрипт в моем пути с именем ccat. Сценарий выглядит так:

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

Ничего особенного, просто упрощение меньшего количества скриптов, которые они включают в источник-подсветка. Он действует как кошка, когда вызывается таким образом.

Включенный скрипт less - это тоже хороший скрипт для использования. Я только что добавил следующее .bashrc:

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

Этот сценарий также включен в онлайн-руководство для источника.

Я полагаю, что вы могли бы использовать псевдоним cat для вызова src-hilite-lesspipe.sh $ 1, если вы хотите полностью игнорировать cat, но это может быть нежелательно.

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'
3

Чтобы решить эту проблему, я использовал выделение. Я сделал функцию, которая пытается распечатать файл с подсветкой синтаксиса, и если он не работает, он просто использует cat для печати файла. Вы можете изменить тему подсветки синтаксиса на любую, какую захотите.

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

Нет, у cat нет возможностей подсветки синтаксиса. Если вы хотите просмотреть исходный код с подсветкой синтаксиса, вставьте его в vim или в свой редактор (с подсветкой синтаксиса). Таким образом, вы можете даже пролистывать выходные данные, если это длинный файл, используя Ctrl + F (вперед) и Ctrl + B (назад).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .