меньший стиль просмотра уценки для систем UNIX - PullRequest
50 голосов
/ 29 сентября 2011

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

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

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

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

привет

мир

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

Ответы [ 9 ]

68 голосов
/ 30 сентября 2011

Pandoc может конвертировать Markdown в справочные страницы 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 в предпочитаемом вами веб-браузере с графическим интерфейсом (что не совсем «менее стильно», но может быть полезно).

30 голосов
/ 25 ноября 2013

Я пытался написать это в комментарии выше, но не смог правильно отформатировать блок кода. Чтобы написать «меньше фильтра», попробуйте, например, сохранить следующее как ~/.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, и он будет отформатирован как справочная страница.

8 голосов
/ 12 июля 2015

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

terminal_markdown_viewer

image

It can be used straightforward also from within other programs, or python modules.

And it has a lot of styles, like over 200 for markdown and code which can be combined.

pic2

Ответственность

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

  • Я его автор, может, кому-то это нравится; -)

5 голосов
/ 07 декабря 2013

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

3 голосов
/ 25 сентября 2015

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

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» для браузера.

0 голосов
/ 11 мая 2017

Я опубликую мой ответ на странице Unix и здесь:

ИМХО, сильно недооцененное средство просмотра разметки командной строки, - markdown-cli .

Установка

npm install markdown-cli --global

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

markdown-cli <file>

Возможности

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

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

Снимок экрана

example.png

Недостатки

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

  • кодовые блоки сглажены (все начальные пробелы исчезают)
  • перед списками появляются две пустые строки
0 голосов
/ 17 августа 2016

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

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 date --iso-8601 Dr.Beco Markdown"): что-то, что запускает файл и groff будет восприниматься как примечания верхнего и нижнего колонтитула. Это заменяет пустой заголовок из клавиши -s на pandoc.
    • arg2: <(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 (или тому подобному)

0 голосов
/ 02 апреля 2016

Используя 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/

0 голосов
/ 05 августа 2014

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

#!/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 &
...