用于UNIX系统的样式较less的Markdown查看器
我在JavaScript中有一个Markdownstring,我想用命令行的less
(或者more
)样式的查看器显示它(用粗体等)。
例如,用一个string
"hello\n" + "_____\n" + "*world*!"
我想有输出popup滚动内容,看起来像
你好
世界
这是可能的,如果是的话如何?
Pandoc可以将Markdown转换为groff手册页。
这(感谢nenopera的评论):
pandoc -s -f markdown -t man foo.md | man -l -
应该做的伎俩。 -s
选项告诉它生成正确的页眉和页脚。
那里可能还有其他markdown-to-roff转换器; Pandoc恰好是我find的第一个。
另一个select是markdown
命令(Debian系统上的apt-get install markdown
),它将Markdown转换为HTML。 例如:
markdown README.md | lynx -stdin
(假设你有基于terminal的lynx
web网页浏览器)。
或者(感谢丹尼的build议),你可以做这样的事情:
markdown README.md > README.html && xdg-open README.html
其中xdg-open
(在某些系统上)在首选应用程序中打开指定的文件或URL。 这可能会在您首选的GUI网页浏览器中打开README.html
(这不完全是“不太风格”,但它可能是有用的)。
我试图写在上面的评论,但我无法正确格式化我的代码块。 要编写一个“lessfilter”,例如,尝试将以下内容保存为~/.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
然后,您可以inputless FILENAME.md
,并将其格式化为一个联机帮助页。
如果你是颜色,那么也许这是值得检查:
terminal_markdown_viewer
它也可以从其他程序或python模块中直接使用。
它有很多风格,比如降价和可以结合的代码超过200。
放弃
-
这是相当的阿尔法可能还有错误
-
我是它的作者,也许有些人喜欢它;-)
一个完全不同的select是疯了 。 这是我刚发现的shell脚本。 安装起来非常简单,而且它在控制台中的降级效果非常好。
我根据Keith的回答写了几个函数:
mdt() { markdown "$*" | lynx -stdin } mdb() { local TMPFILE=$(mktemp) markdown "$*" > $TMPFILE && ( xdg-open $TMPFILE > /dev/null 2>&1 & ) }
如果您使用的是zsh
,只需将这两个函数放在~/.zshrc
,然后像从terminal那样调用它们即可
mdt README.md mdb README.md
“t”是“terminal”,“b”是浏览器。
我个人使用这个脚本:
#!/bin/bash id=$(uuidgen | cut -c -8) markdown $1 > /tmp/md-$id google-chrome --app=file:///tmp/md-$id
它将markdown呈现为HTML,将其放入/tmp/md-...
的文件中,并在没有URI栏的kromek chrome会话中打开。只需将md文件作为parameter passing或将其传递到标准input。 需要减价和谷歌浏览器。 铬也应该工作,但你需要更换最后一行
chromium-browser --app=file:///tmp/md-$id
如果你想得到它的幻想,你可以使用一些CSS来使它看起来不错,我编辑脚本,并使用从CDN Bootstrap3(矫枉过正)。
#!/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 &
使用OSX我更喜欢使用这个命令
brew install pandoc pandoc -s -f markdown -t man README.md | groff -T utf8 -man | less
使用groff转换markupm,格式化文档,然后将pipe转换为less
信用: 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
创build一个别名 -
_mdless() {...};
:创build一个临时函数,然后调用 -
_mdless
:最后,调用它(上面的函数)
在function里面:
-
if [ -n "$1" ] ; then
if [ -n "$1" ] ; then
:如果第一个参数不是null然后… -
if [ -f "$1" ] ; then
if [ -f "$1" ] ; then
:另外,如果文件存在,并且是正常的,那么… -
cat arg1 arg2 | groff
cat arg1 arg2 | groff
…:cat发送这两个连接groff的参数; 参数是:- arg1:
<(echo ".TH $1 7
date –iso-8601Dr.Beco Markdown")
:启动文件的东西,groff
会理解为页眉和页脚的注释。 这将replacepandoc
上的-s
关键字的pandoc
。 - arg2:
<(pandoc -t man $1)
:文件本身,由pandoc
过滤,输出文件$1
的man
风格
- arg1:
-
| groff -K utf8 -t -T utf8 -man 2>/dev/null
| groff -K utf8 -t -T utf8 -man 2>/dev/null
:将生成的连接文件输送到groff
:-
-K utf8
sogroff
理解input文件的代码 -
-t
因此它在文件中正确显示表格 -
-T utf8
所以它输出格式正确 - 因此它使用MACRO包以
man
格式输出文件 -
2>/dev/null
来忽略错误(毕竟,它是一个手工转换的原始文件,我们不关心错误,只要我们可以看到文件在一个不那么难看的格式) 。
-
-
| less
| less
:最后,显示文件用less
分页(我试图通过使用groffer
而不是groff
来避免这个pipe道,但groffer
那么强壮,有些文件挂起或者根本不显示,所以让它通过一个更多的pipe道,到底是什么!
将它添加到~/.bash_aliases
(或类似)
我也会在这里发布我的unix页面的答案 :
恕我直言,严重低估的命令行降价查看器是markdown-cli 。
安装
npm install markdown-cli --global
用法
markdown-cli <file>
特征
可能没有太多注意,因为它没有任何文件
但据我所知,一些例子降价档案,有些事情说服了我:
- 处理格式不好的文件要好得多(类似于atom,github等;例如,在列表之前缺less空行)
- 在标题或列表中使用格式更加稳定(列表中的粗体文本会打破其他一些查看器中的子列表)
- 适当的表格格式
- 语法高亮
- 解决脚注链接显示链接,而不是脚注编号(不是每个人都可能需要这个)
截图
缺点
我已经意识到以下问题
- 代码块变平(所有前导空格消失)
- 列表之前出现两个空行