Підсвічування синтаксису в терміналі


43

Багато редакторів, орієнтованих на програмування, забарвлять вихідний код. Чи є команда, яка забарвить вихідний код для перегляду в терміналі?

Я міг би відкрити файл з emacs -nw(який відкривається в терміналі замість того, щоб вискочити нове вікно), але я шукаю щось таке, що працює less(або те, що працює з цим less -R , що проходить через послідовності кольорових значень у своєму введенні).

Відповіді:


66

З highlightна терміналі, який підтримує такі ж послідовності кольорів, як xterm:

highlight -O xterm256 your-file | less -R

З ruby-rouge:

rougify your-file | less -R

З python-pygments:

pygmentize your-file | less -R

З GNUsource-highlight :

source-highlight -f esc256 -i your-file | less -R

Ви також можете використовувати vimяк пейджер за допомогою macros/less.shскрипта, який постачається разом vim(детальніше див. У :h lessмежах vim):

У моїй системі:

sh /usr/share/vim/vim74/macros/less.sh your-file

Або ви можете використовувати будь-який із підсвічувачів синтаксису, що підтримують вихід та використання HTML, elinksабо w3mяк пейджер (або elinks -dump -dump-color-mode 3 | less -R), як у GNUsource-highlight :

source-highlight -o STDOUT -i your-file | elinks -dump -dump-color-mode 3 | less -R

Виділення може перетворити текст у SVG / HTML, що дуже захоплююче.
utopic eexpress

14

Для цього я використовую GNU у source-highlightпоєднанні з less -R. Додайте наступні рядки до файлу ініціалізації оболонки ( ~/.bashrcнаприклад):

cless(){
 LESSOPEN='| source-highlight --failsafe --out-format=esc256 -o STDOUT -i %s 2>/dev/null ' less -R "$@"
}

Це має автоматично кольоровий вихідний код відповідно до використовуваної мови, і, якщо він не може, він запуститься lessбезпосередньо на вхід.


6

Якщо вас цікавлять кольори lessзагалом, ви можете поглянути lesspipe.sh. Дивіться, наприклад, http://freecode.com/projects/lesspipe .

lesspipe.sh - це вхідний фільтр для пейджера, менший, як описано на довідковій сторінці менше. Сценарій працює під сумісними оболонками ksh (наприклад, bash, zsh) і дозволяє менше використовувати для перегляду файлів з бінарним вмістом, стислих файлів, архівів та файлів, що містяться в архівах.

Він також забарвлює сценарії оболонки, сценарії Perl тощо тощо, аналогічно текстовому редактору, але без використання жодної програми "попередньої обробки" для колоризації.


Дякую! Я думаю, lesspipe.shце те, що я намагався запам’ятати, перш ніж розміщувати питання ...
alexis

2

Мені подобається простота і я використовую наноредактор тексту, в такому випадку я зазвичай дію так:

Перевірка синтаксису відьми доступна: ls -la /usr/share/nano/

включіть його до мого файлу nanorc із наступною командою або виконуючи це вручну

echo 'include /usr/share/nano/sh.nanorc' >> ~/.nanorc

Про lessя пропоную переглянути цю сторінку


0

Згідно з пропозицією Stéphane Chazelas , я роблю функцію bash, щоб використовувати highlightпідкреслити синтаксис show, вставити його в .bashrc тощо. Це чудово, швидко і ефективно.

s(){ highlight --force -O ansi $1 | /usr/bin/less -R; }

виділити підтримку синтаксису формату мови 202 . див highlight --list-scripts=langs.


0

Ви можете використовувати пакет e2ansi , який забезпечує підтримку підкреслення синтаксису для пейджерів, як moreі less.

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

Приклад

Нижче наведено результат перегляду файлу за допомогою lessта e2ansi:

Приклад

Конфігурація

У пакеті передбачений інструмент командного рядка, e2ansi-catякий запускає Emacs у пакетному режимі, відкриває файли, виділяє їх синтаксис та надає результат, використовуючи послідовності ANSI.

Ви можете інтегрувати це less, встановивши, наприклад, такі змінні (наприклад, місце вашого файлу init може відрізнятися):

export "LESSOPEN=||-/usr/local/emacs --batch -Q -l ~/.emacs -l bin/e2ansi-cat %s"
export "LESS=-r"
alias "more=less -X -E"

У наведеній вище конфігурації lessвідновлює вихідний вміст вікна терміналу, тоді як moreпросто виводить новий вміст після підказки.

Примітка. Якщо ви використовуєте стару версію програми less, вона може не підтримувати синтаксис ||або -синтаксис. У цьому випадку вам може знадобитися просто використовувати LESSOPEN=|/usr/local/emacs ....

Використання lessв трубах

Символ "-" LESSOPENвказує на те, що вхідний фільтр також слід використовувати під час передачі тексту в less. У цьому випадку Emacs може покладатися лише на сам текст (а не на ім'я файлу). На щастя, Emacs забезпечує систему для цього. Крім того, наданий файловий файл e2ansi-magic.elвстановлює додаткові типи файлів. Наприклад:

Трубний приклад

Навіщо використовувати Emacs?

  • Emacs має підтримку практично всіх мов програмування та структурованих текстових форматів. У більшості випадків підтримка підсвічування синтаксису є чудовою.
  • Ви можете легко додати підтримку більшої кількості мов та форматів або змінити існуючі пакети відповідно до ваших потреб.
  • Emacs підтримує кольорові теми. Під час використання e2ansiкольори в темі зберігаються під час перегляду файлу в less. Ви можете вибрати відповідну колірну тему з ряду джерел або створити власну.
  • Якщо ви використовуєте Emacs як вибраний вами редактор, ви отримаєте те саме виділення в редакторі, що і ви, переглядаючи файл із використанням less(мінус обмеження у форматі послідовностей ANSI та вікні терміналу).
  • lessскористаються функціями Emacs, які виконують автоматичне перетворення, наприклад, розпакування файлів. Насправді ви можете навчити Emacs виконувати будь-які види перетворень, як-от автоматичне перетворення двійкового файлу в читану людиною форму за допомогою зовнішнього інструменту.
  • Ви можете переглядати файли, розташовані на інших машинах, використовуючи синтаксис Emacs для віддаленого доступу, наприклад /USER@HOST:FILENAME.

Корисні посилання

  • e2ansiрозповсюджується на Melpa і може бути встановлений за допомогою стандартної системи пакетів Emacs
  • e2ansiрозміщується на GitHub
  • e2ansiСторінка на Emacs Wiki
  • Дім с less.

Примітки операційної системи

  • У MS Windows консоль не підтримує послідовності ANSI. На щастя, lessпрограма здатна їх надати. Мені не відомий жоден сучасний бінарний дистрибутив lessдля MS Windows, а надані файли збірки важко використовувати. На щастя, це легко побудувати lessза допомогою CMake , детально дивіться цей текст .

  • OS X поширює стародавню версію less. На щастя, легко побудувати сучасну версію безпосередньо з джерела.


-2

Його називають виділенням синтаксису.

GNU Source-виділення, коли надається вихідний файл, створює документ із виділенням синтаксису.

Я використовую lessfilterсценарій нижче, або ви можете зробити так, щоб lessвикликати його автоматично, як із:

export LESSOPEN="| /path/to/lessfilter %s"
export LESS=' -R '

Я знайшов цю статтю і почав це робити так:

#!/bin/sh
file -b -L "$1" | grep -q text &&
  /usr/share/source-highlight/src-hilite-lesspipe.sh "$1"

( src-hilite-lesspipe.shпостачається разом, source-highlightале не всі дистрибутиви включають його)


4
"Якщо ви переходите до статті, автор повинен використовувати Mac, оскільки він використовує великі літери для своїх команд": Боюся, ви трохи розгублені: явно ви не знаєте, що exportвизначає змінну середовища, а не псевдонім. Команда less використовує прапори з змінної оточення LESS, тому ваша відповідь потребує в деякому доопрацюванні.
alexis
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.