Меньший стиль просмотра уценки для систем UNIX

У меня есть строка Markdown в JavaScript, и я хотел бы отобразить ее (жирным шрифтом и т. Д.) В less (или, я полагаю, more) -стиль просмотра для командной строки.

Например, со строкой

"hello\n" + 
"_____\n" + 
"*world*!"

Я хотел бы иметь вывод всплывающего окна с прокручиваемым контентом, который выглядит как

Привет

Мир

Возможно ли это, и если да, то как?

9 ответов

Pandoc может конвертировать Markdown в man-страницы groff.

Это (благодаря комментарию nenopera):

 pandoc -s -f markdown -t man foo.md | man -l -

должен сделать свое дело. -s опция говорит ему генерировать правильные верхние и нижние колонтитулы.

Там могут быть другие конвертеры markdown-to-*roff; Пандок, случается, был первым, кого я нашел.

Другой альтернативой является markdown команда (apt-get install markdown в системах Debian), который преобразует Markdown в HTML. Например:

markdown README.md | lynx -stdin

(при условии, что у вас есть lynx терминальный веб-браузер).

Или (благодаря предложению Дэнни) вы можете сделать что-то вроде этого:

markdown README.md > README.html && xdg-open README.html

где xdg-open (в некоторых системах) открывает указанный файл или URL-адрес в предпочтительном приложении. Это, вероятно, откроется README.html в вашем любимом веб-браузере с графическим интерфейсом (который не совсем "менее стильный", но может быть полезным).

Я попытался написать это в комментарии выше, но не смог правильно отформатировать блок кода. Чтобы написать "меньше фильтра", попробуйте, например, сохранить следующее как ~/.lessfilter:

#!/bin/sh

case "$1" in
    *.md)
        extension-handler "$1"
        pandoc -s -f markdown -t man "$1"|groff -T utf8 -man -
        ;;
    *)
        # We don't handle this format.
        exit 1
esac

# No further processing by lesspipe necessary
exit 0

Затем вы можете ввести less FILENAME.md и он будет отформатирован как справочная страница.

Если вам нравятся цвета, то, возможно, это стоит проверить:

https://github.com/axiros/terminal_markdown_viewer

Он также может быть использован напрямую из других программ или модулей Python.

И у него много стилей, например, более 200 для уценки и кода, которые можно комбинировать.

pic2

отказ

  • Это довольно альфа, могут быть еще ошибки

  • Я автор этого, может быть, некоторым людям это нравится;-)

Совершенно другая альтернатива безумна. Это сценарий оболочки, который я только что обнаружил. Его очень легко установить, и он хорошо отображает уценку в консоли.

Я написал пару функций на основе ответа Кейта:

mdt() {
    markdown "$*" | lynx -stdin
}

mdb() {
    local TMPFILE=$(mktemp)
    markdown "$*" > $TMPFILE && ( xdg-open $TMPFILE > /dev/null 2>&1 & )
}

Если вы используете zshпросто поместите эти две функции в ~/.zshrc а затем позвоните им из вашего терминала, как

mdt README.md
mdb README.md

"t" для "терминала", "b" для браузера.

Используя OSX, я предпочитаю использовать эту команду

brew install pandoc
pandoc -s -f markdown -t man README.md | groff -T utf8 -man | less

Преобразуйте разметку, отформатируйте документ с помощью groff и передайте в менее

кредит: http://blog.metamatt.com/blog/2013/01/09/previewing-markdown-files-from-the-terminal/

Это псевдоним, который инкапсулирует функцию:

alias mdless='_mdless() { if [ -n "$1" ] ; then if [ -f "$1" ] ; then cat <(echo ".TH $1 7 `date --iso-8601` Dr.Beco Markdown") <(pandoc -t man $1) | groff -K utf8 -t -T utf8 -man 2>/dev/null | less ; fi ; fi ;}; _mdless '

объяснение

  • alias mdless='...': создает псевдоним для mdless
  • _mdless() {...};: создает временную функцию для последующего вызова
  • _mdless: в конце, вызовите его (функция выше)

Внутри функции:

  • if [ -n "$1" ] ; then: если первый аргумент не нулевой, то...
  • if [ -f "$1" ] ; then: также, если файл существует и является регулярным, то...
  • cat arg1 arg2 | groff...: cat отправляет эти два аргумента в сцепление с groff; аргументы:
    • arg1: <(echo ".TH $1 7дата --изо-8601Dr.Beco Markdown"): что-то, что запускает файл и groff будет понимать как примечания верхнего и нижнего колонтитула. Это заменяет пустой заголовок из -s ключ на pandoc,
    • арг2: <(pandoc -t man $1): сам файл, отфильтрованный по pandoc, выводя man стиль файла $1
  • | groff -K utf8 -t -T utf8 -man 2>/dev/null: отправка полученного объединенного файла в groff:
    • -K utf8 так groff понимает код входного файла
    • -t поэтому он правильно отображает таблицы в файле
    • -T utf8 так что вывод в правильном формате
    • -man поэтому он использует пакет MACRO для вывода файла в man формат
    • 2>/dev/null игнорировать ошибки (в конце концов, это необработанный файл, преобразуемый вручную человеком, мы не заботимся об ошибках до тех пор, пока мы можем видеть файл в не очень уродливом формате).
  • | less: наконец, показывает файл с нумерацией less (Я пытался избежать этой трубы с помощью groffer вместо groff, но groffer не так крепок, как less а некоторые файлы его вешают или не показывают вообще. Итак, пусть это пройдет еще одна труба, какого черта!

Добавьте его в свой ~/.bash_aliases (или так)

Я лично использую этот скрипт:

#!/bin/bash
id=$(uuidgen | cut -c -8)
markdown $1 > /tmp/md-$id
google-chrome --app=file:///tmp/md-$id

Он отображает уценку в HTML, помещает его в файл в /tmp/md-... и открывает это в сеансе chrome киоска без URI-бара и т. д. Вы просто передаете файл md в качестве аргумента или передаете его в stdin. Требуется уценка и Google Chrome. Хром также должен работать, но вам нужно заменить последнюю строку на

chromium-browser --app=file:///tmp/md-$id

Если вы хотите поинтересоваться этим, вы можете использовать некоторые CSS, чтобы он выглядел красиво, я отредактировал скрипт и заставил его использовать Bootstrap3 (overkill) из CDN.

#!/bin/bash
id=$(uuidgen | cut -c -8)
markdown $1 > /tmp/md-$id
sed -i "1i <html><head><style>body{padding:24px;}</style><link rel=\"stylesheet\" type=\"text/css\" href=\"http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css\"></head><body>" /tmp/md-$id
echo "</body>" >> /tmp/md-$id
google-chrome --app=file:///tmp/md-$id > /dev/null 2>&1 &

Я также выложу свой ответ на странице Unix:

IMHO сильно недооцененный просмотрщик уценки командной строки - markdown-cli.

Монтаж

npm install markdown-cli --global

использование

markdown-cli <file>

Характеристики

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

  • гораздо лучше обрабатывает плохо отформатированные файлы (аналогично atom, github и т. д.; например, когда перед списками отсутствуют пустые строки)
  • более стабильно с форматированием в заголовках или списках (полужирный текст в списках разрывает подсписки в некоторых других средствах просмотра)
  • правильное форматирование таблицы
  • подсветка синтаксиса
  • разрешает ссылки на сноски, чтобы показать ссылку вместо номера сноски (не всем это нужно)

Скриншот

example.png

Недостатки

Я понял следующие проблемы

  • кодовые блоки сглажены (все ведущие пробелы исчезают)
  • перед списками появляются две пустые строки
Другие вопросы по тегам