2013-03-19 104 views
7

我想有一些格式less显示*.md降价的文件 - 就像我知道less可以,联机手册等我运行Ubuntu 12.04。如何配置'less'以显示格式化的降价文件?

我尽可能把定义的过滤器一个用户到.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
  • 失去它是不是正确的,只是打印新的内容stdout?或者我能不能写*.html到文件的磁盘,并让less处理在自己的题外话是HTML(看到HTML扩展和作用吗?)

回答

7

Pandoc看看。它可以从降价格式文件转换为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脚本必须写入标准输出。

+2

实际上,'markdown'$ 1“| html2text'版本效果最好,因为我得到了ascii-art boldface等。 'pandoc | man'变体基本上可以工作,但是每种格式都会丢失。我想,因为输出进入'少'的管道,并且阻止了'人'进行任何格式化。 'markdown | lynx'变体不会做任何事情,也许是因为'lynx'是交互式的?我只是显示原始文件。 – towi 2013-03-19 12:48:37

2

这并没有对我的版本的MacOSX(10.10.5优胜美地)的工作。手册页也没有提及.lessfilter。这是我做的(在阅读MAN页面之后 - 感谢这个问题的提示和提示)。

我在我的~/bin中创建了脚本lessopen.shlessclose.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 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 

读它呈现。