Просмотрщик изображений с меньшим стилем для систем UNIX
У меня есть строка Markdown в JavaScript, и я бы хотел ее отобразить (с полужирным шрифтом и т.д.) в средстве просмотра less
(или, я полагаю, more
) для командной строки.
Например, со строкой
"hello\n" +
"_____\n" +
"*world*!"
Я хотел бы, чтобы выход всплывал с прокручиваемым контентом, который выглядит как
привет
мир
Возможно ли это, и если да, то как?
Ответы
Ответ 1
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
в вашем предпочтительном веб-браузере с графическим интерфейсом (который не совсем "менее стильный", но может оказаться полезным).
Ответ 2
Я попытался написать это в комментарии выше, но я не мог правильно отформатировать блок кода. Чтобы написать "меньше фильтра", попробуйте, например, сохранить следующее как ~/.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
, и он будет отформатирован как man-страница.
Ответ 3
Если вы находитесь в цвета, то, возможно, это тоже стоит проверить:
terminal_markdown_viewer
![1.png]()
Его можно использовать прямо из других программ или модулей python.
И у него много стилей, например, более 200 для уценки и кода, которые можно объединить.
![pic2]()
Отказ
-
Это довольно альфа, могут быть все еще ошибки
-
Я автор этого, может быть, некоторым нравится: -)
Ответ 4
Совершенно другая альтернатива mad. Это оболочка script, которую я только что обнаружил. Он очень прост в установке, и он отлично отображает уценку в консоли.
Ответ 5
Я написал пару функций на основе Ответ Keith:
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" - для браузера.
Ответ 6
Я лично использую этот script:
#!/bin/bash
id=$(uuidgen | cut -c -8)
markdown $1 > /tmp/md-$id
google-chrome --app=file:///tmp/md-$id
Он отображает уценку в HTML, помещает ее в файл в /tmp/md-...
и открывает ее в сеансе chrome kiosk без панели URI и т.д. Вы просто передаете файл md в качестве аргумента или передаете его в stdin. Требуется уценка и Google Chrome. Хром также должен работать, но вам нужно заменить последнюю строку
chromium-browser --app=file:///tmp/md-$id
Если вы хотите получить представление об этом, вы можете использовать некоторый css, чтобы он выглядел хорошо, я отредактировал script и сделал его использование 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 &
Ответ 7
С помощью OSX я предпочитаю использовать эту команду
brew install pandoc
pandoc -s -f markdown -t man README.md | groff -T utf8 -man | less
Конвертировать markupm, форматировать документ с groff и pipe в
кредит: http://blog.metamatt.com/blog/2013/01/09/previewing-markdown-files-from-the-terminal/
Ответ 8
Это псевдоним, который инкапсулирует функцию:
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
(или похожий)
Ответ 9
Я отправлю мой unix page answer здесь:
IMHO сильно недооценил просмотрщик уценки командной строки markdown-cli.
Установка
npm install markdown-cli --global
Использование
markdown-cli <file>
Функции
Вероятно, не заметил многого, потому что он пропускает какую-либо документацию...
Но насколько я мог понять некоторые примеры файлов разметки, некоторые вещи, которые меня убедили:
- гораздо лучше обрабатывает файлы с плохой форматировкой (аналогично атому, github и т.д., например, когда пустые строки отсутствуют перед списками)
- более стабильный с форматированием в заголовках или списках (жирный текст в списках разбивает подписи в некоторых других зрителях)
- правильное форматирование таблицы
- подсветка синтаксиса
- разрешает ссылки сноски, чтобы показать ссылку вместо номера сноски (не всем это может понадобиться)
Снимок экрана
![example.png]()
Недостатки
Я понял следующие проблемы
- кодовые блоки сплющены (все ведущие пробелы исчезают)
- перед списками появляются две пустые строки.