Меньший стиль просмотра уценки для систем 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 для уценки и кода, которые можно комбинировать.
отказ
Это довольно альфа, могут быть еще ошибки
Я автор этого, может быть, некоторым людям это нравится;-)
Совершенно другая альтернатива безумна. Это сценарий оболочки, который я только что обнаружил. Его очень легко установить, и он хорошо отображает уценку в консоли.
Я написал пару функций на основе ответа Кейта:
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
- arg1:
| 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 и т. д.; например, когда перед списками отсутствуют пустые строки)
- более стабильно с форматированием в заголовках или списках (полужирный текст в списках разрывает подсписки в некоторых других средствах просмотра)
- правильное форматирование таблицы
- подсветка синтаксиса
- разрешает ссылки на сноски, чтобы показать ссылку вместо номера сноски (не всем это нужно)
Скриншот
Недостатки
Я понял следующие проблемы
- кодовые блоки сглажены (все ведущие пробелы исчезают)
- перед списками появляются две пустые строки