用于 UNIX 系统的较少样式的降价查看器

Posted

技术标签:

【中文标题】用于 UNIX 系统的较少样式的降价查看器【英文标题】:less-style markdown viewer for UNIX systems 【发布时间】:2011-11-27 19:19:48 【问题描述】:

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

例如,用一个字符串

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

我想让输出弹出看起来像这样的可滚动内容

你好

世界

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

【问题讨论】:

你真的想要粗体和斜体吗?你怎么能在less 中得到它?祝你好运。 less当然可以显示粗体和下划线;查看手册页的显示方式。您只需要将 markdown 转换为 less 可以处理的内容,也许将 nroff 作为中间步骤。 类似的问题:unix.stackexchange.com/q/4140/4667 【参考方案1】:

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(这并不完全是“较少样式”,但它可能很有用)。

【讨论】:

真的很棒,而且不仅仅是为了降价。但如果你不想搞砸,这是 some-pandoc-command:pandoc -s -f markdown -t man 。真正重要的 -s 添加人的标题(或者它不会工作)更好地使用 pandoc-command | man -l -(更好的页面宽度) 适用于我在 Linux 上,但 Mac OS X(可能还有其他 BSD)中的 man 版本不支持本地文件模式 (man -l )。这是 Mac OS X 最接近的方法: pandoc -s -f markdown -t man foo.md | groff -T utf8 -man |少 +1 用于 metamatt 的评论 - 这也可用于编写更少的过滤器。例如,尝试将以下内容另存为 .lessfilter
 #!/bin/sh case "$1" in *.md) extension-handler "$1" pandoc -s -f markdown -t man "$1" |groff -T utf8 -man - ;; *) # 我们不处理这种格式。 exit 1 esac # 不需要 lesspipe 进一步处理 exit 0 
然后,您可以输入less FILENAME.md,它将被格式化为手册页。
如果您的浏览器可以响应open 命令:markdown README.md > ~/readme.html && open ~/readme.html 多亏了这个答案,我的.bashrc 现在有了function md () markdown $1 | lynx --stdin; 。所需的依赖项占用空间很小,这在受约束的盒子上很好。您可以检查您的机器上是否已经存在w3mlinks【参考方案2】:

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

【讨论】:

别忘了chmod +x.lessfilter。另外,可能需要less -R 这是一个很好的答案。不仅解决了原来的问题,还为我的花招增加了一项新技能!使用更少的过滤器! 我必须将 -K utf8 切换到 groff (***.com/a/24969648/1581629),否则我的列表会显示诸如“ââââ”之类的内容【参考方案3】:

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

【讨论】:

【参考方案4】:

我个人使用这个脚本:

#!/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 文件作为参数传递或通过管道将其传递到标准输入。需要降价和谷歌浏览器。 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>bodypadding: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 &

【讨论】:

我建议用mktemp 替换uuid hack,这实际上是安全且最佳的做法;它还会给你一个完整的路径名,之后你可以rm【参考方案5】:

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

terminal_markdown_viewer

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

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

免责声明

这是一个相当不错的 alpha 版本,可能仍有错误

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

【讨论】:

【参考方案6】:

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

【讨论】:

【参考方案7】:

使用 OSX 我更喜欢使用这个命令

brew install pandoc
pandoc -s -f markdown -t man README.md | groff -T utf8 -man | less

转换markupm,用groff格式化文档,用管道转less

信用:http://blog.metamatt.com/blog/2013/01/09/previewing-markdown-files-from-the-terminal/

【讨论】:

【参考方案8】:

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

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: &lt;(echo ".TH $1 7date --iso-8601Dr.Beco Markdown") : 启动文件的内容,groff 将理解为页眉和页脚注释。这将替换pandoc 上的-s 键中的空标题。 arg2: &lt;(pandoc -t man $1) : 文件本身,被pandoc过滤,输出man风格的文件$1 | groff -K utf8 -t -T utf8 -man 2&gt;/dev/null:将生成的连接文件通过管道传输到 groff-K utf8 所以groff 理解输入文件代码 -t 所以它在文件中正确显示表格 -T utf8 所以它以正确的格式输出 -man 所以它使用 MACRO 包以man 格式输出文件 2&gt;/dev/null 忽略错误(毕竟,它是手动转换的原始文件,只要我们能以不那么难看的格式看到文件,我们就不会关心错误)。李> | less :最后,显示用less 对其进行分页的文件(我试图通过使用groffer 而不是groff 来避免这个管道,但是groffer 不如less 和一些文件那么健壮要么挂掉,要么根本不显示。所以,让它再通过一个管道,见鬼!

将其添加到您的 ~/.bash_aliases(或类似名称)

【讨论】:

【参考方案9】:

我也会在这里发my unix page answer:

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

安装

npm install markdown-cli --global

用法

markdown-cli <file>

特点

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

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

截图

缺点

我已经意识到以下问题

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

【讨论】:

以上是关于用于 UNIX 系统的较少样式的降价查看器的主要内容,如果未能解决你的问题,请参考以下文章

Autodesk Forge 查看器标记样式对象

mq 可以查看发送队列深度么深度么?

Linux/Unix下的任务管理器-top命令

怎么查看电脑重启记录

VS Code 是不是有用于 C++ 扩展的内存查看器和/或反汇编器?

用于可滚动窗格的纯 Java HTML 查看器/渲染器 [关闭]