web-dev-qa-db-fra.com

visualiseur de démarques de style inférieur pour les systèmes UNIX

J'ai une chaîne Markdown en JavaScript et j'aimerais l'afficher (avec des caractères gras, etc.) dans un afficheur de style less (ou, je suppose, more) pour la ligne de commande.

Par exemple, avec une chaîne 

"hello\n" + 
"_____\n" + 
"*world*!"

Je voudrais avoir une sortie pop-up avec un contenu défilable qui ressemble à

bonjour

monde

Est-ce possible, et si oui comment?

50
user961528

Pandoc peut convertir Markdown en pages de manuel groff.

Ceci (grâce au commentaire de nenopera):

 pandoc -s -f markdown -t man foo.md | man -l -

devrait faire l'affaire. L'option -s lui indique de générer les en-têtes et les pieds de page appropriés.

Il peut y avoir d'autres convertisseurs markdown-to-roff; Il se trouve que Pandoc est le premier que j'ai trouvé.

Une autre alternative est la commande markdown (apt-get install markdown sur les systèmes Debian), qui convertit Markdown en HTML. Par exemple:

markdown README.md | lynx -stdin

(en supposant que vous ayez le navigateur Web lynx basé sur un terminal).

Ou (grâce à la suggestion de Danny), vous pouvez faire quelque chose comme ceci:

markdown README.md > README.html && xdg-open README.html

xdg-open (sur certains systèmes) ouvre le fichier ou l'URL spécifié dans l'application préférée. Ceci ouvrira probablement README.html dans votre navigateur Web graphique préféré (ce qui n’est pas exactement "moins de style", mais cela pourrait être utile).

68
Keith Thompson

J'ai essayé d'écrire ceci dans un commentaire ci-dessus, mais je ne pouvais pas formater mon bloc de code correctement. Pour écrire un «filtre moins», essayez, par exemple, d’enregistrer ce qui suit sous le nom ~/.lessfilter:

#!/bin/sh

case "$1" in
    *.md)
        extension-handler "$1"
        pandoc -s -f markdown -t man "$1"|groff -T utf8 -man -
        ;;
    *)
        # We don't handle this format.
        exit 1
esac

# No further processing by lesspipe necessary
exit 0

Ensuite, vous pouvez taper less FILENAME.md et il sera formaté comme une page de manuel.

28
Joel Cross

Si vous êtes dans colors, cela vaut peut-être aussi la peine de vérifier:

terminal_markdown_viewer

Il peut également être utilisé directement dans d’autres programmes ou modules Python.

Et il a un lot de styles, comme plus de 200 pour le démarquage et le code qui peut être combiné.

pic2

Avertissement

  • C'est joli alpha il y a peut-être encore des bugs

  • J'en suis l'auteur, peut-être que certaines personnes l'aiment ;-)

8
Red Pill

Une alternative totalement différente est fou . C'est un script Shell que je viens de découvrir. Il est très facile à installer et rend bien le démarquage dans une console.

5
Alban

J'ai écrit quelques fonctions basées sur la réponse de Keith :

mdt() {
    markdown "$*" | lynx -stdin
}

mdb() {
    local TMPFILE=$(mktemp)
    markdown "$*" > $TMPFILE && ( xdg-open $TMPFILE > /dev/null 2>&1 & )
}

Si vous utilisez zsh, placez simplement ces deux fonctions dans ~/.zshrc puis appelez-les depuis votre terminal, comme suit:

mdt README.md
mdb README.md

"t" est pour "terminal", "b" est pour navigateur.

3
mpen

Sous OSX, je préfère utiliser cette commande

brew install pandoc
pandoc -s -f markdown -t man README.md | groff -T utf8 -man | less

Convertissez markupm, formatez le document avec groff et effectuez un pipe en moins

crédit: http://blog.metamatt.com/blog/2013/01/09/previewing-markdown-files-from-the-terminal/

0
lfender6445

Personnellement, j'utilise ce script:

#!/bin/bash
id=$(uuidgen | cut -c -8)
markdown $1 > /tmp/md-$id
google-chrome --app=file:///tmp/md-$id

Il restitue le balisage en HTML, le place dans un fichier dans /tmp/md-... et l'ouvre dans une session chromée de kiosque sans barre d'URI, etc. Nécessite un démarquage et Google Chrome. Le chrome devrait également fonctionner, mais vous devez remplacer la dernière ligne par

chromium-browser --app=file:///tmp/md-$id

Si vous voulez en savoir plus, vous pouvez utiliser des CSS pour le rendre agréable. J'ai édité le script et je lui ai fait utiliser Bootstrap3 (overkill) depuis un CDN.

#!/bin/bash
id=$(uuidgen | cut -c -8)
markdown $1 > /tmp/md-$id
sed -i "1i <html><head><style>body{padding:24px;}</style><link rel=\"stylesheet\" type=\"text/css\" href=\"http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css\"></head><body>" /tmp/md-$id
echo "</body>" >> /tmp/md-$id
google-chrome --app=file:///tmp/md-$id > /dev/null 2>&1 &
0
sammko

Je posterai ma page unix répondra ici aussi:

Un visualiseur de démarque de ligne de commande IMHO fortement sous-estimé est le markdown-cli .

Installation

npm install markdown-cli --global

Usage

markdown-cli <file>

Caractéristiques

Probablement pas remarqué beaucoup, car il manque toute documentation ...
Mais pour autant que je puisse comprendre par quelques exemples de fichiers de démarques, certaines choses qui m'ont convaincu:

  • gère beaucoup mieux les fichiers mal formatés (de la même manière que atome, github, etc.; par exemple, quand il manque des lignes vierges avant les listes)
  • plus stable avec le formatage dans les en-têtes ou les listes (le texte en gras dans les listes rompt les sous-listes dans d'autres visualiseurs)
  • formatage correct des tableaux
  • mise en évidence de la syntaxe
  • résout les liens de note de bas de page pour afficher le lien au lieu du numéro de note de bas de page (tout le monde ne voudra peut-être pas cela)

Capture d'écran

example.png

Désavantages

J'ai réalisé les problèmes suivants

  • les blocs de code sont aplatis (tous les espaces de début disparaissent)
  • deux lignes vides apparaissent avant les listes
0
orzechow

C'est un alias qui encapsule une fonction:

alias mdless='_mdless() { if [ -n "$1" ] ; then if [ -f "$1" ] ; then cat <(echo ".TH $1 7 `date --iso-8601` Dr.Beco Markdown") <(pandoc -t man $1) | groff -K utf8 -t -T utf8 -man 2>/dev/null | less ; fi ; fi ;}; _mdless '

Explication

  • alias mdless='...': crée un alias pour mdless
  • _mdless() {...};: crée une fonction temporaire à appeler par la suite
  • _mdless: à la fin, appelez-le (la fonction ci-dessus)

À l'intérieur de la fonction:

  • if [ -n "$1" ] ; then: si le premier argument n'est pas nul, alors ...
  • if [ -f "$1" ] ; then: aussi, si le fichier existe et est régulier, alors ...
  • cat arg1 arg2 | groff ...: cat envoie ces deux arguments concaténés à groff; les arguments étant:
    • arg1: <(echo ".TH $1 7date --iso-8601Dr.Beco Markdown"): quelque chose qui démarre le fichier et que groff comprendra comme notes d'en-tête et de pied de page. Ceci remplace l'en-tête vide de la clé -s dans pandoc.
    • arg2: <(pandoc -t man $1): le fichier lui-même, filtré par pandoc, générant le style man du fichier $1 
  • | groff -K utf8 -t -T utf8 -man 2>/dev/null: piping le fichier concaténé résultant à groff:
    • -K utf8 donc groff comprend le code du fichier d'entrée
    • -t pour qu'il affiche correctement les tables dans le fichier
    • -T utf8 afin qu'il affiche le bon format
    • -man utilise donc la macroMACROpour afficher le fichier au format man
    • 2>/dev/null pour ignorer les erreurs (après tout, c'est un fichier brut qui est transformé manuellement, nous ne nous en soucions pas tant que nous pouvons voir le fichier dans un format pas trop laid).
  • | less: Enfin, montre le fichier paginant avec less (j'ai essayé d'éviter ce tuyau en utilisant groffer au lieu de groff, mais groffer n'est pas aussi robuste que less et certains fichiers le bloque ou ne le montre pas du tout. ça passe dans une autre pipe, que diable!

Ajoutez-le à votre ~/.bash_aliases (ou similaire)

0
Dr Beco