我希望less
显示*.md
降价文件,其中包含一些格式 - 就像我知道less
可以,对于联机帮助页等。我正在运行Ubuntu 12.04。
我将用户定义的过滤器放入.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
所以,主要问题是:
less
,而不是通过html2txt
*.html
写入文件磁盘并让less
在自己的题外点处理该html(看到html扩展并对其进行处理吗?)答案 0 :(得分:11)
看看Pandoc。它可以将文件从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
脚本必须写入stdout。
答案 1 :(得分:5)
Dogbane的答案很棒,但是如果您使用groff -T utf8 -man
代替man -l
进行格式化,那么粗体,斜体等都会通过。如下所示:https://stackoverflow.com/a/20197316/2674930。
答案 2 :(得分:4)
这对我的MacOSX版本(10.10.5 Yosemite)无效。手册页也没有提到.lessfilter
。这是我做的(阅读MAN页面后 - 感谢这个问题的提示和提示)。
我在lessopen.sh
中创建了脚本lessclose.sh
和~/bin
。它们分别是:
#!/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
en。或者,如果没有,则使用原始文件。 -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
阅读它。