less
我在 JavaScript 中有一个 Markdown 字符串,我想在命令行的(或者,我想是more
)样式的查看器中显示它(使用粗体等) 。
例如,使用字符串
"hello\n" +
"_____\n" +
"*world*!"
我想弹出带有可滚动内容的输出,看起来像
你好
世界
这可能吗,如果可以,怎么办?
Pandoc可以将 Markdown 转换为 groff 手册页。
这(感谢 nenoopera 的评论):
pandoc -s -f markdown -t man foo.md | man -l -
应该做的伎俩。该-s
选项告诉它生成正确的页眉和页脚。
那里可能还有其他 markdown-to-*roff 转换器;Pandoc 恰好是我发现的第一个。
另一种选择是markdown
命令(apt-get install markdown
在 Debian 系统上),它将 Markdown 转换为 HTML。例如:
markdown README.md | lynx -stdin
(假设您有lynx
基于终端的网络浏览器)。
或者(感谢 Danny 的建议)您可以执行以下操作:
markdown README.md > README.html && xdg-open README.html
where xdg-open
(在某些系统上)在首选应用程序中打开指定的文件或 URL。这可能会README.html
在您首选的 GUI Web 浏览器中打开(这并不完全是“少风格”,但它可能很有用)。
我试图在上面的评论中写下这个,但我无法正确格式化我的代码块。要编写“更少的过滤器”,请尝试,例如,将以下内容另存为~/.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
,它将像联机帮助页一样格式化。
如果您喜欢颜色,那么也许这也值得检查:
它也可以在其他程序或 python 模块中直接使用。
它有很多样式,比如 200 多种 markdown 和可以组合的代码。
这是相当 alpha 可能还有错误
我是它的作者,也许有些人喜欢它;-)
一个完全不同的选择是疯狂的。这是我刚刚发现的一个 shell 脚本。它非常易于安装,并且可以很好地在控制台中呈现 markdown。
我根据基思的回答写了几个函数:
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”代表浏览器。
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;论据是:
<(echo ".TH $1 7
date --iso-8601 Dr.Beco Markdown")
: 启动文件groff
并将理解为页眉和页脚注释的内容。-s
这将替换key on中的空标题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
,但groffer
不如less
某些文件那么健壮,或者根本不显示。所以,让它再通过一个管道, 有没有搞错!将其添加到您的~/.bash_aliases
(或类似的)
使用 OSX 我更喜欢使用这个命令
brew install pandoc
pandoc -s -f markdown -t man README.md | groff -T utf8 -man | less
转换markupm,用groff格式化文档,pipe成less
信用:http ://blog.metamat.com/blog/2013/01/09/previewing-markdown-files-from-the-terminal/
我个人使用这个脚本:
#!/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(矫枉过正)。
#!/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 页面答案:
恕我直言,一个被严重低估的命令行 markdown 查看器是markdown-cli。
npm install markdown-cli --global
markdown-cli <file>
可能没有注意到太多,因为它错过了任何文档......
但据我可以通过一些示例降价文件弄清楚,一些让我信服的事情:
我已经意识到以下问题