2013-03-19 33 views
7

Chciałbym mieć pliki szacunkowe z niektórymi formatowaniem - jak wiem, less, dla stron podręczników itp. Używam Ubuntu 12.04.Jak skonfigurować "mniej", aby wyświetlać sformatowane pliki obniżki?

jestem miarę oddanie zdefiniowany filtr użytkownika do .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 

Więc główne pytania:

  • Jak mogę przekazać podstawowe informacje o formatowaniu do less jako cóż, zamiast tracić ją z html2txt
  • Czy to jest prawidłowe, aby wydrukować nową zawartość do stdout? Albo może po prostu napisać *.html do pliku na dysku i niech less obsługi tego html na własnej dygresji (widzenie z rozszerzeniem html oraz działając na nim?)

Odpowiedz

7

Spójrz na Pandoc. Może konwertować pliki z formatu przeceny do stron man groff, które można następnie przeglądać w man.

Twój .lessfilter skrypt będzie:

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

Alternatywnie, przekonwertować go do HTML za pomocą komendy markdown a następnie użyć przeglądarki lynx by go zobaczyć, ale to nie działa zbyt dobrze dla mnie.

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

I tak, skrypt lessfilter musi pisać na standardowe wyjście.

+2

faktycznie, "obniżka" 1 $ | Wersja html2text działa najlepiej, ponieważ w ten sposób uzyskuję pogrubioną czcionkę ascii-art. Wariant 'pandoc | man' zasadniczo działa, ale każdy format jest tracony. Chyba, ponieważ ouput przechodzi w potok dla 'less', a to uniemożliwia' man' do jakiegokolwiek formatowania. Wariant "markdown | lynx" nic nie robi, może dlatego, że 'lynx' jest interaktywny? Właśnie pokazuję oryginalny plik. – towi

2

To nie działało w mojej wersji MacOSX (10.10.5 Yosemite). Strona podręcznika również nie wspomina o .lessfilter. Oto co zrobiłem (po przeczytaniu strony MAN - dzięki temu pytaniu o podpowiedź i podpowiedzi).

Utworzono skrypty lessopen.sh i lessclose.sh w moim ~/bin. Odpowiednio są to:

#!/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 

i

#!/bin/sh 
rm $2 

Zwrot z lessopen.sh to nazwa pliku z zawartością do less en. Lub jeśli nic, to używany jest oryginalny plik. -s sprawdza, czy plik NIE ma zerowego rozmiaru. lessclose.sh czyści się.

Następnie w moim ~ /.bash_profile jest:

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

miałem także zainstalować pandoc - groff istniała już

brew install pandoc 

Następnie wystarczy:

less README.md 

czytać to renderowane.