我想有less
显示*.md
markdown文件与一些格式 – 就像我知道less
,对于手册等。我正在运行的Ubuntu 12.04。
我尽可能将用户定义的filter放入.lessfilter
:
#!/bin/sh case "$1" in *.md) fn=/tmp/$1.$$.html markdown "$1" | html2txt > $fn ### LOSES FORMATTING cat $fn ### TO STDOUT??? ;; *) # We don't handle this format exit 1 esac # No further processing by lesspipe necessary exit 0
所以,主要的问题是:
html2txt
丢失 *.html
文件写入文件磁盘,让它less
处理它的html(看到html扩展名并对其执行操作)? 看看潘多克 。 它可以将文件从markdown格式转换为groff手册页,然后在man
查看。
您的.lessfilter
脚本将是:
case "$1" in *.md) pandoc -s -f markdown -t man "$1" | man -l - ;;
另外,使用markdown
命令将其转换为html,然后使用lynx
浏览器来查看它,但是这对我来说并不是很好。
case "$1" in *.md) markdown "$1" | lynx -stdin ;;
而且,是的, lessfilter
脚本必须写入标准输出。
Dogbane的答案很好,但是如果你使用groff -T utf8 -man
而不是man -l
来进行格式化,那么粗体,斜体等等都会通过。 如在这里看到的: https : //stackoverflow.com/a/20197316/2674930 。
这不适用于我的MacOSX版本(10.10.5优胜美地)。 手册页也没有提到.lessfilter
。 这是我做了什么(在阅读MAN页面 – 感谢这个问题的提示和提示)。
我在~/bin
创建了脚本lessopen.sh
和lessclose.sh
。 他们分别是:
#!/bin/bash case "$1" in *.md) pandoc -s -f markdown -t man "$1" | groff -T utf8 -man > /tmp/less.$$ if [ -s /tmp/less.$$ ]; then echo /tmp/less.$$ else rm -f /tmp/less.$$ fi ;; esac
和
#!/bin/sh rm $2
从lessopen.sh
返回的是文件的名称,其内容为less
。 或者如果没有,那么使用原始文件。 -s
测试文件是不是零大小。 lessclose.sh
清理。
那么在我的〜/ .bash_profile中是:
export LESSOPEN="lessopen.sh %s" export LESSCLOSE="less-close.sh %s %s"
我也必须安装pandoc – groff已经存在了
brew install pandoc
然后简单地:
less README.md
阅读它呈现。