我在JavaScript中有一个Markdown字符串,我想在less
(或者,我想,more
)样式的查看器中显示它(带有粗体等)线。
例如,使用字符串
"hello\n" +
"_____\n" +
"*world*!"
我希望弹出一个带有可滚动内容的输出,看起来像
你好
世界
这是可能的,如果是这样的话?
答案 0 :(得分:68)
Pandoc可以将Markdown转换为groff手册页。
这(感谢nenopera的评论):
pandoc -s -f markdown -t man foo.md | man -l -
应该做的伎俩。 -s
选项告诉它生成正确的页眉和页脚。
那里可能还有其他markdown-to-roff转换器; Pandoc恰好是我找到的第一个。
另一种选择是markdown
命令(Debian系统上的apt-get install markdown
),它将Markdown转换为HTML。例如:
markdown README.md | lynx -stdin
(假设你有基于lynx
终端的网络浏览器。)
或者(感谢Danny的建议)你可以这样做:
markdown README.md > README.html && xdg-open README.html
其中xdg-open
(在某些系统上)在首选应用程序中打开指定的文件或URL。这可能会在您首选的GUI Web浏览器中打开README.html
(这不是“风格不太好”,但它可能很有用)。
答案 1 :(得分:30)
我试着在上面的评论中写这个,但我无法正确格式化我的代码块。要编写“较少过滤器”,请尝试将以下内容另存为~/.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
,其格式将类似于联机帮助页。
答案 2 :(得分:8)
如果您进入颜色,那么这也值得检查:
它也可以直接在其他程序或python模块中使用。
它有一个很多的样式,比如200以上的降价和可以组合的代码。
这可能还有错误
我是它的作者,也许有些人喜欢它; - )
答案 3 :(得分:5)
完全不同的替代方案是mad。这是我刚刚发现的shell脚本。它非常容易安装,并且可以很好地在控制台中显示降价。
答案 4 :(得分:3)
我根据Keith's answer写了几个函数:
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”表示浏览器。
答案 5 :(得分:0)
我个人使用这个脚本:
#!/bin/bash
id=$(uuidgen | cut -c -8)
markdown $1 > /tmp/md-$id
google-chrome --app=file:///tmp/md-$id
它将markdown呈现为HTML,将其放入/tmp/md-...
的文件中并在没有URI栏的kiosk chrome会话中打开它。您只需将md文件作为参数传递或将其传递给stdin 。需要降价和谷歌浏览器。 Chromium也可以使用,但你需要用
chromium-browser --app=file:///tmp/md-$id
如果您想了解它,可以使用一些css使其看起来不错,我编辑了脚本并使其从CDN使用Bootstrap3(overkill)。
#!/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 &
答案 6 :(得分:0)
使用OSX我更喜欢使用此命令
gf.get
转换markupm,使用groff格式化文档,并将管道转换为更少的
信用:http://blog.metamatt.com/blog/2013/01/09/previewing-markdown-files-from-the-terminal/
答案 7 :(得分:0)
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
:如果第一个参数不为null,那么...... if [ -f "$1" ] ; then
:此外,如果文件存在并且是常规的那么...... cat arg1 arg2 | groff
...:cat发送这两个连接到groff的参数;争论是:
<(echo ".TH $1 7
日期--iso-8601 Dr.Beco Markdown")
:启动文件的内容和groff
将理解为页眉和页脚注释。这会替换-s
上的pandoc
键中的空标题。<(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
来避免此管道,但是{ {1}}不像groffer
那样健壮,有些文件会挂起或根本不显示。所以,让它再经过一个管道,真是太棒了!将其添加到less
(或类似)
答案 8 :(得分:0)
我也会在这里发布my unix page answer:
IMHO严重低估了命令行降价标记查看器是markdown-cli。
npm install markdown-cli --global
markdown-cli <file>
可能没有注意到太多,因为它错过了任何文件......
但据我可以通过一些示例降价文件来解决,有些事情让我信服:
我已经意识到以下问题