53

less我在 JavaScript 中有一个 Markdown 字符串,我想在命令行的(或者,我想是more)样式的查看器中显示它(使用粗体等) 。

例如,使用字符串

"hello\n" + 
"_____\n" + 
"*world*!"

我想弹出带有可滚动内容的输出,看起来像

你好

世界

这可能吗,如果可以,怎么办?

4

9 回答 9

68

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 浏览器中打开(这并不完全是“少风格”,但它可能很有用)。

于 2011-09-29T21:40:05.977 回答
31

我试图在上面的评论中写下这个,但我无法正确格式化我的代码块。要编写“更少的过滤器”,请尝试,例如,将以下内容另存为~/.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,它将像联机帮助页一样格式化。

于 2013-11-25T15:52:10.907 回答
8

如果您喜欢颜色,那么也许这也值得检查:

terminal_markdown_viewer

它也可以在其他程序或 python 模块中直接使用。

它有很多样式,比如 200 多种 markdown 和可以组合的代码。

图2

免责声明

  • 这是相当 alpha 可能还有错误

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

于 2015-07-12T14:19:21.443 回答
5

一个完全不同的选择是疯狂的。这是我刚刚发现的一个 shell 脚本。它非常易于安装,并且可以很好地在控制台中呈现 markdown。

于 2013-12-06T21:35:53.060 回答
3

我根据基思的回答写了几个函数:

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”代表浏览器。

于 2015-09-25T20:45:51.287 回答
1

这是一个封装函数的别名:

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 7date --iso-8601 Dr.Beco Markdown"): 启动文件groff并将理解为页眉和页脚注释的内容。-s这将替换key on中的空标题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(或类似的)

于 2016-08-17T05:06:06.357 回答
1

使用 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/

于 2016-04-01T21:10:22.527 回答
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(矫枉过正)。

#!/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 &
于 2014-08-05T11:35:21.063 回答
0

我也会在这里发布我的 unix 页面答案

恕我直言,一个被严重低估的命令行 markdown 查看器是markdown-cli

安装

npm install markdown-cli --global

用法

markdown-cli <file>

特征

可能没有注意到太多,因为它错过了任何文档......
但据我可以通过一些示例降价文件弄清楚,一些让我信服的事情:

  • 更好地处理格式错误的文件(类似于 atom、github 等;例如,当列表之前缺少空行时)
  • 标题或列表中的格式更稳定(列表中的粗体文本会破坏其他查看器中的子列表)
  • 正确的表格格式
  • 语法高亮
  • 解析脚注链接以显示链接而不是脚注编号(不是每个人都可能想要这个)

截屏

例子.png

缺点

我已经意识到以下问题

  • 代码块被展平(所有前导空格消失)
  • 列表前出现两个空行
于 2017-05-11T17:13:47.220 回答