2013-03-19 2 views
7

나는 less 디스플레이 *.md 일부 서식이있는 markdown 파일을 갖고 싶습니다. - less이 맨 페이지 등을 위해 할 수 있음을 알고 있습니다. 우분투 12.04를 실행하고 있습니다.형식이 지정된 마크 다운 파일을 표시하려면 'less'를 구성하는 방법은 무엇입니까?

I 오전까지 .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에서 살펴 보자. 이 파일은 markdown 형식에서 groff 맨 페이지로 변환 할 수 있으며,이 페이지는 man에서 볼 수 있습니다. 그것을 볼 수 lynx 브라우저를 사용하여 다음 markdown 명령을 사용하여 HTML과로 변환, 또는

case "$1" in 
    *.md) 
    pandoc -s -f markdown -t man "$1" | man -l - 
    ;; 

을, 그러나 이것은 나를 위해 너무 잘 작동하지 않았다 :

귀하의 .lessfilter 스크립트는 것입니다.

case "$1" in 
    *.md) 
    markdown "$1" | lynx -stdin 
    ;; 

그리고, 예, lessfilter 스크립트는 표준 출력에 작성해야합니다.

+2

사실,'markdown "$ 1"| html2text' 버전은 ascii-art boldface 등을 얻을 수 있기 때문에 가장 잘 작동합니다. 'pandoc | man'-variant는 기본적으로 작동하지만 모든 형식이 손실됩니다. 내 생각에, 출력이'less' 파이프로 들어가서'man'이 포맷을하지 못하게하기 때문입니다. 'markdown | lynx'-variant는 아무 것도하지 않습니다. 왜냐하면'lynx'는 대화 형이기 때문일까요? 원본 파일이 표시됩니다. – towi

2

도그 반의 대답은 훌륭하지만 형식을 지정하려면 man -l 대신 groff -T utf8 -man을 사용하면 굵은 체, 기울임 체 등이 나타납니다. 여기에 보이는 것처럼 : https://stackoverflow.com/a/20197316/2674930.

2

내 MacOSX 버전 (10.10.5 Yosemite)에서 작동하지 않습니다. 맨 페이지에는 .lessfilter도 언급되어 있지 않습니다. 여기에 내가 한 일이 있습니다 (MAN 페이지를 읽은 후 - 프롬프트와 힌트에 대한이 질문 덕분에).

~/binlessopen.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 엔을 내용으로 파일의 이름입니다. 또는 아무것도없는 경우 원래 파일이 사용됩니다. -s은 파일의 크기가 0이 아닌지 여부를 테스트합니다. lessclose.sh이 정리됩니다.

내 ~ /.bash_profile은 다음과 같습니다

export LESSOPEN="lessopen.sh %s" 
export LESSCLOSE="less-close.sh %s %s" 

나는 또한 pandoc를 설치했다 - groff의 이미 단순히 그런

brew install pandoc 

을 존재 :

less README.md 

가 렌더링 읽을 수 있습니다.

관련 문제