15

私が知っているように、マンページなどのために、いくつかのフォーマットでマークダウンファイルをless表示したいと思います.Ubuntu 12.04を実行しています。*.mdless

私は、ユーザー定義のフィルターをに入れる限りです.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 拡張子を見て、それに基づいて操作しますか?)
4

3 に答える 3

14

パンドックを見てください。ファイルをマークダウン形式から groff の man ページに変換し、それを で表示できます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 に書き込む必要があります。

于 2013-03-19T10:59:52.383 に答える
6

これは、私のバージョンの MacOSX (10.10.5 Yosemite) では機能しませんでした。man ページにはいずれも言及されていません.lessfilter。これが私がしたことです(MANページを読んだ後-プロンプトとヒントについてのこの質問のおかげです)。

スクリプトを作成lessopen.shlessclose.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

からの戻り値は、内容がenlessopen.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

レンダリングされたものを読む。

于 2016-07-21T02:52:02.960 に答える
6

Dogbane の答えは素晴らしいですが、書式設定を行うgroff -T utf8 -man代わりに使用するman -lと、太字、斜体などが表示されます。ここに見られるように: https://stackoverflow.com/a/20197316/2674930

于 2014-01-17T19:05:03.193 に答える