用于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。

PIC2

放弃

  • 这是相当的阿尔法可能还有错误

  • 我是它的作者,也许有些人喜欢它;-)

一个完全不同的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-8601 Dr.Beco Markdown") :启动文件的东西, groff会理解为页眉和页脚的注释。 这将replacepandoc上的-s关键字的pandoc
    • arg2: <(pandoc -t man $1) :文件本身,由pandoc过滤,输出文件$1man风格
  • | groff -K utf8 -t -T utf8 -man 2>/dev/null | groff -K utf8 -t -T utf8 -man 2>/dev/null :将生成的连接文件输送到groff
    • -K utf8 so groff理解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空行)
  • 在标题或列表中使用格式更加稳定(列表中的粗体文本会打破其他一些查看器中的子列表)
  • 适当的表格格式
  • 语法高亮
  • 解决脚注链接显示链接,而不是脚注编号(不是每个人都可能需要这个)

截图

example.png

缺点

我已经意识到以下问题

  • 代码块变平(所有前导空格消失)
  • 列表之前出现两个空行