Может ли `cat` показывать файлы, используя разметку кода в цветах?

Если вы работаете в системе POSIX, вы можете использовать strcasecmp . Однако эта функция не является частью стандартного C и не доступна в Windows. Это будет выполнять сравнение без учета регистра для 8-битных символов, при условии, что языковой стандарт - POSIX. Если языковой стандарт не POSIX, результаты не определены (поэтому может выполняться локальное сравнение или нет). Эквивалент широких символов недоступен.

В противном случае большое количество исторических реализаций библиотеки C имеет функции stricmp () и strnicmp (). Visual C ++ в Windows переименовал все это, добавив к ним подчеркивание, потому что они не являются частью стандарта ANSI, поэтому в этой системе их называют _stricmp или _strnicmp . Некоторые библиотеки могут также иметь широко-символьные или многобайтовые эквивалентные функции (обычно называемые, например, wcsicmp, mbcsicmp и т. Д.).

C и C ++ в значительной степени не знают о проблемах интернационализации, поэтому у этой проблемы нет иного решения, кроме как использовать стороннюю библиотеку. Проверьте IBM ICU (Международные компоненты для Unicode) , если вам нужна надежная библиотека для C / C ++. ICU для систем Windows и Unix.

44
задан 04.05.2020, 23:51

7 ответов

cat не может сделать это. Тем не менее, может быть, фрагменты могут помочь вам там. Это скрипт на python, который можно установить через apt-get

sudo apt-get install python-pygments

или легко загрузить и установить с помощью easy_install.

Он поддерживает множество языков исходного кода , а также языков разметки

Он используется в

pygmentize -g <filename>
48
ответ дан 04.05.2020, 23:53
  • 1
    Спасибо @souravc Добавленный это к ответу. Интересно, этот аргумент, кажется, не упоминается в странице справочника или странице справки – jsloop 04.05.2020, 23:53
  • 2
    Это является лучшим, затем исказите кошку к pygmentize-g, и Вы являетесь золотыми. У рыбы это просто как funced cat... type pygmentize -g $argv... save..funcsave cat. – trojanfoe 04.05.2020, 23:53
  • 3
    в моем bashrc я добавил: command -v pygmentize >/dev/null 2>&1 && alias cat='pygmentize -g' – Dirty Henry 04.05.2020, 23:54
  • 4
    Хорошо я играл много с ним. можно найти его, попробовать pygmentize --help, Если -g передается, попытка предположить лексический анализатор от содержания файла или пройти как простой текст, если это перестало работать (это может работать на stdin). – inorganik 04.05.2020, 23:54
  • 5
    Открытый файл как pygmentize -g <filename>, эти -g переключатель важен для обработки файла без лексического анализатора. например, если Вы попробуете /etc/fstab для открытия без -g, то это перестанет работать. – quellish 04.05.2020, 23:55

man view или man vim

Основное использование: view <filename>

Выход: :q<Return> (сначала добавьте <Esc>, если используете vim), или ZZ (верхний регистр z дважды).

Текстовый редактор программиста vim уже имеет все, что вам нужно, и, вероятно, уже является частью вашей системы.

vim имеет режим только для чтения, активированный с помощью view или vim -R. Если все, что вы хотите сделать, это просмотреть размеченный файл, этого должно быть достаточно.

Простой в использовании, навигационный, доступен везде. Нет необходимости возиться с установкой нового программного обеспечения или написанием сценариев bash.

6
ответ дан 04.05.2020, 23:52
  • 1
    @kramer65 OK, конечно, it' s Ваше предпочтение, но Вы don' t нужно к " open" vim или view, Вы просто предоставляете ему файл: view file.py, таким образом, никакое различие там с cat. Уверенный необходимо закрыться, это, но действительно, :q<Return> или ZZ не являются трудные задачи. – kelin 04.05.2020, 23:52
  • 2
    Основная проблема, являющаяся этим vi/vim/view don' t пишут в stdout, таким образом, я can' t легко пишут команду, пока поглядывание на синтаксис выделило вывод выше. – Sam 04.05.2020, 23:53
  • 3
    Я знаю. Вещь состоит в том, что openeing и заключительный VIM не быстры. Я хочу немедленно просмотреть файл и затем продолжить командную строку. That' s, почему я нашел pygmentize таким хорошим. Мгновенный результат, никакой выход из программы или чего-либо..:) – MandisaW 04.05.2020, 23:53

Летучая мышь - клон кошки с крыльями

Вы также можете проверить bat , который имеет следующие особенности:

  • Подсветка синтаксиса
  • Интеграция с Git
  • Опционально показаны непечатаемые символы
  • Автоматическое разбиение по страницам с помощью less
  • Конкатенация файлов в качестве замены вместо cat перенаправил

Предварительный просмотр

Screenshot of bat showing a colored file

Фото взято с официального GitHub

Установка

Вы можете получить последний пакет Debian здесь и установить его с помощью:

sudo dpkg -i bat_0.10.0_amd64.deb

Адаптация номера версии и архитектуры . [+1122]

2
ответ дан 04.05.2020, 23:52

Можно проверить ccat .

Добавляет подсветку синтаксиса к выходным файлам.

4
ответ дан 04.05.2020, 23:53

cat не может производить подсветку синтаксиса исключительно. Тем не менее, вы можете сделать это следующим образом, используя python-pygments. Сначала установите его из терминала как,

sudo apt-get install python-pygments

Теперь скопируйте функцию ниже ~/.bashrc. Это даст вам то, что вы хотите , более того, оно сохранит свойства cat , иначе нет смысла использовать cat

catc(){
    cat "$@" > /tmp/.tmp
    pygmentize -g /tmp/.tmp
    rm /tmp/.tmp
}

Source ~/.bashrc as,

]
. ~/.bashrc

Это даст колоризованный результат,

catc <filename>

Это также будет объединено с цветом,

catc <file1> <file2> ... <filen>
3
ответ дан 04.05.2020, 23:54
  • 1
    Есть ли способ позволить прокрутить со стрелками вверх и вниз при использовании pygmentize? I' m открытие это с помощью команды формы xterm -e "pygmentize -g <filename>" и находит, что единственный способ прокрутить состоит в том, чтобы использовать полосу прокрутки. Я пытался передать вывод по каналу к less, но это привело к производству мусора. – tomk 04.05.2020, 23:54
  • 2
    да можно использовать pygmentize с меньше. Создайте функцию удара lessc как следующее: lessc () { pygmentize -gf terminal "$1" | less -R } – kennytm 04.05.2020, 23:55

Начиная с этого ответа здесь , вы можете использовать пакеты python-pygments для выделения материала. Сначала выполните:

sudo apt-get install python-pygments python3-pygments

, затем:

pygmentize -g FILENAME

, затем сделайте:

enter image description here

Вы также можете установить это как псевдоним, как в ответе, который я связал - в основном, запустите это:

echo "alias catc='pygmentize -g'" >> ~/.bash_aliases 
chmod +x ~/.bash_aliases

Закройте терминал, откройте его снова, и теперь команда catc должна работать - если это не так, сделайте уверен, что эти строки находятся в файле .bashrc и не закомментированы:

if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi

Другое дело будет просто использовать nano:

nano testfile

enter image description here

14
ответ дан 04.05.2020, 23:55

Не из самого cat, но вы можете использовать что-то вроде источника подсветки или суперкат или выделения

Source-highlight

Эта программа, учитывая исходный файл, создает документ с подсветкой синтаксиса. Он также предоставляет библиотеку подсветки C ++ (новая) (начиная с версии 3.0).

Source-highlight динамически считывает спецификации исходного языка, поэтому его можно легко расширить (без перекомпиляции источников) для обработки новых языков. Он также читает спецификации выходного формата динамически, и, таким образом, его можно легко расширить (без перекомпиляции источников) для обработки новых выходных форматов. Синтаксис этих спецификаций довольно прост (см. Руководство).

Руководство по установке:

См. Файл INSTALL для подробных инструкций по сборке и установке; в любом случае, если вы привыкли к компиляции программного обеспечения Linux, которое поставляется с исходными текстами, вы можете просто следовать обычной процедуре, то есть распаковать загруженный файл в каталог, а затем:

 cd <source code main directory>
 ./configure
 make
 make install

Supercat

Это домашняя страница Supercat. Supercat - это программа, которая раскрашивает текст на основе сопоставления регулярных выражений / строк / символов. Supercat поддерживает вывод html, а также стандартный текст ASCII. В отличие от некоторых существующих программ для раскрашивания текста, Supercat не требует, чтобы вы были программистом, чтобы создавать правила раскрашивания.

Если вы написали конфигурационный файл supercat для стандартного типа файлов, пожалуйста, не стесняйтесь обращаться ко мне по адресу "bug-spc (at) nosredna (dot) net" для возможного включения в дистрибутив supercat.

Или с function ( source ):

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

Требует: Pygments (sudo apt-get install python-pygments python3-pygments) Добавить его как функцию для bash .functions и дать ему имя как цвет ()

19
ответ дан 04.05.2020, 23:55

Теги

Похожие вопросы